计算机视觉中的数据增强
在实际工作中有很大一个难题就是收集到足够的数据,而数据就像是燃料,没有足够的数据训练的模型效果不会太好。所以要保证完美完成任务,有两件事必须要做好:
- 寻找更多的数据
- 充分利用已有的数据进行数据增强
本文就来聊聊数据增强的话题。
覆盖主流数据增强算法
https://github.com/aleju/imgaug
数据增强注意事项:
- 在线使用,不要离线生产样本
- 不要过度使用,过多的数据增强可能增加训练难度和事件
- 有些任务某些增强不能做,比如姿态估计中随机反转,旋转
为什么要了解数据增强
Q: 多少数据才能满足项目要求?
- 任务类型有关,越精细任务要求越多(分类 > 检测 > 分割)
- 任务难度 ImageNet(每个类约500个),Place365(每个类约5000个)
- 精度要求有关(学术任务,工业级产品)
Q: 数据增强和泛化能力的关系?
增强模型泛化能力的方法:
- 显示正则化(模型集成,参数正则化等)
- 隐式正则化(数据增强,随机梯度下降等)
Q: 什么是数据增强?
数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。
eg. 分辨率大小为 256x256 的图像,随机裁剪成 224x224 的代销,一张图就可以产生 32x32 张不同的图,数据量将近扩充 1000 倍。
Q: 通过裁剪得到的很多图像相似度很高,那么这样的数据增强有效果么?
操作虽然简单,但是有效果,如果辅助其他数据增强的方法,将获得更好的多样性,这就是数据增强的本质。
常见数据增强的方法
单样本几何变换
翻转,旋转,裁剪,缩放
没有改变图像本身的内容,选择了图像的一部分或者像素的空间重分布
单样本像素内容变换
噪声,模糊,颜色扰动
内容改动大,多样性强
多样本插值 SMOT
Synthetic Minority Over-sampling Technique 方法,近邻样本(Xn,Yn)插值
Sample Pairing
随机抽取两张图片分别经过基础数据增强操作(如随机翻转等)处理后,直接叠加合成一个新的样本,标签为原样本标签中的一种
多样本插值 Mixup
ICLR2018, Facebook 的研究 Mixup,图像和标签都进行线性插值
自动选择数据增强方法
学习已有数据增强操作的组合,不同的任务,需要不同的数据增强操作。
AutoAugmentation 原理
- 从 16 个常用数据增强操作中选择 5 个操作,随机产生使用该操作的概率和相应的幅度,将其称为一个 sub-policy,一共产生 5 个 sub-polices
- 对训练过程中每一个 batch 的图片,随机采用 5 个 sub-polices 操作中的一种
- 通过模型在验证集上的泛化能力来反馈,使用的优化方法是增强学习方法
- 经过 80~100 个 epoch 后网络开始学习到有效的 sub-policies
- 之后串接这 5 个 sub-policies,然后再进行最后的训练
从零制作新的样本
使用生成对抗网络,生成新的样本。
开源框架中的数据增强
- caffe 中数据增强:
- caffe.proto 中增加参数
- Datatransform 中 .cpp 函数实现
- Datatransform 中 .cpp 函数调用
- train.prototxt 中网络配置
- 在 caffe.proto 中增加参数
- TensorFlow 数据增强 —— tf.image API
- pytorch 数据增强 —— torchvision.transforms API
- mxnet 数据增强 —— mxnet.image API
参考文献
[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.