目录
数据增强是什么
为什么数据增强
数组增强分类
有监督数据增强
无监督数据增强
数据增强是什么
数据增强又称数据扩增,是一种通过应用合理且随机的变换(例如图像位移、旋转)来增加训练集多样性的技术。让有限的数据产生等价于更多数据的价值,并避免不相关性特征。
例如针对车型识别模型,合理随机变换同车型/不同车型图片的主体大小、位置、视角、色彩等不相关特征,避免特征提取的不相关倾向性,但不接受垂直飞天侧身超高曝汽车图片。
为什么数据增强
一方面大部分实际项目难以获得充足的数据,需要充分利用已有数据进行数据增强。另一方面,卷积神经网络需要提取合理而有效的特征,而非集中不相关特征。
例如针对鸟类识别模型,原数据集中A品种和B品种鸟类占比各50%,羽毛颜色为两类品种的不相关特征,但受限数据获取难度,原数据集中A品种鸟均体现蓝色,B品种鸟均体现红色,使用颜色变换随机扩充各品种颜色比例至50%左右,可以有效避免提取颜色为显著特征。
数组增强分类
数据增强可以分为,有监督数据增强和无监督数据增强。
有监督数据增强
有监督数据增强还可以分为单样本数据增强和多样本数据增强。
- 单样本数据增强:增强一个样本时,完全围绕样本本身进行操作,如几何变换、颜色变换等。
- 多样本数据增强:利用多个样本来产生新的样本,如SMOTE合成少数过采样,SamplePairing样本配对,mixup混合线性插值等
简单集合变换进行增强示例:
train_transformer = transforms.Compose([ # 随机水平翻转,翻转概率为0.5 transforms.RandomHorizontalFlip(p=0.5), # 随机垂直翻转,翻转概率为0.5 transforms.RandomVerticalFlip(p=0.5), transforms.ToTensor(), transforms.Normalize([meanR, meanG, meanB], [stdR, stdG, stdB])])
无监督数据增强
无监督数据增强还可以分为随机生成扩增和学习策略增强。
- 随机生成扩增:学习数据分布,随机生成与分布一致的图片,例如GAN生成对抗网络。
- 学习策略增强:通过模型学习出适合任务的数据增强策略,例如AutoAugment自动增强。
GAN(generative adversarial networks)包含两个网络,生成网络和对抗网络:
- 生成网络接收随机噪声z,通过噪声生成图片,记做G(z) 。
- 对抗网络判别图片是否由G生成的,训练好的生成网络能生成以假乱真的图片。
AutoAugment是Google提出的自动选择最优数据增强方案的研究,使用增强学习从数据本身寻找最佳图像变换策略,针对不同的任务学习出不同的增强方法,核心思想:
- 准备16个常用的数据增强操作。
- 选择n个操作,随机产生使用概率和幅度,称为一个sub-policy,共产生5个sub-policy。
- 训练过程每一个batch的图片随机采用5个sub-policy操作中的一种。