百科问答小站 logo
百科问答小站 font logo



深度学习中有哪些数据增强方法? 第1页

  

user avatar   long-peng-11 网友的相关建议: 
      

以图像领域为例,先答一波,参考

1 什么是数据增强?

数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。

比如上图,第1列是原图,后面3列是对第1列作一些随机的裁剪、旋转操作得来。

每张图对于网络来说都是不同的输入,加上原图就将数据扩充到原来的10倍。假如我们输入网络的图片的分辨率大小是256×256,若采用随机裁剪成224×224的方式,那么一张图最多可以产生32×32张不同的图,数据量扩充将近1000倍。虽然许多的图相似度太高,实际的效果并不等价,但仅仅是这样简单的一个操作,效果已经非凡了。

如果再辅助其他的数据增强方法,将获得更好的多样性,这就是数据增强的本质。

数据增强可以分为,有监督的数据增强和无监督的数据增强方法。其中有监督的数据增强又可以分为单样本数据增强和多样本数据增强方法,无监督的数据增强分为生成新的数据和学习增强策略两个方向。

2 有监督的数据增强

有监督数据增强,即采用预设的数据变换规则,在已有数据的基础上进行数据的扩增,包含单样本数据增强和多样本数据增强,其中单样本又包括几何操作类,颜色变换类。

2.1. 单样本数据增强

所谓单样本数据增强,即增强一个样本的时候,全部围绕着该样本本身进行操作,包括几何变换类,颜色变换类等。

(1) 几何变换类

几何变换类即对图像进行几何变换,包括翻转,旋转,裁剪,变形,缩放等各类操作,下面展示其中的若干个操作。

水平翻转和垂直翻转

随机旋转

随机裁剪

变形缩放

翻转操作和旋转操作,对于那些对方向不敏感的任务,比如图像分类,都是很常见的操作,在caffe等框架中翻转对应的就是mirror操作。

翻转和旋转不改变图像的大小,而裁剪会改变图像的大小。通常在训练的时候会采用随机裁剪的方法,在测试的时候选择裁剪中间部分或者不裁剪。值得注意的是,在一些竞赛中进行模型测试时,一般都是裁剪输入的多个版本然后将结果进行融合,对预测的改进效果非常明显。

以上操作都不会产生失真,而缩放变形则是失真的。

很多的时候,网络的训练输入大小是固定的,但是数据集中的图像却大小不一,此时就可以选择上面的裁剪成固定大小输入或者缩放到网络的输入大小的方案,后者就会产生失真,通常效果比前者差。

(2) 颜色变换类

上面的几何变换类操作,没有改变图像本身的内容,它可能是选择了图像的一部分或者对像素进行了重分布。如果要改变图像本身的内容,就属于颜色变换类的数据增强了,常见的包括噪声、模糊、颜色变换、擦除、填充等等。

基于噪声的数据增强就是在原来的图片的基础上,随机叠加一些噪声,最常见的做法就是高斯噪声。更复杂一点的就是在面积大小可选定、位置随机的矩形区域上丢弃像素产生黑色矩形块,从而产生一些彩色噪声,以Coarse Dropout方法为代表,甚至还可以对图片上随机选取一块区域并擦除图像信息。

添加Coarse Dropout噪声

颜色变换的另一个重要变换是颜色扰动,就是在某一个颜色空间通过增加或减少某些颜色分量,或者更改颜色通道的顺序。

颜色扰动

还有一些颜色变换,本文就不再详述。

几何变换类,颜色变换类的数据增强方法细致数来还有非常多,推荐给大家一个git项目:

       https://github.com/aleju/imgaug     

预览一下它能完成的数据增强操作吧。

2.2. 多样本数据增强

不同于单样本数据增强,多样本数据增强方法利用多个样本来产生新的样本,下面介绍几种方法。

(1) SMOTE[1]

SMOTE即Synthetic Minority Over-sampling Technique方法,它是通过人工合成新样本来处理样本不平衡问题,从而提升分类器性能。

类不平衡现象是很常见的,它指的是数据集中各类别数量不近似相等。如果样本类别之间相差很大,会影响分类器的分类效果。假设小样本数据数量极少,如仅占总体的1%,则即使小样本被错误地全部识别为大样本,在经验风险最小化策略下的分类器识别准确率仍能达到99%,但由于没有学习到小样本的特征,实际分类效果就会很差。

SMOTE方法是基于插值的方法,它可以为小样本类合成新的样本,主要流程为:

第一步,定义好特征空间,将每个样本对应到特征空间中的某一点,根据样本不平衡比例确定好一个采样倍率N;

第二步,对每一个小样本类样本(x,y),按欧氏距离找出K个最近邻样本,从中随机选取一个样本点,假设选择的近邻点为(xn,yn)。在特征空间中样本点与最近邻样本点的连线段上随机选取一点作为新样本点,满足以下公式:

第三步,重复以上的步骤,直到大、小样本数量平衡。

该方法的示意图如下。

在python中,SMOTE算法已经封装到了imbalanced-learn库中,如下图为算法实现的数据增强的实例,左图为原始数据特征空间图,右图为SMOTE算法处理后的特征空间图。

(2) SamplePairing[2]

SamplePairing方法的原理非常简单,从训练集中随机抽取两张图片分别经过基础数据增强操作(如随机翻转等)处理后经像素以取平均值的形式叠加合成一个新的样本,标签为原样本标签中的一种。这两张图片甚至不限制为同一类别,这种方法对于医学图像比较有效。

经SamplePairing处理后可使训练集的规模从N扩增到N×N。实验结果表明,因SamplePairing数据增强操作可能引入不同标签的训练样本,导致在各数据集上使用SamplePairing训练的误差明显增加,而在验证集上误差则有较大幅度降低。

尽管SamplePairing思路简单,性能上提升效果可观,符合奥卡姆剃刀原理,但遗憾的是可解释性不强。

(3) mixup[3]

mixup是Facebook人工智能研究院和MIT在“Beyond Empirical Risk Minimization”中提出的基于邻域风险最小化原则的数据增强方法,它使用线性插值得到新样本数据。

令(xn,yn)是插值生成的新数据,(xi,yi)和(xj,yj)是训练集随机选取的两个数据,则数据生成方式如下

λ的取指范围介于0到1。提出mixup方法的作者们做了丰富的实验,实验结果表明可以改进深度学习模型在ImageNet数据集、CIFAR数据集、语音数据集和表格数据集中的泛化误差,降低模型对已损坏标签的记忆,增强模型对对抗样本的鲁棒性和训练生成对抗网络的稳定性。

SMOTE,SamplePairing,mixup三者思路上有相同之处,都是试图将离散样本点连续化来拟合真实样本分布,不过所增加的样本点在特征空间中仍位于已知小样本点所围成的区域内。如果能够在给定范围之外适当插值,也许能实现更好的数据增强效果。

3 无监督的数据增强

无监督的数据增强方法包括两类:

(1) 通过模型学习数据的分布,随机生成与训练数据集分布一致的图片,代表方法GAN[4]。

(2) 通过模型,学习出适合当前任务的数据增强方法,代表方法AutoAugment[5]。

3.1 GAN

关于GAN(generative adversarial networks),我们已经说的太多了。它包含两个网络,一个是生成网络,一个是对抗网络,基本原理如下:

(1) G是一个生成图片的网络,它接收随机的噪声z,通过噪声生成图片,记做G(z) 。

(2) D是一个判别网络,判别一张图片是不是“真实的”,即是真实的图片,还是由G生成的图片。

GAN的以假乱真能力就不多说了。

3.2 Autoaugmentation[5]

AutoAugment是Google提出的自动选择最优数据增强方案的研究,这是无监督数据增强的重要研究方向。它的基本思路是使用增强学习从数据本身寻找最佳图像变换策略,对于不同的任务学习不同的增强方法,流程如下:

(1) 准备16个常用的数据增强操作。

(2) 从16个中选择5个操作,随机产生使用该操作的概率和相应的幅度,将其称为一个sub-policy,一共产生5个sub-polices。

(3) 对训练过程中每一个batch的图片,随机采用5个sub-polices操作中的一种。

(4) 通过模型在验证集上的泛化能力来反馈,使用的优化方法是增强学习方法。

(5) 经过80~100个epoch后网络开始学习到有效的sub-policies。

(6) 之后串接这5个sub-policies,然后再进行最后的训练。

总的来说,就是学习已有数据增强的组合策略,对于门牌数字识别等任务,研究表明剪切和平移等几何变换能够获得最佳效果。

而对于ImageNet中的图像分类任务,AutoAugment学习到了不使用剪切,也不完全反转颜色,因为这些变换会导致图像失真。AutoAugment学习到的是侧重于微调颜色和色相分布。

除此之外还有一些数据增强方法,篇幅有限不做过多解读,请持续关注。

4 思考

数据增强的本质是为了增强模型的泛化能力,那它与其他的一些方法比如dropout,权重衰减有什么区别?

(1) 权重衰减,dropout,stochastic depth等方法,是专门设计来限制模型的有效容量的,用于减少过拟合,这一类是显式的正则化方法。研究表明这一类方法可以提高泛化能力,但并非必要,且能力有限,而且参数高度依赖于网络结构等因素。

(2) 数据增强则没有降低网络的容量,也不增加计算复杂度和调参工程量,是隐式的规整化方法。实际应用中更有意义,所以我们常说,数据至上。

我们总是在使用有限的数据来进行模型的训练,因此数据增强操作是不可缺少的一环。从研究人员手工定义数据增强操作,到基于无监督的方法生成数据和学习增强操作的组合,这仍然是一个开放的研究领域,感兴趣的同学可以自行了解更多。

参考文献

[1] Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of Artificial Intelligence Research, 2002, 16(1):321-357.

[2] Inoue H. Data Augmentation by Pairing Samples for Images Classification[J]. 2018.

[3] Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.

[4] Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative Adversarial Networks[J]. Advances in Neural Information Processing Systems, 2014, 3:2672-2680.

[5] Cubuk E D, Zoph B, Mane D, et al. AutoAugment: Learning Augmentation Policies from Data.[J]. arXiv: Computer Vision and Pattern Recognition, 2018.

更多实战和细节,可以去我们数据使用课程中看看。


user avatar   tfygg 网友的相关建议: 
      

看了其他大佬的回答,总结的很好。本篇回答就补充一些前沿的研究成果,如Feature space augmentation;然后介绍了半监督学习中的几种数据增强;最后,介绍几种解决数据问题的训练方法。

首先,这里将数据增强分为以下几类:

  • Image space augmentation
    • Geometric Transformations
    • Color Space Transformations
    • RandomRrase/GridMask
    • Mixup/Cutmix
    • Mosaic
  • Feature space augmentation
    • MoEx
  • GAN-based Data Augmentation
  • NAS-based Data Augmentation
    • AutoAugment
    • Fast AutoAugment
    • DADA
  • Other
    • MixMatch
    • FeatMatch

1、Image space augmentation

Geometric Transformations:就是图像翻转,裁剪,旋转和平移等等,

Color Space Transformations:对比度,锐化,白平衡,色彩抖动,随机色彩处理和许多其他技术来更改图像的色彩空间。

Mixup就是将两张图像进行mix操作,提供数据的丰富性;

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

Mosaic:是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据,这样做的好处是丰富了图片的背景。

2、Feature space augmentation

Paper:On Feature Normalization and Data Augmentation(MoEx)

Arxiv:arxiv.org/abs/2002.1110

Github:github.com/Boyiliee/MoE

MoEx的实验包括:ImageNet、Speech Commands、IWSLT 2014、ModelNet40等。可以说涵盖了图像、NLP、语音三大领域,可见其优点很明显,由于是在特征空间做数据增强,所以不受输入数据类型的限制,对于图像、音频以及文本等数据具有通用性。

3、GAN-based Data Augmentation

生成模型学习数据的分布,因此,可以生成全新的图像。常用的是GAN,其由两个网络组成:生成器和鉴别器。生成器的对仅具有噪声作为输入生成伪造数据。鉴别器接收真实图像和伪图像(由发生器产生)作为输入,并学会识别图像是伪图像还是真实图像。随着两个网络相互竞争,在对抗训练的过程中,生成器在生成图像方面变得越来越好,因为其最终目标是欺骗鉴别器,而鉴别器在区分伪造品和真实图像方面变得越来越好,因为它的目标是不被欺骗,最终生成器生成了令人难以置信的真实伪数据。需要说明的是,GAN生成的数据是要因地制宜,据说点赞的同学训练过程会有奇效(哈哈)。

下面的这篇文章就就是一个很好的例子:

Paper:Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in vitro.

Arxiv:arxiv.org/abs/1701.0771

Github:github.com/layumi/Perso

这篇文章想法在当时情况下还是比较好的。没有ReID的GAN,那就用原始数据训练一个GAN,然后生成图片,没有标签就用ReID网络生成pseudo label。这样一来,就从监督学习转化为了半监督学习。

4、NAS-based Data Augmentation

这类方法的出发点是:不同的数据的特征不同,因此,不同的数据增强方法带来的收益是不一样的。例如:由于不同数据集中存在不同的对称性要求,在CIFAR-10数据集上训练阶段水平翻转图像是的有效数据增强方法,但对MNIST却不适用。 因而,让网络自主的寻找数据增强方法逐渐成为一种无论是学术或者工程上都不可或缺的需求。

Google DeepMind 率先提出了利用NAS的方法AutoAugment,在数据增强的策略搜索空间中利用数据集上评定特定策略的质量,自动搜索出合适的数据增强的策略。相关的文献还有:Fast AutoAugment以及DADA等等。

Paper:AutoAugment: Searching for best Augmentation policies Directly on the Dataset of Interest

Arxiv:arxiv.org/abs/1805.0950

Github:github.com/tensorflow/m

AutoAugment是Google提出的自动选择最优数据增强方案的研究,它的基本思路是使用强化学习从数据本身寻找最佳图像变换策略,对于不同的任务学习不同的增强方法。

在实验中发现:

  • 对于门牌数字识别等任务,研究表明剪切和平移等几何变换能够获得最佳效果。
  • 对于ImageNet中的图像分类任务,AutoAugment学习到了不使用剪切,也不完全反转颜色,因为这些变换会导致图像失真。AutoAugment学习到的是侧重于微调颜色和色相分布。

这也说明了不同数据,乃至不同任务都需要不同的数据增强策略。

AutoAugment的方法在很多数据集上达到state-of-the-art的水平。在CIFAR-10上,实现了仅1.48%的错误率,比之前state-of-the-art 的方法又提升了0.65%;在SVHN上,将state-of-the-art的错误率从1.30%提高到1.02%;在一些reduced数据集上,在不使用任何未标记数据的情况下实现了与半监督方法相当的性能;在ImageNet上,实现了前所未有的83.54%的精度。

5、Other

除了上面的内容,还有一些半监督技术中的数据增强方法。

  • MixMatch:半监督学习领域的Mixup

Paper:MixMatch: A Holistic Approach to Semi-Supervised Learning

Arxiv:arxiv.org/pdf/1905.0224

github:github.com/google-resea

  • FeatMatch:半监督学习领域的MoEx

FeatMatch: Feature-Based Augmentation for Semi-Supervised Learning

arxiv:arxiv.org/pdf/2007.0850

在上面我们介绍了一些对有监督的数据进行数据增强的方法,但是对有监督训练中进行数据增强大多被认为是“蛋糕上的樱桃”,因为虽然它提供了稳定但是有限的性能提升,还有以下几种方法解决中数据的问题,提高模型能力:

  • Transfer learning:其的工作原理是在大型数据集(如ImageNet )上训练网络,然后将这些权重用初始化新的分类任务中的模型。
  • Few/One-shot and Zero-shot learning:Few/One-Shot Learning目的在于从每个类别中的少量样本/一个样本中学习有关对象的特征,而Zero-Shot Learning的核心目标在于用训练好的模型对训练集中没有出现过的类别进行相应的预测。
  • Self/Semi Supervised learning: 有标签的数据难以获取,那么可以选择无监督方式进行Self Supervised learning;或者选择Semi Supervised learning这类方法,仅使用少量标签和大量未标签的数据。

本人做了一个半监督学习的总结,用于整理半监督学习的方法和进展,欢迎点击并关注专栏。



user avatar   luo-cai 网友的相关建议: 
      

之前回答的几位大佬对数据增强的原理介绍都很详细了,这里我就直接介绍这几个方面:

  1. 数据增强方面,在 github 上 star 数量最多的几个项目;
  2. 这几年最新且有开源代码的数据增强论文;
  3. 两个实用的标注工具

介绍的内容主要来自这个 github 项目,可以去 star 一下:

github.com/CrazyVertigo

1. github 项目

imgaug

这个项目的 star 数量是已经有 8k 多了,显示使用的数量也有 2k多,克隆仓库的有1k多,的GitHub地址:


它可以实现的效果包括添加噪音、仿射变换、裁剪、翻转、旋转等,其效果图如下所示:

Albumentations

这第二个项目是 2018年的一篇论文《Albumentations: fast and flexible image augmentations》的实现代码,论文地址:



github 项目已经有 4k 的star,地址如下:


albumentations-team/albumentations


该项目的特点有:

  • 速度比大部分的库都要快
  • 基于 numpy 和 OpenCV 两个库,并选择最合适的一个
  • 接口简单,灵活
  • 大量的多种的变换方法实现
  • 易于拓展应用到其他的任务或者库
  • 支持的变换操作对象有图像、masks、关键点、边界框
  • 支持 python 3.5-3.7 的版本
  • 可以和 PyTorch 结合使用
  • 已经被应用到很多深度学习的竞赛中,包括 Kaggle、topcoder,CVPR,MICCAI
  • 作者是 Kaggle Masters

其效果如下所示,可以看到能实现的方法包括颜色空间的变换、亮度调整、模糊、压缩、黑白


Augmentor

第三个项目同样来自一篇论文《Biomedical image augmentation using Augmentor》,其论文地址:

GitHub 的 star 的数量也有 3.8k了,其地址:


官方文档:



实现的效果如下所示:



2. 论文

这里介绍的总共 13 篇论文,都可以添加我的公众号--【算法猿的成长】,后台回复“数据增强”获取。

Mixup

来自 ICLR 2018 的论文:《Mixup: BEYOND EMPIRICAL RISK MINIMIZATION

论文地址: arxiv.org/abs/1710.0941

GitHub 地址:github.com/facebookrese

效果如下所示:

Cutout

2017年的论文:《Improved Regularization of Convolutional Neural Networks with Cutout

论文地址: arxiv.org/abs/1708.0455

github 地址:github.com/uoguelph-mlr

Cutmix

ICCV 2019 的论文:《CutMix:Regularization Strategy to Train Strong Classifiers with Localizable Features

论文地址:arxiv.org/pdf/1905.0489

github地址: github.com/clovaai/CutM

Augmix

ICLR 2020 的论文:《AUGMIX: A SIMPLE DATA PROCESSING METHOD TO IMPROVE ROBUSTNESS AND UNCERTAINTY

论文地址:arxiv.org/pdf/1912.0278

github 地址: github.com/google-resea

fast-autoaugment

NeurlIPS 2019 的论文《 Fast AutoAugment》

论文地址: arxiv.org/abs/1905.0039 github 地址: github.com/kakaobrain/f

AutoAugment

CVPR 2019 的论文 《AutoAugment:Learning Augmentation Strategies from Data

论文地址: arxiv.org/pdf/1805.0950

github地址: github.com/DeepVoltaire

RandAugment

ICLR 2020 的论文《RandAugment: Practical automated data augmentation with a reduced search space

论文地址:arxiv.org/pdf/1912.0278 github地址: github.com/tensorflow/t

GridMask

2020年的论文题目《GridMask Data Augmentation》

论文地址: arxiv.org/abs/2001.0408 github地址: github.com/akuxcw/GridM 知乎的论文解读: zhuanlan.zhihu.com/p/10

imagecorruptions

2019 年的论文《Benchmarking Robustness in Object Detection:Autonomous Driving when Winter is Coming

论文地址: arxiv.org/pdf/1912.0278

github 地址:github.com/CrazyVertigo

CycleGAN

ICCV 2017 年的一篇论文《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networkss》,也是 GAN 领域非常有名的一篇论文

论文地址:arxiv.org/pdf/1703.1059

github 地址:

Small Object Augmentation

2019 年的论文《Augmentation for small object detection

论文地址:arxiv.org/pdf/1902.0729

github 地址:github.com/gmayday1997/

知乎阅读笔记:zhuanlan.zhihu.com/p/64


3. 标注工具

labelImg

2017 年的一个标注工具,目前有超过 9k star 的github项目,地址为:

github.com/tzutalin/lab

它可以进行图片的标注,以及绘制边界框,如下所示:

labelme

同样是2017年开源的一个标注工具,目前有 4k+ 的star,github 地址:

github.com/wkentaro/lab

这是一个可以实现多种形状的标注,比如多边形、圆形、矩形、直线、点等,如下所示:





  

相关话题

  深度学习中有哪些数据增强方法? 
  石头和塑料袋对于计算机传感器的差别在于什么?为什么无人驾驶系统会依然存在对周围环境的误判? 
  是不是对于任意 n×n 大小的围棋棋盘,人类都赢不了 AlphaGo Zero 了? 
  大数据时代和个人隐私保护是否矛盾,那我们为何还要发展大数据? 
  有哪些不错的数据报告网站? 
  个人隐私是否会随着互联网的发展而逐渐消失以至不存在? 
  目标检测中的mAP是什么含义? 
  为什么中国人才流失很严重?美国人才流失情况如何? 
  如何看待 Nervana 被 Intel 收购? 
  用生成模型做数据增强data augmentation时,如何从合成数据中筛选出质量较好的样本? 

前一个讨论
从你所在的行业来看,什么样的发展才是「高质量发展」?当前还有哪些不足之处?
下一个讨论
2020 年即将过去,你有什么感想?2021 年即将到来,你有什么想实现的愿望?





© 2024-05-19 - tinynew.org. All Rights Reserved.
© 2024-05-19 - tinynew.org. 保留所有权利