ArcFace: Additive Angular Margin Loss for Deep Face Recognition 的阅读笔记

ArcFace 的笔记

读的水平有限,欢迎指正,讨论。


Abstract:

 

 This paper 提出了cos(\theta+m)的想法,相比之前的cos(m\theta)和cos\theta-m,ArcFace能够获得更好的区别性比较明显的deep features,

this paper 也强调了网络结构以及数据的refinement在有脸识别领域的重要性,这个网络目前达到了

state-of-art performance in MegaFace。

 

Introduction:

 

DCNN 主要负责经过pose normalisation step,mapping the face image into an embedding feature vector使得相同的人有小的距离不同的人有相当大的距离。

 

基于深度CNN的人脸识别方法主要在下面三个方面有所不同。

1.训练集

The difference of training data also makes some deep face recognition results not fully reproducible.

 

2.网络结构和设置

由于应用场景不同,那么对应的需要的速度和准确度之间的平衡也不同。

比如在手机上,实时的运行速度要重要一些,但是在安全系统里面,准确性和效率同样重要。

 

3.第三就是Loss的设计

目前有下面的几种

3.1:欧氏距离

这方面的基本上是在softmax的基础上加了一些L^2norm的惩罚项,比如Center loss,

Range LOSS,  

是这些联合softmax做分类的方法对运算的要求很高,因为这会随着人的身份数量的上升而爆长。

the contrastive loss 和triplet loss utilise pair training strategy.

但是这里面pairs的选择有些技巧。

3.2: Angular and cosine margin based loss

这里面有L-softmax,SphereFace-loss,,,,关于这一块儿他们之间的差异和比较我打算写一篇详细地总结。

 

 

History:

1.Softmax:

其中xi(d维)是第i个样本(属于第yi类的)的deep feature,这里的维数设置的是512,Wj也是d维,代表fc层的权重矩阵W(d*n)维的第j列。b 是n维的是bias项,bitch_size = m , classnum = n

 

2.Weights Normalisation

为了简单,让bias=0,

然后target logit就可以写成

,然后由L2normlisation,使得predictions 仅仅depend on the angle between feature vector and weight.

,即有下面的式子

 

注意,在SphereFace的实验中,L2 weight normaliszation提升地不是特别多。

 

3.Multiplicative Angular Margin.

In SphereFace ,angular margin m是按下式定义的,

 

但是这时候\theta是有范围的,为了去掉这个限制,做了一个推广,即函数的延拓,最终SphereFace是按下式:

其中m是整数且不小于1,m 控制着angular margin.

但是在实际实现的时候,SphereFace是和Softmax一起用的来保证网络的收敛,并且这个权是由一个lamda控制的

即由

变成

其中lambda是个超参数来帮助SpherFace的训练.从1000降到5.

 

4.Feature Normalisation

Feature Normalisation用的很多,比如在L2-NORMALISED和cosine distance里面都用到了。

Parde注意到使用softmax loss 学习到的feature的l2-norm和人脸的质量有关系,越模糊角度越大l2norm越低。

 

Wang 指出当从低质量的脸的feature norm非常小的时候,gradient‘s norm 可能非常地大。这会增加梯度blow up的风险。

L2-normalisation是非常重要的一步对于hypershere metric learning, 直观的解释是remove the radial variation and push every feature to distribute on a hypersphere manifold.

 

 在这篇paper中,fix \|xi\| =s, 并且使用s=64.

 

当feature normalisation 用到SphereFace上的时候,the feature normalised SphereFace 是

5.Additive Cosine Margin

the cosine margin loss :

相比较Additive Cosine Margin 和Multiplicative Angular Margin(SphereFace) , ArcFace 中的Additive angluar Margin有下面的三个优势:

(1):easy to implement without tricky hyper-parameters

(2) : more clear and able to converge without the Softmax supervision

(3) : obvious performance improvement

 

下面主要讲解本文中的Additive Angular Margin

 

6.Additive Angular Margin

尽管cosine margin 从angluar space 到cosine space 有一个一一对应,但是两个magins之间仍然有差别,实际上角度的margin有一个更加清晰的几何上的解释,因为角度对应的是弧长距离。

 

原文还给了一个图来作几何上的解释,

 

各种loss在二分类下的比较:

Based on the weights and features normalisation, 他们之间主要的差别就是在哪里放margin --m.

 

画出来的图如下

 

画图的方法是基于上面的表格,把两个theta对调之后可得到另外一条线。

从图中可以看出同样是theta作为坐标刻度的时候,SphereFace和ArcFace的差别很大,本质上二者的差别就是m起的作用不同,一个起的是斜率,一个起的是截距,那如果把二者整合到一块儿,会是什么情况,即

如果考虑

cos(m1 \theta  +m2)

的话那就是相当于是包含了上面的SphereFace 和ArcFace.那么当m1, m2在动的时候的最好的情况肯定不会低于Sphere和ArcFace的。

但是实际上他们在github上提了这种情况,可以三个参数一起调。

 

2.8 Target Logit Analysis

为了研究为什么人脸识别的表现能够被SphereFace, ConsineFace, ArcFace提升,他们分析了在训练时target logit 随着角度的分布曲线.

 

 

For SphereFace, 最佳的设定是m =4, \lambda = 5, 这时候和m=1.5, \lambda=0的曲线很接近,但是SphereFace的实现要求m 为整数,但是试试m=2, \lambda=0时,网络又不能收敛了。

所以从softmax少量减小target logit curve 会使训练难度加大,但是会提升performance,但是减的太多的话会导致网络发散。

 

CosineFace 和ArcFace都符合这种观察,从图像上可以看出,Cosine的曲线基本上是从softmax沿y轴负方向却向下平移得到的,而ArcFace的曲线基本上是从softmax沿x轴负方向,即向左平移得到的。这两种移动,都是使得比原来的softmax对应的target logit curve低了。

(从上段的解释,可以理解成(personal):是因为他们的loss设定,使得target-logit-curve变低了,所以使得performance更好了。)

 

从图上还能够看出,ArcFace(m=0.5时)并不是monotonic的,但是从下图(训练时theta的分布)

 

可以看出theta满足Gaussian分布,而且最大的角度也没有超过105,而上面不monotonic的地方大约在150+,所以不用担心这一点。

另外上面这个图画的在训练时的三个状态下(start, middle, end)所对应的角度的分布。

从target-logit-curve上可以看出,在30到90度之间ArcFace对应的target-ogit-cruve要比Cos对应的要低,这说明在这个角度段内,ArcFace做的margin 惩罚要比Cos多。

 

另外从下图

也可以看出,在刚开始训练时,ArcFace的margin要重一些,因为它的图像低。而接近结束的时候,ArcFace的收敛要比Cos的要好一些,因为从上面的theta分布图中可以看出,此时Arcface对应在的theta在左边一些,并且从上图可以看出,此时的ArcFace对应的Target-logit要高一些。并且从theta的分布图中可以看出,在接近结束训练时的角度都没超过60度,超过这个范围的是hardest samples 和训练中的noise samples.

尽管在角度小于30的时候,Cos的margin要更强一些(从最初的图可以看出来),但是这个范围很少达到,即便是在训练快结束的时候,

从这个角度也可以明白为什么在这个范围内的时候,即便是比较小的Margin,SphereFace也能达到比较好的表现(看图a中的m=2,要比m=4的要低),(这一点不明白,下面是自己的理解。)

原因就是在这个范围内的时候,整个训练的过程中,角度很少落在这个范围。或许是这样:这时候较小的margin 意味着theta的范围可以更大(因为Sphere是cos( m\theta), 并考虑m\theta不变)

 

 

Experiments.

1.training data: VGG2     MS-Celeb-1M

VGG2的训练集有  3141890 imgs, 8631  identities.

         测试集有 169396  imgs,   500 identites.

 

因为vgg2的图的质量比较高,所以不需要data refinement.(提纯)

 

 

MS-Celeb-1M:

原始的Ms-celeb-1M有  大约10万identities,   1000万imgs, 为了减小noise,获得高质量的训练集,他们把每一个人的图片按照到identity centere的距离排了个顺序,如果某个人的某张图的feature vector与它的identity center太远了的话就舍弃。

 

 

2. Validation data

LFW

CFP, 这个数据集,有500个subjects, 每一个都有10 frontal(正面的) 和4 profile(轮廓的)

evolution有两种方式,即FF和FP,每一个都有10 folders, 包括,350 same-person, 350 different-person pairs.

在这个里面他们仅用了CFP-FP,因为这个最具挑战性。。。

 

AgeDB: 这里面的每一个图都有identity, age, gender。

age 的范围是从3到101,平均年龄是49

有四组test data 分别是5 years old, 10, 20, 30, 

每个组有10个split of face images 并且,每个contains 300 positive 和300 negative

the face verification evalution metric 和LFW是一样的。

这里仅仅用了AgeDb-30的,因为这个最具挑战性。

 

3. Test data.

 

 

3.4 MegaFace Challenge1 on FaceScrub

为了strictly follow megaface的评价指示,需要从training data MS1M中remove 那些出现也出现在FaceScrub 数据集中的imgs.

他们计算了在refined MS1M 和FaceScrub中的每个人的feature centre,

发现在refined MS1M中有578个人和FaceScrub dataset中的一些人的距离非常接近(但是也可能不是同一个人)

然后他们就把这578个从MS1M中去掉了。

 

 

 

 


猜你喜欢

转载自blog.csdn.net/qfpkzheng/article/details/80381672