Keras 图像增强:如何在训练期间选择"steps per epoch"参数并包含特定的增强?



我正在使用KERAS训练图像分类CNN。使用ImageDataGenerator函数,我将一些随机转换应用于训练图像(例如旋转,剪切,缩放)。我的理解是,在传递给模型之前,将这些转换随机应用于每个图像。

但是有些事情对我来说尚不清楚:

1)如何确保在训练时包括图像的特定旋转(例如90°,180°,270°)。

2)steps_per_epoch model.fit_generator的参数应设置为数据集的唯一样本数除以flow_from_directory方法中的批量大小定义。使用上述图像增强方法时,这仍然适用,因为它们增加了训练图像的数量?

谢谢马里奥

前一次,我提出了同样的问题,我认为可能的解释在这里:

考虑此示例:

    aug = ImageDataGenerator(rotation_range=90, width_shift_range=0.1, 
                             height_shift_range=0.1, shear_range=0.2, 
                             zoom_range=0.2, horizontal_flip=True, 
                             fill_mode="nearest")

对于问题1):我指定一个rotation_range = 90,这意味着当您流动(检索)数据时,生成器将随机将图像乘坐0度和90度之间。您无法指定一个确切的角度原因,这是Imagedatagenerator所做的:随机生成旋转。关于您的第二个问题,这也非常重要。

对于问题2):是的,它仍然适用于数据增强方法。一开始我也很困惑。原因是,由于图像是生成随机的,因此,对于每个时期,网络都会看到与上一个时期中的图像不同。这就是为什么"增强"数据的原因 - 增强不是在时期内完成的,而是在整个培训过程中进行的。但是,我已经看到其他人指定了原始步骤的2x值。

希望这有帮助

最新更新