我正在使用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值。
希望这有帮助