数据增强(Data Augmentation)系列: SnapMix
作者:Shaoli Huang
发表时间:2020
Paper 原文: SnapMix: Semantically Proportional Mixing for Augmenting Fine-grained Data、
官方开源代码:https://github.com/Shaoli-Huang/SnapMix
SnapMix 是由 Shaoli Huang 等人提出的一种针对细粒度数据增强的方法。论文于 2020 年 12 月 9 日提交到 arXiv 上,可以说是新鲜出炉,并且代码也已经开源,该数据增强方法已经在 kaggle 比赛上被大量使用。
使用 SnapMix 基本能带来1%~2% 的提升,此外 SnapMix 就是一个单纯的数据增强手段,所以对推理速度不会有影响。
论文没有细读,如有不准确的地方,欢迎讨论。
1. 前言
各种 Mix 的数据增强方法已经被大量使用,并且也证明效果不错,比如 Mixup 和 CutMix,但是都是直接从像素层面来进行 Mix,如下图。这种粗犷的增强方式在很多情况下是不合理的。比如对于 CutMix,如果 cut 掉的是很关键的部分,虽然面积很小,但是确是很关键的信息,然后在生成新标签的时候仅仅通过统计被 cut 掉的面积作为权重的话,显然是不合理的。
2. SnapMix
SnapMix 的思想很简单,既然在生成 label 的时候,直接在原图中以被 cut 掉的面积作为权重不合理,那作者就针对这一不合理作出了改进。
既然直接在原图中根据面积生成 label 不合理,作者就提出到 SPM (Semantic Percetage maps) 上计算 label。由于 SPM 上可以体现每个 pix 的对标签的贡献度(semantic relatedness to the corresponding label),这样就比直接看面积来的准确。
具体的,首先计算输入图像的 CAM(Class Activation Mapping),然后对 CAM 归一化得到 SPM,最后借助 SPM 进行标签融合。CAM 计算公式如下。
C A M ( I i ) = Φ ( ∑ l = 0 d ω y i l F l ( I i ) ) CAM(I_i) = \Phi(\sum_{l=0}^{d} \omega^l_{y_i}F_l(I_i) ) CAM(Ii)=