Keras图像数据增强

4

我发现很难理解 ImageDataGeneratorflow_from_directory 如何工作,我正在使用以下代码增强图像数据以用于我的 CNN 模型,因为可用的训练图像数量非常少。

batch_size = 16
from keras.preprocessing.image import ImageDataGenerator
train_transformed = 'dataset/train_transformed'
train_datagen = ImageDataGenerator(
    rescale=1./255,
    horizontal_flip=True,
    fill_mode='nearest')

train_generator = train_datagen.flow_from_directory(
    'dataset/train',
    target_size=(150, 150),
    batch_size=batch_size,
    class_mode='binary',
    save_to_dir=train_transformed,
    save_prefix='train_aug',
    save_format='png')

这是一个二分分类问题,涉及20张正面和20张负面图片。因此我有一个包含两个子文件夹的dataset/train文件夹,每个子文件夹中都有20张图像。使用上述图像生成器训练模型后,可以看到4160张图像被保存在dataset/train_transformed文件夹中,并且假设使用4160张图像进行模型训练。
model.fit_generator(
    train_generator,
    steps_per_epoch=1000 // batch_size,
    epochs=5,
    validation_data=validation_generator,
    validation_steps=100 // batch_size)

根据我的理解,每个epoch中的样本数=批量大小X每个epoch的步数。 由于我的steps_per_epoch= 1000/16 = 62,所以每个epoch中的样本数应为62 x 16 = 992。 设置了5个epochs,因此总生成的图像数量应为992 x 5 = 4960。 生成的图像数量是随机的,但使用相同的超参数。 只需要对上述配置进行解释。
1个回答

2
你的计算看起来是正确的。同时请注意flow_from_directory有一个shuffle参数(默认为真)。这意味着生成器在每个epoch期间将产生992个图像(batch_size乘以steps_per_epoch),但它们出现的顺序在每个epoch中将不同。"最初的回答"

即使每个时代中它们出现的顺序不同,最终用于训练的总图像应该是4960张,但情况并非如此。 - Mahantesh M Ambi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接