繁体   English   中英

Keras图像增强:如何选择“每个时期的步数”参数并在训练过程中包括特定的增强?

[英]Keras image augmentation: How to choose “steps per epoch” parameter and include specific augmentations during training?

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

但是有些事情我不清楚:

1)在训练过程中,如何确定图像的所有特定旋转角度(例如90°,180°,270°)都包括在内。

2)应该将model.fit_generatorsteps_per_epoch参数设置为数据集的唯一样本数除以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):是的,它仍然适用于数据扩充方法。 一开始我也很困惑。 原因是由于图像是随机生成的,因此对于每个时期,网络看到的图像都与前一个时期不同。 这就是为什么数据被“扩充”的原因-扩充不是在一个时代内完成的,而是在整个训练过程中完成的。 但是,我看到其他人指定了原始steps_per_epoch的2x值。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM