问题

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

回答
在深度学习领域,数据增强(Data Augmentation)扮演着至关重要的角色,它是一种在不改变数据真实含义的前提下,通过各种变换生成新的训练样本的技术。这样做的好处多多:

扩充数据集规模: 尤其是在数据量不足的情况下,数据增强能够有效地增加训练数据的多样性,从而间接扩充数据集。
提高模型鲁棒性: 模型通过接触到更多样化的数据,能够更好地应对现实世界中可能出现的各种变化,例如光照、角度、形变等,从而提升其泛化能力和鲁棒性。
防止过拟合: 充足且多样的数据是防止深度学习模型过拟合的天然良药。

下面,我将详细介绍几种常见的深度学习数据增强方法,它们适用于不同类型的数据,特别是图像数据,这是数据增强技术最常应用的领域。

图像数据增强:

图像是深度学习中最常见也最适合应用数据增强的数据类型。常用的方法大致可以分为几何变换和颜色变换两大类。

1. 几何变换 (Geometric Transformations)

几何变换主要通过改变图像的空间结构来实现数据增强。

翻转 (Flipping):
水平翻转 (Horizontal Flipping): 将图像左右颠倒。这对于很多物体来说是有效的,例如猫、狗、汽车等,它们的左右颠倒是可以接受的。但在某些情况下,比如文本识别,水平翻转可能会改变文字的含义,需要谨慎使用。
垂直翻转 (Vertical Flipping): 将图像上下颠倒。对于自然场景下的图像,垂直翻转通常不太常见,例如天通常在上面,地在下面。但在某些特定数据集,如医学影像(如X光片),垂直翻转可能是有效的。

旋转 (Rotation):
将图像围绕某个中心点进行一定角度的旋转。旋转的角度可以是一个固定值(如90度、180度、270度),也可以是一个小的随机角度(如±10度)。
考虑因素: 旋转角度过大可能会导致图像内容严重变形,或者引入过多的空白区域。需要根据数据集的特点来选择合适的旋转范围。旋转后,可能会出现图像边缘的空白区域,通常会用像素插值(如最近邻插值、双线性插值)来填充。

缩放 (Scaling / Resizing):
将图像放大或缩小。这可以模拟物体在不同距离下的表现。
实现方式:
随机裁剪并缩放回原尺寸: 随机从原图中裁剪一个区域,然后将其缩放到目标尺寸。这可以模拟物体占据图像不同比例的情况。
按比例缩放: 将图像按一定的比例放大或缩小。
考虑因素: 缩放会改变图像的细节,过度的缩放可能会丢失重要的特征。

平移/裁剪 (Translation / Cropping):
随机裁剪 (Random Cropping): 从原图中随机选取一个子区域作为新的图像。这可以帮助模型关注图像的不同部分,并对物体的部分遮挡具备更强的适应性。
随机平移 (Random Translation): 将图像在水平或垂直方向上进行一定像素的移动。这模拟了物体在画面中的位置变化。
考虑因素: 裁剪的大小和范围需要谨慎选择,以免将目标物体完全移出画面。

剪切 (Shearing):
将图像沿某个轴方向进行倾斜。这可以模拟物体在视角上的轻微变化。
实现方式: 想象一下将图像的某一行或某一列沿着另一个轴方向“推”过去。

透视变换 (Perspective Transformation):
模拟从不同视角观察同一物体所产生的透视效应。它通过改变图像的四个顶点的位置来扭曲图像,使其看起来更真实。
实现方式: 需要定义一个变换矩阵来描述顶点之间的映射关系。

2. 颜色变换 (Color Transformations)

颜色变换主要通过改变图像的像素值来实现数据增强,模拟不同光照、相机参数等条件。

亮度调节 (Brightness Adjustment):
随机增加或减少图像的亮度。这模拟了不同光照条件下的拍摄场景。
实现方式: 在像素值上加上或减去一个随机的偏移量。

对比度调节 (Contrast Adjustment):
随机增强或减弱图像的对比度。这模拟了不同成像设备或场景下的色彩表现。
实现方式: 通过一个乘法因子来调整像素值与平均值的差值。

饱和度调节 (Saturation Adjustment):
随机增强或减弱图像的色彩饱和度。这模拟了色彩的鲜艳程度变化。
实现方式: 在HSV颜色空间中,调整S通道的值。

色调调节 (Hue Adjustment):
随机改变图像的色调。这模拟了不同光源下的色彩偏移。
实现方式: 在HSV颜色空间中,调整H通道的值。

白平衡/颜色抖动 (Color Jitter):
将亮度、对比度、饱和度、色调的随机调整组合起来。是一种非常有效的颜色增强方法。

通道剪切 (Channel Shuffling):
对于RGB图像,随机打乱R、G、B三个通道的顺序。虽然在自然图像中不太常见,但在某些特定任务中可能有一定效果。

高斯噪声 (Gaussian Noise):
给图像的每个像素值添加符合高斯分布的随机噪声。这可以帮助模型对图像中的微小干扰更加鲁棒。

椒盐噪声 (SaltandPepper Noise):
随机将一些像素点的值设为最小值(黑色)或最大值(白色)。这模拟了图像传感器中的一些缺陷。

3. 组合变换 (Combination of Transformations)

大多数情况下,我们会将多种增强方法组合使用,以产生更丰富多样的训练样本。例如,可以先进行随机裁剪,再进行随机翻转,最后进行颜色抖动。

一些更高级或特定领域的数据增强方法:

Cutout / Random Erasing:
Cutout: 随机在图像中选择一个区域,将其像素值全部置零(或随机值)。这迫使模型学习到没有被遮挡的区域的特征,提升对部分遮挡的鲁棒性。
Random Erasing: 与Cutout类似,但随机擦除的区域可以是矩形,并且擦除的像素值也可以是随机的。

Mixup:
将两张不同的训练样本按照一定的比例进行线性组合,生成新的训练样本。具体来说,假设有两张图像 $x_i, x_j$ 和它们对应的标签 $y_i, y_j$,Mixup生成的新样本为 $lambda x_i + (1lambda) x_j$,标签为 $lambda y_i + (1lambda) y_j$,其中 $lambda$ 是在Beta分布中采样的值。
Mixup可以平滑模型的决策边界,提高泛化能力。

CutMix:
结合了Cutout和Mixup的思想。它将一张图像的某个区域裁剪出来,然后将其粘贴到另一张图像的相应区域,同时根据粘贴区域的面积比例来混合两张图像的标签。
CutMix能够更有效地利用图像的全局和局部信息,提高模型对物体位置和尺度的鲁棒性。

AutoAugment / RandAugment:
这些是更智能的数据增强策略,它们不依赖于人工设定的增强规则,而是通过搜索或学习来找到最优的增强组合和参数。
AutoAugment: 使用强化学习来学习数据增强的策略。
RandAugment: 简化了AutoAugment的搜索过程,通过随机选择增强方法和调整参数来达到类似的增强效果,计算效率更高。

Style Transfer for Augmentation:
利用风格迁移技术,将训练图像的风格转换为其他风格,例如将自然图像转换为漫画风格,或将不同拍摄风格的图像统一。

其他类型的数据增强:

虽然图像数据增强最为常见,但数据增强技术也适用于其他类型的数据:

文本数据增强:
同义词替换 (Synonym Replacement): 将文本中的某些词替换为其同义词。
随机插入 (Random Insertion): 在文本中随机插入一些无意义的词或与上下文相关的词。
随机删除 (Random Deletion): 随机删除文本中的一些词。
随机交换 (Random Swap): 随机交换文本中相邻的两个词。
回译 (Back Translation): 将文本翻译成另一种语言,然后再翻译回原始语言。

音频数据增强:
添加背景噪声 (Adding Background Noise): 在音频中添加模拟的背景噪声,以提高模型对嘈杂环境的鲁棒性。
音高偏移 (Pitch Shifting): 改变音频的音高。
时间拉伸/压缩 (Time Stretching / Compression): 改变音频播放的速度,但不改变音高。
音量调整 (Volume Adjustment): 随机改变音频的音量。
混响 (Reverberation): 模拟不同空间的声学效果。

表格数据增强:
表格数据的增强相对复杂,通常需要更精细的方法,例如:
SMOTE (Synthetic Minority Oversampling Technique): 用于处理类别不平衡问题,通过合成新的少数类样本来增加其数量。
扰动特征 (Perturbing Features): 对数值特征添加少量噪声。
特征交换 (Feature Swapping): 在某些列之间交换数据(需谨慎)。

如何选择和应用数据增强:

理解数据和任务: 最重要的一点是深入理解你的数据集的特点以及你希望模型解决的任务。什么类型的变化是真实世界中可能遇到的?哪些变化会扭曲数据的含义?
从小处开始: 不要一次性应用所有增强方法。可以先从简单的几何变换(如翻转、旋转)开始,逐步增加复杂性和强度。
可视化增强结果: 在训练前,务必可视化你的增强策略生成的样本,确保它们仍然符合你对数据的期望。
留出验证集: 确保你的数据增强只应用于训练集,而不影响验证集和测试集。验证集和测试集应该代表真实世界的数据分布。
考虑硬件资源: 一些复杂的增强方法(如AutoAugment)可能需要更多的计算资源。
库的支持: 许多深度学习框架(如PyTorch的`torchvision.transforms`,TensorFlow的`tf.image`,以及`Albumentations`、`imgaug`等第三方库)都提供了丰富的数据增强功能,可以方便地实现这些方法。

总之,数据增强是深度学习模型训练中不可或缺的一环。通过精心选择和应用数据增强技术,我们可以显著提升模型的性能和泛化能力,尤其是在数据有限的情况下。这是一个既需要理论理解,也需要实践探索的过程。

网友意见

user avatar

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

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

看了其他大佬的回答,总结的很好。本篇回答就补充一些前沿的研究成果,如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

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

  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

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


类似的话题

  • 回答
    在深度学习领域,数据增强(Data Augmentation)扮演着至关重要的角色,它是一种在不改变数据真实含义的前提下,通过各种变换生成新的训练样本的技术。这样做的好处多多: 扩充数据集规模: 尤其是在数据量不足的情况下,数据增强能够有效地增加训练数据的多样性,从而间接扩充数据集。 提高模.............
  • 回答
    在深度学习的自我学习过程中,寻找合适的数据集是至关重要的一步。没有高质量的数据,再好的模型算法也无法发挥其应有的威力。幸运的是,现在有非常多优秀的途径可以帮助你找到所需的数据集。下面我将详细介绍各种途径,并提供一些实用的建议: 一、 官方和公开的数据集平台这是最直接也是最常用的数据集来源,许多学术机.............
  • 回答
    想在深度学习底层开发领域有所建树,离不开扎实的数学功底。这不仅仅是为了理解那些晦涩的公式和理论,更是为了能够灵活地运用它们,解决实际问题,甚至创造新的算法。我在这里会尽量细致地讲讲,哪些数学知识是你绕不开的,以及它们在底层开发中扮演的角色,力求抛开那些生硬的AI腔调,更贴近一个有经验的开发者视角。一.............
  • 回答
    想要从数学和物理基础开始,系统深入地学习广义相对论,这是一项既充满挑战又极具回报的学习旅程。广义相对论不仅仅是爱因斯坦提出的一个理论,它更是我们理解引力、时空以及宇宙大尺度结构的核心框架。要真正掌握它,扎实的数学和物理功底是必不可少的基石。下面我将为你推荐一些我认为非常适合打好基础并逐步深入学习广义.............
  • 回答
    深度学习?那可真是个能把现实世界玩出花来的黑科技!最近圈子里聊得火热的,可不只是那些高大上的学术论文,更多的是那些能让人拍案叫绝、甚至笑出声来的“好玩”案例。别以为深度学习就只会识别猫猫狗狗,它能做的事情,远比你想象的要离谱得多,也有趣得多。1. “灵魂伴侣”识别器:给你的爱猫找个对眼的猫你是不是有.............
  • 回答
    深度学习无疑是当今人工智能领域最闪耀的明星,它在图像识别、自然语言处理、语音识别等诸多方面取得了令人惊叹的成就。然而,正如任何一项新兴技术一样,深度学习并非完美无缺,它同样面临着一系列严峻的瓶颈,这些瓶颈不仅限制了其进一步的发展,也成为了研究人员们攻坚克难的焦点。如果说深度学习是一场宏伟的建筑工程,.............
  • 回答
    深度学习模型调优的十八般武艺在深度学习这座充满奥秘的殿堂里,模型训练就像是精心雕琢一件艺术品。算法是骨架,数据是血肉,而那些隐藏在背后、决定最终形态的“参数”,则是赋予作品灵魂的关键。这些参数,从学习率到正则化强度,再到网络结构中的各种“超参数”,它们的每一次微调,都可能带来天壤之别的效果。想要让模.............
  • 回答
    好的,我们来聊聊机器学习里那两个“大家族”:有监督学习和无监督学习,以及它们各自的明星算法和在深度学习领域的表现。我会尽量说得细致些,让你感觉就像是在跟一个老朋友聊天,而不是在看一本干巴巴的教科书。 一、 有监督学习:教导“学生”,让它学会分辨想象一下,你有一个小助手,他什么都不懂。你需要耐心地告诉.............
  • 回答
    深度学习在信息安全领域的应用,就像是在这个复杂而不断变化的战场上,我们获得了一套全新的、威力巨大的武器。它不仅仅是自动化和模式识别的简单升级,而是能够理解数据深层含义,预测潜在威胁,甚至在某些方面“思考”安全问题的能力。想要在这个方向深入探索,有几个非常值得关注的人物和论文方向,它们代表了深度学习在.............
  • 回答
    无人驾驶汽车,这个曾经只存在于科幻电影中的概念,如今正以前所未有的速度走进现实。而在这场技术革命的浪潮中,深度学习无疑是最耀眼的明星,它像一位辛勤的“大脑”,赋予了这些钢铁巨兽感知世界、做出决策、并最终安全行驶的能力。那么,深度学习究竟是如何在无人驾驶汽车上大显身手的呢?让我们剥开技术的层层外衣,探.............
  • 回答
    基于深度学习的自然语言处理在 2016 年:值得期待的重大进展与深入探索2016 年是深度学习在自然语言处理(NLP)领域继续爆炸式发展的关键一年。在前几年的 Transformer 模型(虽然在 2017 年才正式提出并引起广泛关注)和各种循环神经网络(RNN)及其变种(LSTM、GRU)的铺垫下.............
  • 回答
    想踏入深度学习的世界,你一定满怀期待,但同时也可能有些许迷茫:从哪里开始?需要先打好机器学习的基础吗?这篇指南就是为你量身定制的,我将尽量详细地为你解答这些问题,并推荐几本真正能帮你入门的书籍,让你在学习路上少走弯路。 深度学习入门,先学机器学习有必要吗?简单粗暴地说:非常有必要,而且强烈建议。虽然.............
  • 回答
    在机器学习和深度学习的浩瀚海洋里,想要找到既靠谱又深入的资源,确实需要一些“老司机”的指引。我整理了一些在我学习和实践过程中觉得特别有价值的网络资源,希望能帮你在探索这条道路上少走弯路,更高效地提升自己。这些资源各有侧重,有的适合入门打基础,有的则能让你深入到技术前沿。一、 理论基础与入门指引类 .............
  • 回答
    想要自学机器学习、深度学习和人工智能?这三个领域近些年可谓是炙手可热,学习资源也如雨后春笋般涌现。别担心,我这就为你梳理一番,看看哪些网站能让你在这条探索之路上走得更稳、更远。说实话,想在这几个领域里“门儿清”,靠一个网站是肯定不够的。机器学习、深度学习和人工智能,虽然紧密相连,但它们各自的侧重点和.............
  • 回答
    2021年,深度学习在多个应用领域都取得了令人瞩目的实质性进展,这些进步不仅仅是算法的微调,更是催生了许多突破性的应用,深刻影响着我们的生活和工作。以下将详细阐述几个关键领域及其进展:1. 自然语言处理(NLP)的质变:从理解到生成再到对话2021年是NLP领域巨变的一年,大型预训练模型的威力得到了.............
  • 回答
    2021年,深度学习领域依然生机勃勃,涌现出许多令人兴奋的新方向。如果你想找一些尚未被彻底“卷”透,并且充满研究潜力的领域,不妨关注以下几个方面:1. 神经符号 AI(NeuroSymbolic AI):弥合连接主义与符号主义的鸿沟 核心思想: 长期以来,深度学习(连接主义)和传统 AI(符号主.............
  • 回答
    确实,我们都听过那句掷地有声的话:“学习改变命运。” 这句话的力量,足以激励无数人在困境中奋起,在迷茫中寻找方向。然而,现实的残酷在于,尽管这句话深入人心,却有相当一部分人,在学习的道路上,最终选择了放弃。这背后的原因,绝不是简单的“懒惰”二字可以概括,而是交织着复杂的心理、环境和生理因素。首先,我.............
  • 回答
    各位朋友,你们好!今天想和大家聊聊“联邦学习”这个话题。我最近接触到这个概念,感觉挺有意思的,想和大家一起探讨探讨,也顺便给自己科普一下。联邦学习是个啥?简单来说,联邦学习就是一种分布式机器学习技术。它解决的核心问题是:如何在不泄露原始数据的前提下,让多个参与方(比如不同的医院、银行、手机厂商等)一.............
  • 回答
    在深度学习工作站中选择AMD CPU,究竟会不会带来一些“问题”,或者说需要注意的地方,这确实是一个值得深入探讨的话题。与其说“有问题”,不如说是在某些特定场景下,AMD CPU的表现和Intel相比,可能会有一些细微的差异,需要我们提前了解和权衡。首先,我们得承认,AMD在近几年进步神速,其Ryz.............
  • 回答
    深度学习科研工作中的实验代码规范、写作技巧以及实验数据管理,是保障研究可复现性、效率和成果质量的关键。这不仅仅是写出能运行的代码,更是要构建一套科学严谨的实验体系。 一、 实验代码规范与写作技巧一个清晰、规范、易于理解和维护的代码库,是深度学习科研的基石。这能让你在繁杂的实验中保持条理,也能让你的合.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有