本文是对Margin based Softmax Loss的改进。主要针对人脸数据集类别不平衡的问题,以及难类别/难样本的挖掘,让训练过程变得高效。
一、针对的问题
-
SOTA Margin based Softmax Loss都有一个前提假设:即所有的类别都有足够多的样本来描述该类别的分布,因此一个预设的常量margin就足以缩小每一个类别的类内差异。实际上人脸数据集的样本很不平衡,类别的样本数量之间有很大差异。
以下是三个数据集的类别分布图,反映了上述问题:
-
大规模数据集中存在大量的类别和样本,选择有价值的类别和样本可以使训练过程更加高效。
二、三个创新点
3. Adaptive Margin Softmax:
为每个类别学习一个特定的margin,自适应地调整改类别的类内差异
(1)问题描述:
- 现有的Margin based Softmax Loss可以达到减小类内方差,扩大类间间隔的效果,但是它们没有考虑到样本不均衡的问题。
- 对于样本少的类别,它们只能反映该类别的局部分布。对它加上固定不变的margin,类内差异的压缩效果就不如样本多的类别好。
- 因此,本文考虑了样本不均衡的问题,让margin能够根据不同类别而自适应地去学习出来。使样本少的类别对应的margin大一些。
- margin 的作用是在角度空间中增大不同类别的间隔,解决“类内差异大,类间间隔小”的问题
(2)固定margin 和 自适应margin 的效果:
说明: 对样本数量少的类别,要学习出一个更大一些的margin,才能使其潜在的样本分布更加紧凑
(3)CosFace Loss(margin值是固定不变的):
(4)Adaptive Margin Loss(margin值变为可学习、自适应的参数):
另外对所有类别的margins值添加限制:
因此本文的Adaptive Margin Softmax Loss由上述两个部分组成:
(5)与其他Margin based Softmax Loss 的比较:
4. Hard Prototype Mining:
(1)问题描述
难样本挖掘的目的在于从大量的数据样本中找到那些最有价值、最有意义的样本,来参与网络的训练,提高网络的效率和性能。
(2)本文提出
为每一个类别
i
i
i 构建一个ANN Graph,找到与其最相似的K个类别,放到各自的队列
Q
i
Q_i
Qi 中。在当前mini-batch下,找到里面每一个样本对应的类别
C
a
C_a
Ca,再根据各自的
Q
i
Q_i
Qi 找出与
C
a
C_a
Ca 最相似的类
C
b
C_b
Cb,用
C
b
C_b
Cb 的权重
W
W
W 作为当前迭代的权重矩阵进行训练。
5. Adaptive Data Sampling:
(1)问题描述
当网络大致收敛时,大多数的样本都能被正确分类,这种简单的样本对网络训练来说没有什么贡献。因此为了提高网络训练的效率,本文建立一个从分类层到数据层的反馈通道,自适应地选择出有价值的样本,组成mini-batch
(2)本文提出
为每一个样本设定一个采样概率,当该样本被正确分类,传递信号到数据层,降低其采样概率;若被错误分类,则提高其采样概率,增加它参与网络训练的频率。
本文还设定了采样概率的下限
s
m
i
n
s_{min}
smin,避免一些简单样本的采样次数为零
AdaptiveFace 整体框架图:
不同Loss的特征分布图对比:
说明: 由上图可见,对于样本数量少的类别,本文的Adaptive Softmax Loss,能使其样本分布更加紧凑,这样就可以让它的真实样本分布也紧凑了
三、实验
1.Experiment Setting
Face Detection & Landmark Detection : FaceBox
CNN Architecture : LResNet50A-IR
Training Data : MS-Celeb-1M dataset
Evaluation Data : LFW, LFW BLUFR, MegaFace
2.Overall Benchmark Comparisons
On MegaFace :
On LFW and LFW BLUFR :
3.Ablation Study
说明: 上面表格的baseline是CosFace,分别/全部加上本文的三个创新点后,各指标都有提高
四、自己的疑问
- 论文图中对样本数量少的 poor classes 的潜在样本分布是怎么绘制出来的?
- 论文提供的代码链接里没有代码