数据增强

作者:十岁的小男孩

吴恩达视频来源:http://mooc.study.163.com/learn/2001281004?tid=2001392030#/learn/content?type=detail&id=2001728694&cid=2001724519

数据增强

  数据增强主要是为了减少网络的过拟合现象,通过对训练图片进行变换可以得到泛化能力更强的网络,更好的适应应用场景。

方法:

  • 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;
  • 翻转变换(flip): 沿着水平或者垂直方向翻转图像;
  • 缩放变换(zoom): 按照一定的比例放大或者缩小图像;
  • 平移变换(shift): 在图像平面上对图像以一定方式进行平移;
  • 可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置;
  • 尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;
  • 对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变. 对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;
  • 噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;
  • 颜色变化:在图像通道上添加随机扰动。
  • 输入图像随机选择一块区域涂黑,参考《Random Erasing Data Augmentation》

    《Random Erasing Data Augmentation》 https://arxiv.org/pdf/1511.05635.pdf

    在Keras中已经方便的实现了数据扩增,如果尝试效果可以直接使用keras,如果在caffe中使用,可以线下生成数据或者修改Image_data层进行数据扩增。

    数据扩增收集到的代码: 
    https://github.com/kevinlin311tw/caffe-augmentation 
    https://github.com/codebox/image_augmentor

    Keras中数据扩增

    # 数据扩增
    train_datagen = ImageDataGenerator(
            rescale=1./255,
            shear_range=0.1,
            zoom_range=0.1,
            rotation_range=10.,
            width_shift_range=0.1,
            height_shift_range=0.1,
            horizontal_flip=True)

Example 看吴恩达视频学习笔记:  

1.物理变化:通过镜像,随机裁剪,或者旋转等等获得更多的具有标签的数据

  2.通过色彩变化:R G B

参考文献:

 https://blog.csdn.net/Iriving_shu/article/details/78762567

原文地址:https://www.cnblogs.com/missidiot/p/9454752.html