从熊猫数据帧在Keras中加载一批图像

我有一个带有两列的pandas数据框,其中一列具有图像的路径,另一列具有字符串类标签。


我还编写了以下函数,这些函数从数据帧加载图像,对其进行规范化并将类标签转换为一键矢量。


def prepare_data(df):

    data_X, data_y = df.values[:,0], df.values[:,1]


    # Load images

    data_X = np.array([np.array(imread(fname)) for fname in data_X])


    # Normalize input

    data_X = data_X / 255 - 0.5


    # Prepare labels

    data_y = np.array([label2int[label] for label in data_y])

    data_y = to_categorical(data_y)


    return data_X, data_y

我想将此数据帧提供给Keras CNN,但整个数据集太大而无法立即加载到内存中。


这个站点上的其他答案告诉我,为此,我应该使用Keras ImageDataGenerator,但是老实说,我不理解如何从文档中做到这一点。


将延迟加载的批次中的数据馈送到模型的最简单方法是什么?


如果它是ImageDataGenerator,如何创建一个ImageDataGenerator来对Dataframe进行初始化,并将批处理通过我的函数传递,以创建适当的numpy数组?以及如何使用ImageDataGenerator拟合模型?


牛魔王的故事
浏览 111回答 2
2回答

缥缈止盈

我是Keras的新手,所以请服食我的盐。我认为您应该使用Keras ImageDataGenerator,尤其是该flow_from_dataframe选项,因为您说您拥有Pandas数据框。Flow_from_dataframe读取数据框的cols以获取文件名和标签。以下是一个示例片段。在网上查找教程。train_datagen = ImageDataGenerator(horizontal_flip=True,                                   vertical_flip=False,                                   rescale=1/255.0)train_generator = train_datagen.flow_from_dataframe(         dataframe=trainDataframe,      directory=imageDir,    x_col="file", # name of col in data frame that contains file names    y_col=y_col_list, # name of col with labels    has_ext=True,     batch_size=batch_size,    shuffle=True,    save_to_dir=saveDir,    target_size=(img_width,img_height),    color_mode='grayscale',    class_mode='categorical', # for classification task    interpolation='bilinear')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python