数据增强技术人为地生成真实数据集的不同版本以增加其规模。计算机视觉和自然语言处理(NLP)模型使用数据增强策略来处理数据稀缺和数据多样性不足的问题。
以数据为中心的AI/ML开发实践,如数据扩充,可以提高机器学习模型的准确性。根据一项实验,在图像分类任务中,经过图像增强的深度学习模型在训练损失(即对错误预测的惩罚)和准确性以及验证损失和准确性方面比没有增强的深度学习模型表现得更好。
计算机视觉中的数据增强技术
对图像有几何和颜色空间的增强方法,以在模型中创建图像多样性。从开放源码库和相关文章中很容易找到许多关于这些增强变换的编码例子。
添加噪点
对于模糊的图像,在图像上添加噪点可能是有用的。通过 “盐和胡椒的噪点”,图像看起来像由白色和黑色的点组成。
为图像添加噪点(soruce: medıum)
裁剪
选择图像的一个部分,进行裁剪,然后调整到原始图像的大小。
喵星人图片各种裁剪(Source: Github)
翻转
图像在水平和垂直方向上被翻转。翻转会重新排列像素,同时保护图像的特征。垂直翻转对某些照片没有意义,但它在宇宙学或微观照片中可能很有用。
1. 原始图像 – 2. 水平翻转 – 3.垂直翻转(Source: MEDIUM)
旋转
图像被旋转了0-360度。每个旋转的图像在模型中都是独一无二的。
凤梨不同旋转角度图像(Source: Medium)
缩放
图像被向外和向内缩放。通过缩放,新图像中的一个物体可以比原始图像中的物体更小或更大。
车厘子缩放照片(Source: Medium)
Translation
图像沿着X轴或Y轴被迁移到不同的区域,所以神经网络在图像中到处寻找,以捕获它。
图像迁移(Source:KDnuggets)
亮度
图像的亮度被改变,新的图像将变得更暗或更亮。这种技术允许模型在不同的照明水平下识别图像。
不同亮度的相同照片(Source: Tensorflow.org)
对比度
图像的对比度被改变,新的图像将在亮度和颜色方面有所不同。下面这张图片的对比度是随机改变的。
不同对比度同一花卉照片(Source: Tensorflow.org)
颜色增强
图像的颜色是由新的像素值改变的。这里有一个灰度图像的例子。
增强图片颜色(Source: Tensorflow.org)
饱和度
饱和度是指图像中颜色的深度或强度。下面的图像是用数据增强的方法进行饱和的。
改变图片颜色饱和度(Source: Tensorflow.org)
自然语言模型中的数据增强技术
数据增强技术适用于字符、单词和文本层面。
简易数据增强(EDA)方法
EDA方法包括简单的文本转换,例如,从句子中随机选择一个词,用这个词的一个同义词代替,或者选择两个词,在句子中互换。NLP处理中的EDA技术例子有
- 同义词替换
- 文本替换(基于规则、基于ML、基于掩码等)。
- 随机插入
- 随机互换
- 随机删除
- 词和句子的洗牌
逆向翻译
一个句子被翻译成一种语言,然后用原语言再次翻译新的句子。因此,不同的句子被创造出来。
Source: Medium
文本生成
生成式对抗网络(GAN)被训练来生成几个字的文本。
Source: Medium
开发人员可以通过对网络数据进行训练来优化自然语言模型,这些数据包含大量的人类语音、语言、句法和情感。
音频数据增强技术
音频数据增强方法包括裁剪掉一部分数据、注入噪音、转移时间、速度调整改变音调、混合背景噪音和掩盖频率。
Source: Github
高级数据增强技术
高级数据增强方法通常用于深度学习领域。这些技术中的一些是
- 对抗性训练
- 神经风格转移
- 基于生成对抗网络(GANs)的扩增
更多信息,请随时阅读我们关于深度学习和合成数据GANs的文章。
数据增强库
有一些供开发人员使用的库,如Albumentations、Augmentor、Imgaug、nlpaug、NLTK和spaCy。这些库包括几何变换和色彩空间变换功能、内核过滤器(即用于锐化和模糊的图像处理功能)和其他文本变换。数据增强库使用不同的深度学习框架,例如,Keras、MxNet、PyTorch和TensorFlow。