【深度学习】数据增强

这篇博客,就来聊一聊数据增强的方式,数据增强是为了在小数据集上增加网络的泛化性能。

增强方法

具体的综述有下里面几篇文章

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等