Arcface论文笔记

Arcface论文笔记

arcface是目前最好的人脸识别模型,在公开数据集上已经达到了99.83% 准确率,见下表

avator

从表中其实也可以看出在人脸识别方面,最近的演变就是在loss方面,还有不同的提出margin的方式,至今

cos(ax+b)+c的这种loss已经都被提出了,其中这篇paper对应的是cos(x+m).

即通常的softmax-loss是这样的

avator

那么为了简化的话,考虑bias为0,经过下面的操作之后

avator

就变成了这种样式的

avator

然后在权重向量和feature之间加上angular margin 之后,就变成了

avator

加不加margin其实是有区别的,如下图所示

avator

通常的softmax损失虽然能够对物体做分类,但是中间并没有gap, 但是加了margin的惩罚了之后,就有了gap的效果。

有两个非常关键的问题:

  • 为什么要做normalize?

这里在FeatureIncay那个paper里面说了

avator

softmax 在角度不变的时候是会随特征的模长的增加而降低的,loss降低好像是模型变好了一样,但是实际上并没有让模型变好,所以应该对特征加上一些限制,不能让网络走偏。

  • 为什么要加margin?

刚才也提到了,其实希望在类内紧,类间松,这样类与类之间就区分的比较开,当有新的类进来的时候也能够很好的区分,这是表面上看, 其实margin是一个惩罚项,就像是正则化项强迫模型的参数尽可能多的为0的效果差不多,

avator

就是说,当某个类已经分地到可以判别的时候(可以判别和最优还差很远)。举个例子,如果某个样本与它的类中心的角度小于3度的时候就完全可以认为就是这个类了,不加margin的话,只需要做到比3度小一点点儿就可以分好类了,这时候网络就不需要学习了,但是这时候或许并没有学到极致,还有很大的空间可以学习,但是如果加上一个margin为2的话,那需要与中心的角度小于1度的时候才能够准确的分类,所以加上margin是很有必要的。

那么为什么imagenet里面的时候为什么不对特征做normalize,不加margin呢?人的识别也可以看成是分类的啊。对于分类问题,什么时候需要normalize,什么时候需要加margin呢?

  • 自己的理解

在人脸识别的里面,权重向量是固定长度的,比如1, 而在imagenet的里面并没有对权重向量作固定,所以即便是当角度不变的时候softmax-loss也会随着权向量和特征向量的模长的乘积的增加而变小,但是这个增加并不一定就是特征向量长度的增加,也有可能是权重向量的增加,所以并不一定要对 imageNet里面的作normalize,(或许加了normalize会变好呢)

同样的道理,加了margin之后也并不一定会继续优化角度,而且优化角度并不一定就对分类效果好。 感觉本质的原因是imagenet里的分类标准是由 权重向量的长度,特征向量的长度,以及它们之间的夹角共同决定的,并不是只有角度来决定。 所以没有加Margin.

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦