数据增强
一、数据增强的作用
1.避免过拟合。当数据集具有某种明显的特征,例如数据集中图片基本在同一个场景中拍摄,使用Cutout方法和风格迁移变化等相关方法可避免模型学习到与目标无关的信息。 2.提升模型的鲁棒性,降低模型对图像的敏感度。当训练数据都属于比较理想的状态,碰到一些特殊情况,如遮挡,亮度,模糊等情况容易识别错误,对训练数据加上噪声,掩码等方法可提升模型鲁棒性。 3. 增加训练数据,提高模型泛化能力。 4. 避免样本不均衡。在工业缺陷检测方面,医疗疾病识别方面,容易出现正负样本极度不平衡的情况,通过对少量样本记性一些数据增强方法,降低样本不均衡比例。
数据增强的分类
数据增强的方式分为两类:在线增强和离线增强。 在线增强是在训练时对数据进行预处理,不改变数据的数量,一般用于大型数据集。 离线增强是在训练数据不足时使用,一般应用于小数据集。离线增强是在训练前对数据进行处理,能够得到多倍的数据集。
数据增强的常用方法
Cutout(2017) 该方法来源于论文《《Improved Regularization of Convolutional Neural Networks with Cutout》 在一些人体姿态估计,人脸识别,目标跟踪,行人重识别等任务中常常会出现遮挡的情 况,为了提高模型的鲁棒性,提出了使用 Cutout 数据增强方法。该方法的依据是 CutOut 能 够让 CNN 更好地利用图像的全局信息,而不是依赖于一小部分特定的视觉特征。 具体做法:对一张图像水机选取一个小正方形区域,在这个区域的像素值设为0,或者其他统一的值。注意:存在50%的概率不对图像使用Cutout。 论文: Improved Regularization of Convolutional Neural Networks with Cutout. Github: https://github.com/uoguelph-mlrg/Cutout. Random Erasing(2017) 随机擦出增强,作者提出的目的主要是模拟遮挡,从而提高模型的泛化能力,这种操作非常有意义。原因在于,把物体遮挡一部分后依然能够分类正确,那么肯定会迫使网络利用未遮挡的数据进行识别,加大了训练难度,一定程度上会提高泛化能力。也可以视为增加噪音的一种,并且与随机裁剪,随机水平翻转具有一定的互补性,综合以上可以取得更好的模型表现,尤其对噪声和遮挡具有更好的鲁棒性。具体的操作就是:随机选择一个区域,然后采用随机值进行覆盖,模拟遮挡场景。 Random Erasing以一定的概率在输入图像 I 上随机选择一个矩形区域,并用范围[0,255]的随机值进行填充。其随机性表现在以下五个方面: 1.对于图像I ,随机擦除是一定概率p进行的 2.选择一个面积大小为S的矩形作为擦除方形,面积大小有上下限 3.矩形框的宽高比是随机的 4.选择一个点作为方形区域的左上角,且保证方形区域的右下角在图像内。 5.填充是随机的,其范围为[0,255]。论文中实验发现随机填充的效果最好。 Random Erasing的超参数有3个: 1.随机擦除概率p 2.矩形框与图像面积比例的上下限 3.矩形框的宽高比的上下限 通过调整以上三个参数,可以得到不同的随机擦除效果,可视化效果如下: 对于目标检测,作者给三种随机擦除方法: 1.IRE:对整张图像使用Random Erasing 2.ORE:对图像中的每一个目标框都是用Random Erasing 3. 1 和 2 结合 作者经过实验后发现第三种效果最好 Random Erasing 随机擦除也可以和其他数据增强共同使用,例如:和随机裁剪 Mixup(2018) 该方法来源于论文《mixup:Beyond Empirical Risk Minimization》 主要思想是将数据集中随机选择两张照片按照一定的比例融合,包括标签值。在深度学习中,一般要求样本上的数量要充足,样本数量越多,训练出来的模型越好,模型的泛化能力越强。但是在实际中,样本数量不足或者样本质量不够好,就要对样本做数据增强,来提高样本质量。 一张海上帆船与熊猫的融合: Hide-and-Seek(2018) 该方法来自论文《Hide-and-Seek: A Data Augmentation Technique for Weakly-Supervised Localization and Beyond.》 Hide-and-Seek(HaS)的核心思想其实与Random Erasing、Cutout等数据增强方法一样,都是去掉一些区域,使得CNN只用其他区域也可以识别出物体,这样CNN可以使用图像的全局信息而不是仅由一些小特征组成的局部信息来识别物体,另外,通过模拟遮挡,可以提高模型的性能和泛化能力。 具体做法是: 做法是将图片切分为S × S S \times SS×S个网格,每个网格采用一定概率p = 0.5 进行遮挡,可以模拟出随机擦除和cutout效果。至于隐藏值设置为何值,作者认为比较关键,因为可能会改变训练数据的分布。如果暴力填黑,认为会出现训练和测试数据分布不一致问题,可能不好,特别是对于第一层卷积而言。作者采用了一些理论计算,最后得到采用整个数据集的均值来填充造成的影响最小(如果采用均值,那么输入网络前,数据预处理减掉均值,那其实还是接近0)。
CutMix(2019) 该方法来源于《CutMix: Regularization Strategy to Train Strong Classififiers with Localizable Features》 该方法结合了 Cutout、Random erasing 和 Mixup 三者的思想,做了一些中间调和的改变, 同样是选择一个小区域,进行掩码,但掩码的方式却是将另一张图片的该区域覆盖到这里。
GridMisk(2020) 该方法来源于《GridMask Data Augmentation》 主要思想是对前几种方法的改进,由于前几种对于掩码区域的选择都是随机的,因此容 易出现对重要部位全掩盖的情况。而 GridMask 则最多出现部分掩盖,且几乎一定会出现部 分掩盖。使用的方式是排列的正方形区域来进行掩码。 具体实现是通过设定每个小正方形的边长,两个掩码之间的距离 d 来确定掩码,从而控制掩 码细粒度。 FenceMask(2020) 该方法来源于《FenceMask: A Data Augmentation Approach for Pre-extracted Image Features》 该方法是对前面 GridMask 的改进,认为使用正方形的掩码会对小目标有很大的影响。 因此提出了更好的形状,FenceMask 具有更好的细粒度。 KeepAugment(2020) 该方法来源于《KeepAugment: A Simple Information-Preserving Data Augmentation Approach》 主要思想是对前几种方法中随机选择掩码区域的改进,通过得出 Saliency map,分析出 最不重要的区域,选择这个区域进行 Cutout,或者分析出最重要区域进行 CutMix。 saliency map 区域的计算方式与类可视化的方法一致,通过计算回传梯度,获得每个像 素值的梯度,从而确定每个像素值对类别的影响程度。而最重要区域和最不重要区域的划分 是通过这个区域的所有梯度值之和大于或小于某个相应的阈值来确定。
|