要使用Keras训练模型,我应该将所有必须加载的图像加载到数组中以创建类似
x_train, y_train
或者有更好的方法在训练时即时读取图像。我不在寻找ImageDataGenerator类,因为我的输出是点数组,而不是基于目录名称的类。
答案 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中找到有关此方法的更多信息。