使用Keras加载训练图像

时间:2019-07-21 11:51:14

标签: keras

要使用Keras训练模型,我应该将所有必须加载的图像加载到数组中以创建类似

x_train, y_train

或者有更好的方法在训练时即时读取图像。我不在寻找ImageDataGenerator类,因为我的输出是点数组,而不是基于目录名称的类。

2 个答案:

答案 0 :(得分:0)

将整个数据集加载到数组的内存中并不是一个好主意,因为内存消耗可能会失控,因此您应该使用生成器。 ImageDataGenerator和flow_from_dataframe是在Keras中加载图像的好方法。由于您不想使用ImageDataGenerator(您能提到为什么吗?),因此您可以创建自己的生成器函数,以将大量图像加载到内存中。如果将数据加载到生成器中,请确保使用fit_generator和predict_generator函数。

要加载未标记的数据,您可以执行以下操作:

datagen = ImageDataGenerator()
test_data = datagen.flow_from_directory('.', classes=['directory_where_images_are_stored'])

有关更多信息,请查看链接[1]。

[1] https://kylewbanks.com/blog/loading-unlabeled-images-with-imagedatagenerator-flowfromdirectory-keras

答案 1 :(得分:0)

您可以将此数据与ImageDataGenerator一起使用。您错误地认为它需要用于类的文件夹,但这仅适用于flow_from_directory。使用方法flow_from_dataframe,您可以从Pandas数据框中加载数据,例如:

idg = ImageDataGenerator(...)
df = pd.load_csv('your_data.csv')
generator = idf.flow_from_dataframe(directory='image folder', x_col = 'filename_column',
                                    y_col = ['col1', 'col2', ..., 'coln'],
                                    class_mode='other')

此生成器将根据数据帧中的数据,按照directory的值将图像文件名加载到x_col中,并使用相应的行来建立目标,在这种情况下将是y_col中列值的numpy数组。可以在keras documentation中找到有关此方法的更多信息。