目录
- 1. 数据增强简介
- 2. 如何进行数据增强
-
- 2.1 离线增强
- 2.2 在线增强
- 3. 图像中的数据增强
-
- 3.1 裁剪(Cropping)
- 3.2 翻转变换(Flipping)
- 3.3 旋转 | 反射变换(Rotation/Reflection)
- 3.4 颜色变换(Color Space)
- 3.5 几何变换(Geometric Transformations)
- 3.6 噪声注入(Noise Injection)
- 3.7 移动(Translation)
- 3.8 随机擦除(Random Erasing)
- 3.9 内核过滤器(Kernel Filters)
- 3.10 混合图像(Mix)
- 3.11 缩放变换(Zoom)
- 3.12 特征空间增强(Feature Space Augmentation)
- 3.13 对抗生成(Adversarial Training)
- 3.14 基于GAN的数据增强(GAN-based Data Augmentation)
- 3.15 神经风格转换(Neural Style Transfer)
- 3.16 元学习数据增强 (Meta learning Data Augmentations)
- 4. 自然语言处理数据增强
-
- 4.1 同义词词典(Thesaurus)
- 4.2 随机插入(Randomly Insert)
- 4.3 随机交换(Randomly Swap)
- 4.4 随机删除(Randomly Delete)
- 4.5 语法树结构替换
- 4.6 加噪(NoiseMix)
- 4.7 情境增强(Contextual Augmentation)
- 4.8 生成对抗网络
- 4.9 回译技术(Back Translation)
- 4.10 扩句-缩句-句法
- 4.11 无监督数据扩增(Unsupervised Data Augmentation)
- 5. 小结
- 6. 参考文献
1. 数据增强简介
数据增强是扩充数据样本规模的一种有效地方法。深度学习是基于大数据的一种方法,我们当前希望数据的规模越大、质量越高越好。模型才能够有着更好的泛化能力,然而实际采集数据的时候,往往很难覆盖掉全部的场景,比如:对于光照条件,在采集图像数据时,我们很难控制光线的比例,因此在训练模型的时候,就需要加入光照变化方面的数据增强。再有一方面就是数据的获取也需要大量的成本,如果能够自动化的生成各种训练数据,就能做到更好的开源节流。2. 如何进行数据增强
数据增强可以分为两类,一类是离线增强,一类是在线增强。2.1 离线增强
直接对数据集进行处理,数据的数目会变成增强因子 x 原数据集的数目 ,这种方法常常用于数据集很小的时候。2.2 在线增强
这种增强的方法用于,获得 batch 数据之后,然后对这个 batch 的数据进行增强,如旋转、平移、翻折等相应的变化,由于有些数据集不能接受线性级别的增长,这种方法常用于大的数据集,很多机器学习框架已经支持了这种数据增强方式,并且可以使用 GPU 优化计算。3. 图像中的数据增强 基于图像中的数据增强,本文参照下面这种分类方式来进行讲解:
文章图片
3.1 裁剪(Cropping)
分统一裁剪和随机裁剪。统一裁剪将不同尺寸的图像裁剪至设定大小,随机裁剪类似translation,不同之处在于translation保留原图尺寸而裁剪会降低尺寸。裁剪要注意不要丢失重要信息以至于改变图像标签。3.2 翻转变换(Flipping)
通常是关于水平或者竖直的轴进行图像翻转操作(一般都是水平方向翻转而少用垂直方向,即镜像变换),这种扩充是最容易实现的扩充,图像数据集上证实有用(CIFAR-10,ImageNet等),但无法应用在文本识别数据集(MNIST,SVHN等)3.3 旋转 | 反射变换(Rotation/Reflection)
选择一个角度,左右旋转图像,可以改变图像内容朝向。关于旋转角度需要慎重考虑,角度太大或者太小都不合适。以MNIST为例,轻微旋转(例如1°-20°)可能有用,再往后增加时数据标签可能不再保留。3.4 颜色变换(Color Space)
图片在输入计算机之前,通常会被编码为张量(高度×宽度×颜色通道),所以可以在色彩通道空间进行数据增强,比如将某种颜色通道关闭,或者改变亮度值。简单做法是隔离单个色彩通道,例如R,G或B,此外可以通过简单的矩阵运算以增加或减少图像的亮度。更高级的做法从颜色直方图着手,更改这些直方图中的强度值(想到了图像处理中的直方图均衡)。3.5 几何变换(Geometric Transformations)
由于训练集与测试集合中可能存在潜在的位置偏差,使得模型在测试集中很难达到训练集中的效果,几何变换可以有效地克服训练数据中存在的位置偏差,而且易于实现,许多图像处理库都包含这个功能。3.6 噪声注入(Noise Injection)
从高斯分布中采样出的随机值矩阵加入到图像的RGB像素中,通过向图像添加噪点可以帮助CNN学习更强大的功能。简而言之就是:添加高斯分布的随机矩阵。3.7 移动(Translation)
向左,向右,向上或向下移动图像可以避免数据中的位置偏差,比如在人脸识别数据集合中,如果所有图像都居中,使用这种数据增强方法可以避免可能出现的位置偏差导致的错误。3.8 随机擦除(Random Erasing)
随机擦除是Zhong[1]等人开发的数据增强技术。他们受到Dropout机制的启发,随机选取图片中的一部分,将这部分图片删除,这项技术可以提高模型在图片被部分遮挡的情况下性能,除此之外还可以确保网络关注整个图像,而不只是其中的一部分。3.9 内核过滤器(Kernel Filters)
内核滤镜是在图像处理中一种非常流行的技术,比如锐化和模糊。将特定功能的内核滤镜与图像进行卷积操作,就可以得到增强后的数据。直观上,数据增强生成的图像可能会使得模型面对这种类型的图像具有更高的鲁棒性。3.10 混合图像(Mix)
通过平均图像像素值将图像混合在一起是一种非常违反直觉的数据增强方法。对于人来说,混合图像生成的数据似乎没有意义。虽然这种方法缺乏可解释性,但是作为一种简单有效的数据增强算法,有一系列的工作进行相关的研究。Inoue[2]在图像每个像素点混合像素值来混合图像,Summers和Dinneen[3]又尝试以非线性的方法来混合图像,Takahashi和Matsubara[4]通过随机图像裁剪和拼接来混合图像,以及后来的mixup方法均取得了不错的成果。3.11 缩放变换(Zoom)
图像按照一定的比例进行放大和缩小并不改变图像中的内容,可以增加模型的泛化性能。3.12 特征空间增强(Feature Space Augmentation)
神经网络可以将图像这种高维向量映射为低维向量,之前讨论的所有图像数据增强方法都应用于输入空间中的图像。现在可以在特征空间进行数据增强操作,例如:SMOTE算法,它是一种流行的增强方法,通过将k个最近的邻居合并以形成新实例来缓解类不平衡问题。3.13 对抗生成(Adversarial Training)
对抗攻击表明,图像表示的健壮性远不及预期的健壮性,Moosavi-Dezfooli等人充分证明了这一点。对抗生成可以改善学习的决策边界中的薄弱环节,提高模型的鲁棒性。3.14 基于GAN的数据增强(GAN-based Data Augmentation)
使用 GAN 生成模型来生成更多的数据,可用作解决类别不平衡问题的过采样技术。3.15 神经风格转换(Neural Style Transfer)
神经风格迁移可以在保留原始内容的同时将一个图像的样式转移到另一个图像上,对于数据增强,这点类似于色彩空间照明转换。 神经风格迁移扩展了照明的变化范围,并且还可以编码不同的纹理和艺术风格。可以防止模型过拟合。3.16 元学习数据增强 (Meta learning Data Augmentations)
神经增强(Neural augmentation):同一类中获取两个随机图像,前置的增强网络通过5层CNN将它们映射为新图像,然后通过神经风格迁移用另一个随机图像进行变换,接着输入到分类模型中。该网络学习不同图像之间的内容和样式图像以及CNN中图像之间映射的最佳权重。
智能增强(Smart Augmentation):与上述方法类似,但图像的组合是专门从前置CNN的学习参数中得出。两个网络Network-A和Network-B,网络A为增强网络,吸收两个或更多输入图像并将它们映射到一个或多个新图像中以训练网络B,网络B对误差反向传播以更新网络A。
自动增强(AutoAugment):这是一种强化学习算法,可在一组杂乱的几何变换的受限集合中搜索最佳的增强策略。在强化学习算法中,策略决定了在给定的状态下采取什么行动来实现某个目标。此方法学习一个由许多子策略组成的策略,每个子策略都包含一个图像变换和变换幅度。4. 自然语言处理数据增强 4.1 同义词词典(Thesaurus)
Zhang Xiang等人提出了Character-level Convolutional Networks for Text Classification,通过实验,他们发现可以将单词替换为它的同义词进行数据增强,这种同义词替换的方法可以在很短的时间内生成大量的数据。4.2 随机插入(Randomly Insert)
随机选择一个单词,选择它的一个同义词,插入原句子中的随机位置,举一个例子:“我爱中国” —> “喜欢我爱中国”。4.3 随机交换(Randomly Swap)
随机选择一对单词,交换位置。4.4 随机删除(Randomly Delete)
随机删除句子中的单词。4.5 语法树结构替换
通过语法树结构,精准地替换单词。4.6 加噪(NoiseMix)
类似于图像领域的加噪,NoiseMix提供9种单词级别和2种句子级别的扰动来生成更多的句子,例如:这是一本很棒的书,但是他们的运送太慢了。->这是本很棒的书,但是运送太慢了。4.7 情境增强(Contextual Augmentation)
这种数据增强算法是用于文本分类任务的独立于域的数据扩充。通过用标签条件的双向语言模型预测的其他单词替换单词,可以增强监督数据集中的文本。4.8 生成对抗网络
利用生成对抗网络的方法来生成和原数据同分布的数据,来制造更多的数据。在自然语言处理领域,有很多关于生成对抗网络的工作:4.9 回译技术(Back Translation)
Generating Text via Adversarial Training
GANS for Sequences of Discrete Elements with the Gumbel-softmax Distribution
SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
回译技术是NLP在机器翻译中经常使用的一个数据增强的方法。其本质就是快速产生一些翻译结果达到增加数据的目的。回译的方法可以增加文本数据的多样性,相比替换词来说,有时可以改变句法结构等,并保留语义信息。但是,回译的方法产生的数据严重依赖于翻译的质量。4.10 扩句-缩句-句法
先将句子压缩,得到句子的缩写,然后再扩写,通过这种方法生成的句子和原句子具有相似的结构,但是可能会带来语义信息的损失。4.11 无监督数据扩增(Unsupervised Data Augmentation)
通常的数据增强算法都是为有监督任务服务,这个方法是针对无监督学习任务进行数据增强的算法,UDA方法生成无监督数据与原始无监督数据具备分布的一致性,而以前的方法通常只是应用高斯噪声和Dropout噪声(无法保证一致性)。5. 小结
【论文笔记|深度学习-数据增强总结】以上内容通过网上收集以及其他作者总结的本人汇总到这里的,里面有总结不好的请在评论区反馈,看到了我会及时更新。6. 参考文献 1.Zhong, Z., Zheng, L., Kang, G., Li, S., & Yang, Y. (2017). Random erasing data augmentation. arXiv preprint arXiv:1708.04896
2.Inoue, H. (2018). Data augmentation by pairing samples for images classification. arXiv preprint arXiv:1801.02929.
3.Summers, C., & Dinneen, M. J. (2019, January). Improved mixed-example data augmentation. In 2019 IEEE Winter Conference on Applications of Computer Vision (WACV) (pp. 1262-1270). IEEE.
4. Takahashi, R., Matsubara, T., & Uehara, K. (2019). Data augmentation using random image cropping and patching for deep CNNs. IEEE Transactions on Circuits and Systems for Video Technology.
5. A survey on Image Data Augmentation for Deep Learning
推荐阅读
- 论文阅读(弱光图像的增强|LIME: Low-light image enhancement via illumination map estimation TIP 2017阅读记录)
- 数学建模|预测——马尔可夫链
- tensorflow|四. softmax多分类
- Keras|五 softmax多分类实例
- 开源硬件|ROC-RK3568-PC四核64位开源主板
- Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
- 机器学习|无源域适应(SFDA)方向的领域探究和论文复现(第二部分)
- opencv|【opencv】error: (-215:Assertion failed) ssize.empty() in function ‘cv::resize‘报错原因
- 深度学习|深度学习-视频行为识别(论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos))