这篇博客,就来聊一聊数据增强的方式,数据增强是为了在小数据集上增加网络的泛化性能。
增强方法
具体的综述有下里面几篇文章
1、A survey on Image Data Augmentation 数据增强文献综述
本文将数据增强方式分成了Basic的和DeepLearning的。DeepLearning中的典型代表就是GAN,但对于一般的应用,目前还是Basic的方式用的比较多。
比较重要的是,作者放出了一张结果图,如下
2、一文道尽深度学习中的数据增强方法(上)
本文也主要讲的是一些Basic的方法,其中,本文还比较详细地介绍了一下多样本合成类的方法,包括:
- SMOTE
- SamplePairing
- mixup
3、一文道尽深度学习中的数据增强方法(下)
主要是讲一些无监督的方法,典型代表也是GAN,但这类方法复杂,目前还处于研究中。
工具包
1、Albumentations
优势在于:
- Easy integration with PyTorch.
- Easy transfer from torchvision.
- Was used to get top results in many DL competitions at Kaggle, topcoder, CVPR, MICCAI.
将工具分为Pixel-level transforms和Spatial-level transforms,包含所有的Basic Image Manipulation的方法。
2、imageaug
也是包含基本所有的Basic Image Manipulation的方法。但似乎没有上一个工具包厉害
3、Mixup的代码实现
https://github.com/tengshaofeng/ResidualAttentionNetwork-pytorch/blob/master/Residual-Attention-Network/train_mixup.py
https://github.com/dmlc/gluon-cv/blob/49be01910a8e8424b017ed3df65c4928fc918c67/gluoncv/data/mixup/detection.py
https://github.com/hongyi-zhang
这里再放一个对Mixup的解释:https://blog.csdn.net/u013841196/article/details/81049968
4、SamplePairing
没有找到比较好的代码实现,但其实其思想非常简单。有人认为mixup是更高级的SamplePairing,这里放一个对SamplePairing的解释吧。
https://zhuanlan.zhihu.com/p/33040763
注意事项
有些需要注意的地方,我看到了会在此更新。
1、看到SamplePairing是需要禁用和启用循环的,例如禁用8个epoch,启用2个这样子,我觉得mixup也可以。甚至是等原始数据集收敛之后,再加入mixup等