• 一些图像数据数据扩充(扩样本)方法


    避免过拟合的基本方法之一是从数据源获得更多数据,当训练数据有限时,可以通过数据增强(data augmentation)变换原有的数据生成新的数据来扩大训练集。即使拥有大量数据,进行数据增强也是有必要的,因为可以防止神经网络学习到不相干的模式,从根本上提升整体性能。还要注意在使用增强技术的同时,必须确保不增加无关(无意义)的数据。

    数据增强的主要方法有:

    第一种:图像处理型(利用一定手段生成样本空间没有的样本)

    翻转flip

            将图片水平或垂直翻转。
    旋转rotate

           旋转后图像维度可能不会被保留,如果是正方形图像,旋转90度后图像的尺寸会被保存;

            如果图像是长方形,旋转180度后图像的尺寸也会被保存;

            但用更小的角度旋转图像将会改变最终图像的尺寸。

    缩放re-scale

            图像可以被放大或缩小,放大时大多数图像处理框架会按原始尺寸对放大后的图像进行裁剪;缩小时由于图像尺寸比原来的尺寸小,不得不对图像边界之外的内容做出假设。先考虑放大的情况:

    裁剪crop

            随机从原始图像中采样一部分,然后将这部分图像调整为原始图像大小。注意裁剪和缩放的区别。

    平移pad

            将图像沿X或Y轴或同时沿2个方向移动,这一数据增强方法非常有用,因为大多数对象有可能分布在图像的任意位置,这迫使CNN网络需要看到所有的地方。

    插值interpolation

            当旋转、平移或者缩小一个没有纯色背景的图片,且又需要保持原始图片的大小时,需要对边界之外没有任何信息的区域做出假设。最简单的假设是令边界外的部分每一个像素点的值都是常数0(RGB值=0为黑色),这样在对图像进行变换后,在图像没有覆盖的地方会得到一块黑色的区域。

            大多数情况下最简单假设的效果不好,可以采用以下方式填充未知的空间:

            常数填充、边缘填充、反射填充、对称填充、包裹模式填充

            (1)常量填充:适用于在单色背景下拍摄的图像;

            (2)边缘扩展:用图像边缘的值填充边界以外,适用于轻微平移的图像;

            (3)反射:图像像素值沿图像边界进行反射,适用于包含连续或自然背景的图像;

            (4)对称:类似反射,除了在反射边界上进行边缘像素copy。通常反射和对称可以交替使用,但在处理非常小的图像时,差异将是可见的;

            (5)包裹:在边界以外重复填充图像,相当于平铺图像,这种方法不像其他方法那样普遍被使用,因为它对很多场景都没有意义。

            还可以自定义方法处理未知区域(如近大远小等),但通常以上方法对大多数分类问题都有很好的效果。

    高斯噪声Gaussian noise

            过拟合经常会发生在神经网络试图学习高频特征(即频繁出现的无意义的模式)时,而学习这些高频特征对模型提升并没有什么帮助。采用具有零均值特性的高斯噪声,在所有频率上都能产生数据点,可以有效的使高频特征失真,减弱其对模型的影响。但这也意味着低频成分(通常是关心的特征)同时会受到影响,由于能够通过学习来忽略影响,添加适量的噪声能够有效提升神经网络的学习能力。

            一个弱化的版本是椒盐噪声,以随机的白色和黑色像素点呈现并铺满整个图片。这种方式对图像产生的作用和添加高斯噪声产生的作用是一样的,只是效果相对较差。

    对比度变换contrast

            在图像的HSV(Hue,Saturation,Value)颜色空间,改变饱和度S和亮度V分量,保持色调H不变,对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间),增加光照变化。

    Fancy PCA(PCA Jittering)

            改变训练图像中RGB通道的强度,对所有RGB像素值执行PCA,得到3*3的协方差矩阵;对特征值进行波动,乘以一个服从均值为0、标准差为0.1高斯分布的随机变量,得到一个新的协方差矩阵,从而实现一种滤镜的效果。

    高级增强技术

            条件型生成对抗网络(conditional GANs)能将图片从一个领域转换到另一个领域中,这种方法虽然Robust但是计算密集类型。

    第二种:主动学习、半监督学习(使用原样本空间已有的样本)

           这里的半监督学习包含纯半监督学习和直推学习(请移步:https://www.cnblogs.com/CJT-blog/p/10276310.html)。

           值得注意的是,主动学习是人工赋予标签,而此处半监督学习可以用一定的算法为无标签样本打上高质量标签。

    个人体验认为,在一些图像任务中,性能较好的时候,第一种方法带来提升不如第二种大,而且需要小心注意生成样本质量。

    上述分类掺杂个人理解,有问题望不吝赐教。

  • 相关阅读:
    javac编译多个java文件以及-cp、-classpath、-sourcepath
    深入理解android:id以及@+id/name和@id/name的区别联系
    记使用Kali linux 2.0的一些坑
    从历史的角度谈变化
    谈凤姐
    我之面向对象观
    读厚黑学有感
    什么是时间
    你是谁?
    Sublime Text2搭建Sass编辑环境
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10423213.html
Copyright © 2020-2023  润新知