Mar*_*ldt 6 python image deep-learning keras image-preprocessing
我正在使用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")
Run Code Online (Sandbox Code Playgroud)
对于问题1):我指定rotation_range = 90,这意味着当您流动(检索)数据时,生成器将随机旋转图像0到90度之间的度数。您无法指定精确的角度,因为这就是 ImageDataGenerator 的作用:随机生成旋转。关于你的第二个问题也很重要。
对于问题2):是的,它仍然适用于数据增强方法。一开始我也很困惑。原因是,由于图像是随机生成的,对于每个时期,网络看到的图像都与前一个时期的图像不同。这就是数据被“增强”的原因——增强不是在一个时期内完成的,而是在整个训练过程中完成的。然而,我看到其他人指定了原始steps_per_epoch的2x值。
希望这可以帮助
归档时间: |
|
查看次数: |
630 次 |
最近记录: |