在Keras中使用“ ImageDataGenerator”并在训练模型时直接传递此图像时,是否会修改图像以扩大数据集?

时间:2019-01-10 23:15:31

标签: machine-learning keras deep-learning

因此,我正在构建图像分类器,并使用具有以下参数的Keras的ImageDataGenerator类:

ImageDataGenerator(
rescale=1./255, rotation_range=40, width_shift_range=0.2,
height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, 
horizontal_flip=True, fill_mode='nearest'
)

然后我将生成器的这个实例用于我的训练数据,并使用以下代码:

train_datagen.flow_from_dataframe(
dataframe=binary_df, directory='../train', x_col='Image', y_col='Label',
target_size=(target_size[0],target_size[1]),
batch_size=batch_size, class_mode='categorical',interpolation='nearest'
)

然后,最后将此生成器直接传递给Keras中的'fit_generator'函数,以按如下方式训练我的模型:

binary_model.fit_generator(
binary_train_generator, epochs=100, shuffle=True)

我的问题是,生成器是否会在创建生成器时(水平翻转,旋转等)自动按照指定的方式扩充数据,并在训练模型时将其传递,还是我需要使用生成器来创建新数据?首先,然后将其传递给我的“ fit_generator”函数?

谢谢!

1 个答案:

答案 0 :(得分:0)

请参见ImageDataGenerator documentation,尤其是您正在使用的功能 flow_from_dataframe

引用文档:

  

采用目录路径并生成大量扩充数据。

因此它将为您生成模型的扩充数据。

顺便说一句::创建生成器时不对数据进行扩充,而在馈入模型时逐批进行数据扩充。

编辑:引用文档的图像(训练数据点)数量保持不变:

  

horizo​​ntal_flip:布尔值。水平随机翻转输入。

您的某些输入是随机翻转的,这不像是馈送了两个单独的图像(一个是翻转的图像,另一个是原始而非增强版本的图像)。