一 写在前面
未经允许,不得转载,谢谢~~~
好久不更+1,算是很长一段时间丢掉了记录blog的习惯,打算慢慢把写作和记录捡起来。
今天分享的文章是关于data augmentation的,是基于mixup方法的优化方法。
主要信息:
- title: SmoothMix: a Simple Yet Effective Data Augmentation to Train Robust Classifiers
- 出处:CVPR workshop 2020
二 主要内容
首先data augmentation对于我们神经网络的重要性应该不需要过多描述了,几乎每个DNN里都需要用到,
- 数据增强方法对于缓解模型的过拟合问题有非常大的帮助;
- 数据增强方法可以跟其他的方法,例如dropout,BN,pretrain,transfer learning都可以很好的进行补充;
其中作者提到一个regional dropout based methods(可以理解为通过dropout掉其中的某些区域进行增强,可以参照CutMix)的方法虽然可以提升模型的生成泛化能力,但是会因为被dropout区域出现剧烈的像素变化而导致‘strong-edge’问题的出现。
怎么理解这里的‘strong-edge’问题呢?
第一排是在原图的基础上加上框线遮挡的效果图;
第二排是原始未经遮挡的图片得到的CAM图,可以发现网络的注意力基本都是在图片中比较关键的区域;
第三排是用第一排的遮挡图得到的CAM图,可以看到网络的注意力这个时候被吸引到了遮挡框在的位置,这里就是文章中提出的‘strong-edge’问题,即由于图像像素在边缘区域发生剧烈的变换导致网络的注意力会被吸引过去。
第四排是这篇文章针对该问题进行优化后训练出来的网络,同样对遮挡图作为输入进行测试的结果,可以发现注意力基本恢复正常。
三 方法
方法部分其实很简单,首先简单介绍一下mixup。
3.1 mixup methods overview
mixup这一类的方式在我看来都是比较简单有效的data augmentation方法。
不了解的可以按照翻一翻mixup、manifold mixup, cutmix这几个经典的方法,就会发现他们的基本思想和做法都大同小异。
以mixup为例,给定图像与,以及他们对应的类别标签, , mixup的操作如下:
- mixup图片
, - mixup label
这样就得到了新的以及对应的, 这里的是服从beta分布,随机生成的。
manifold mixup的主要特点在于不同于mixup对image-level进行操作,而是改成feature-level;
而CutMix的主要特点在于不同于mixup对整张图进行mixup,而是改成用bounding box,对bounding box内的区域进行操作。
3.2 Soft-edge SmoothMix
我们上面提到的CutMix就属于典型的‘regional dropout based methods‘方法,因此文章针对这类bounding box边界过于明显的问题进行优化。
方法伪代码如下:
可以看到跟我们之前介绍的方法比起来唯一的不同就是在对图片做混合的时候不再是使用单一的, 而是用上了mask G。
mask G共有两种形状:正方形和圆形,但是重点在于他们的边界都是平滑过度的,可以看看下面这张图:
可以看到做到左边都是边界清晰的,但是smoothMix是平滑的。
mask的具体实现方式也很简单,公式就不再这里贴了。
四 写在最后
简单地看了一下实验结果,发现从acc定量结果来看,相比于CutMix算法没有明显的提升。
具体有没有可能还需要大家自己判断一下惹。
先写到这里~