使用Keras作前端写网络时,由于训练图像尺寸较大,需要做类似 tf.random_crop 图像裁剪操作。
为此研究了一番Keras下已封装的API。
Data Augmentation(数据扩充)
Data Aumentation 指使用下面或其他方法增加输入数据量。我们默认图像数据。
-
旋转&反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;
-
翻转变换(flip): 沿着水平或者垂直方向翻转图像;
-
缩放变换(zoom): 按照一定的比例放大或者缩小图像;
-
平移变换(shift): 在图像平面上对图像以一定方式进行平移;
可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置; -
尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;
-
对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变. 对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;
-
噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;
Data Aumentation 有很多好处,比如数据量较少时,用数据扩充来增加训练数据,防止过拟合。
ImageDataGenerator
在Keras中,I