我们知道深度学习模型训练时通常都需要大量的训练集,我们在做图像相关的应用时同样需要进行图像数据增加,下面我将给大家总结10种图像数据增强常用的方式,并给出keras的实现方法。

一. 水平翻转

随机的对图片进行水平翻转,这个参数适用于水平翻转不影响图片语义的时候

二. 竖直翻转

随机的对图片进行竖直翻转,这个参数适用于竖直翻转不影响图片语义的时候

三. 随机旋转角度

设置一个0~180的度数,用来指定随机旋转图片的角度

image.png

四. 随机水平平移

用来指定水平方向随机移动的程度

五. 随机竖直平移

用来指定竖直方向随机移动的程度

六. 随机错切变换

在某方向上,按照一定的比例对图形的每个点到某条平行于该方向的直线的有向距离做放缩得到的平面图形

七. 随机放大

进行随机的放大

八. 颜色抖动

改变图片的颜色,通过对颜色通道的数值偏移,改变图片的整体的颜色

九. rescale

rescale的作用是对图片的每个像素值均乘上这个放缩因子,这个操作在所有其它变换操作之前执行,在一些模型当中,直接输入原图的像素值可能会落入激活函数的饱和区,因此设置放缩因子为1/255,把像素值放缩到0和1之间有利于模型的收敛,避免神经元饱和。图片经过rescale之后,保存到本地的图片用肉眼看是没有任何区别的

十. fill_mode

fill_mode为填充模式,如前面提到,当对图片进行平移、放缩、错切等操作时,图片中会出现一些缺失的地方,就由fill_mode中的参数确定。包括:“constant”、“nearest”(默认)、“reflect”和“wrap”。

  • 'constant': kkkkkkkk|abcd|kkkkkkkk (cval=k)

  • 'nearest': aaaaaaaa|abcd|dddddddd

  • 'reflect': abcddcba|abcd|dcbaabcd

  • 'wrap': abcdabcd|abcd|abcdabcd

通常来说我们不会只使用单一的数据增加方法,而是会多种方式结合使用,比如使用多种数据增加的方法后得到的结果如下图:

项目打包

百度网盘:
https://pan.baidu.com/s/1U9YwXCTRF0oBxENfh_JsWQ