数据增强(Data Augmentation)常用方法汇总

1、数据增强的作用

        1) 避免过拟合。当数据集具有某种明显的特征,例如数据集中图片基本在同一个场景中拍摄,使用Cutout方法和风格迁移变化等相关方法可避免模型学到跟目标无关的信息。

        2)提升模型鲁棒性,降低模型对图像的敏感度。当训练数据都属于比较理想的状态,碰到一些特殊情况,如遮挡,亮度,模糊等情况容易识别错误,对训练数据加上噪声,掩码等方法可提升模型鲁棒性。

        3)增加训练数据,提高模型泛化能力。

        4)避免样本不均衡。在工业缺陷检测方面,医疗疾病识别方面,容易出现正负样本极度不平衡的情况,通过对少样本进行一些数据增强方法,降低样本不均衡比例。

2、常用方法

        比较常用的几何变换方法主要有:翻转,旋转,裁剪,缩放,平移,抖动。值得注意的是,在某些具体的任务中,当使用这些方法时需要主要标签数据的变化,如目标检测中若使用翻转,则需要将gt框进行相应的调整。

        比较常用的像素变换方法有:加椒盐噪声,高斯噪声,进行高斯模糊,调整HSV对比度,调节亮度,饱和度,直方图均衡化,调整白平衡等。

3、适合分类任务的几个数据增强方式

        Mixup, Cutmix只用于分类任务,分类分数按比例分配, Cutout适合分类、检测、识别任务,分类结果不变 。

        mixup:将随机的两张样本按比例混合,分类的结果按比例分配。只适合分类任务。

        cutout:随机的将样本中的部分区域cut掉,并且填充0像素值,分类的结果不变。

        cutmix:就是将一部分区域cut掉但不填充0像素而是随机填充训练集中的其他数据的区域像素值,分类结果按一定的比例分配。

数据增强(Data Augmentation)常用方法汇总_第1张图片

上述三种数据增强的区别:

        cutout和cutmix就是填充区域像素值的区别;

        mixup和cutmix是混合两种样本方式上的区别;

        mixup是将两张图按比例进行插值来混合样本,cutmix是采用cut部分区域再补丁的形式去混合图像,不会有图像混合后不自然的情形。

优点:

        1)在训练过程中不会出现非信息像素,从而能够提高训练效率;

        2)保留了regional dropout的优势,能够关注目标的non-discriminative parts;

        3)通过要求模型从局部视图识别对象,对cut区域中添加其他样本的信息,能够进一步增强模型的定位能力;

        4)不会有图像混合后不自然的情形,能够提升模型分类的表现;

        5)训练和推理代价保持不变。

4、适合检测任务的几个增强方式

        cutout、 Random Erasing、GridMask。

4.1、GridMask

        论文:https://arxiv.org/pdf/2001.04086.pdf

        代码:GitHub - dvlab-research/GridMask

        GridMask主要思想是对Mixup, Cutmix、Cutout等类似方法的改进,由于掩码区域的选择都是随机的,因此容易出现对重要部位全掩盖的情况。而GridMask则最多出现部分掩盖,且几乎一定会出现部分掩盖。使用的方式是排列的正方形区域来进行掩码。

数据增强(Data Augmentation)常用方法汇总_第2张图片

        具体实现是通过设定每个小正方形的边长,两个掩码之间的距离d来确定掩码,从而控制掩码细粒度。GridMask对应4个参数,为 (x,y,r,d) ,四个参数的设置如下图所示:

数据增强(Data Augmentation)常用方法汇总_第3张图片

         从图中可以看出,r 代表了保留原图像信息的比例,有一个计算方法,具体可以阅读论文。d 决定了一个dropped square的大小, 参数 x和y的取值有一定随机性。

5、多样本数据增强方法

        mosaic数据增强利用了四张图片,对四张图片进行拼接,每一张图片都有其对应的框框,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的框框,然后我们将这样一张新的图片传入到神经网络当中去学习,相当于一下子传入四张图片进行学习了。论文中说这极大丰富了检测物体的背景。且在标准化BN计算的时候一下子会计算四张图片的数据,如下图所示:

数据增强(Data Augmentation)常用方法汇总_第4张图片

实现过程主要分为3步:

        1)从数据集中每次随机取出四张图片

数据增强(Data Augmentation)常用方法汇总_第5张图片

         2)分别对四张图片进行翻转(对原始图片进行左右的翻转)、缩放(对原始图片进行大小的缩放)、色域变化(对原始图片的明亮度、饱和度、色调进行改变)等操作。

        操作完成之后然后再将原始图片按照 第一张图片摆放在左上,第二张图片摆放在左下,第三张图片摆放在右下,第四张图片摆放在右上四个方向位置摆好。

        3)进行图片的组合和框的组合。

        完成四张图片的摆放之后,我们利用矩阵的方式将四张图片它固定的区域截取下来,然后将它们拼接起来,拼接成一张新的图片,新的图片上含有框框等一系列的内容。

数据增强(Data Augmentation)常用方法汇总_第6张图片

6、在网络中增强

        在网络中使用DropOut、DropConnect和DropBlock。

参考:

1、数据增强:Mixup,Cutout,CutMix | Mosaic

https://www.jianshu.com/p/639f9ecc1328

2、DataWhale街景字符编码识别项目-数据增强

python - DataWhale街景字符编码识别项目-数据增强_个人文章 - SegmentFault 思否

深度学习中有哪些数据增强方法? - 知乎

AutoAugment中16种数据增强方法可视化直观展示 - 知乎

数据增强策略(一) - 腾讯云开发者社区-腾讯云

数据增强(Data Augmentation)汇总 - 知乎

数据增强策略(一)-技术圈

https://www.pythonf.cn/read/169722

你可能感兴趣的:(深度学习,python,目标检测,计算机视觉,人工智能,深度学习)