ArcFace

  • Post author:
  • Post category:其他


论文:ArcFace: Additive Angular Margin Loss for Deep Face Recognition

代码:https://github.com/deepinsight/insightface



0 摘要

本文提出了新的监督值:



cos

(

θ

+

m

)

\cos(\theta + m)






cos


(


θ




+








m


)





,在进行权重和特征归一化的基础上最大化角度空间的决策边界。

还强调了使用深度网络进行人脸识别过程中的网络设置和数据修正的重要性。



1 简介

目前已经有大量的基于深度学习的人脸识别模型,这些模型主要有三方面的不同:

  • 训练数据的规模不同:目前常用的人脸识别数据集VGG-Face,VGG-Face2,CAISA-WebFace,UMDFaces,MS-Celeb-1M,MegaFace,图像的规模从几千到数十万不等。虽然MS-Celeb-1M,MegaFace收集的大量人员的人脸图像,但是他们存在标注噪声和长尾效应。作为对比,谷歌的私有人脸数据集包含数百万人员的照片,FRVT比赛的冠军依图科技,用于18亿规模的私有数据集。因为数据集的规模不同,工业界人脸识别产品的性能要好于学术界。由于数据集规模不同,很多深度学习模型的效果无法完全复现。

  • 网络结构及相关参数设置不同:如果使用大的网络(ResNet和Inception-Resnet),效果就要比小网络(VGGNet和Google Inception V1)要好。不同的应用场景需要考虑的产品性能不同,移动式设备上根据关注识别效率,安保场景下更加关注识别精度。

  • 损失函数不同:

    • [1]基于欧式间隔的损失: center loss,Range loss,Marginal loss在类别数很多时占用GPU过多,contrastive loss,triplet loss构建样本对需要很强的策略性;
    • [2]基于角度和余弦间隔的损失:L-softmax提出了



      cos

      (

      m

      θ

      )

      \cos(m\theta)






      cos


      (


      m


      θ


      )





      实现了在角度空间内进行识别,SphereFace(A-Softmax)在其基础上加上了权重归一化,AM-Softmax提出了



      cos

      (

      θ

      )

      m

      \cos(\theta) – m






      cos


      (


      θ


      )













      m





      在余弦空间内进行识别,取得了当下最先进的识别结果。

      相比于欧式空间间隔,角度空间间隔和余弦空间间隔在超平面上增加了判别限制,符合人脸分布在超平面上这一先验知识。

作者认为,数据、网络和损失由高到低的影响识别效果。

本文作者对这三方面分别做了以下工作:

数据:作者修正了最大的人脸公开数据集MS-Celeb-1M,也发现了MegaFace和FaceScrub之间存在数据重复,作者公开了修正后的训练和测试数据;

网络:作者提出的网络对大的姿态和年龄变化具有很好的识别鲁棒性。作者也验证了当前各网络识别效果和效率;

损失:提出了新的损失,additive angular margin,



cos

(

θ

+

m

)

\cos(\theta + m)






cos


(


θ




+








m


)





。对归一化后的权重和特征在角度空间内进行优化以最大化决策边界。新提出的损失比A-softmax和AM-softmax几何含义更加直观,识别效果也更好。

在MegaFace比赛上,ArcFace取得了最好的识别效果。作者开放了所有的数据集、模型和代码。



2 损失函数的演变,从softmax到arcface



2.1 softmax

在这里插入图片描述

softmax用于分类可以,但是它没有最大化同类样本对之间的相似度且最小化不同类样本间的相似度,不适合于人脸识别任务。



2.2 权重归一化

偏置项置0,target logit可以表示成:

在这里插入图片描述

如果设置W的范数为1,那么预测值就取决于特征向量和权重之间的夹角值:

在这里插入图片描述

SphereFace中,证明了权重归一化对识别效果有些微的提升。



2.3 乘积角度margin

SphereFace和L-Softmax中,引入了角度margin m。

在这里插入图片描述

m是大于等于1的整数,用于控制角度间隔的大小。

在训练过程中,为了保证收敛,将上述损失和softmax损失结合使用,使用参数



λ

\lambda






λ





控制两者的比重。

在这里插入图片描述




λ

\lambda






λ





的初始值设置为1000,随着训练的进行逐渐减小。这样刚开始训练的就是softmax loss,后面逐渐加强A-Softmax的比重。但是引入的这个超参数使得训练过程需要很强的技巧性。



2.4 特征归一化

前面的L2-softmax等其他论文已经证明了特征归一化的效果,并且特征的范数也可以用来揭示图像的质量,但是也要防止特征太小时造成梯度爆炸。

从前面的工作中,已经证明了权重和特征归一化的必要性。权重和特征归一化的直观解释是限制变化范围,迫使特征分布在固定半径的超球面上。

按照前面论文的做法,这里作者也是进行了特征归一化,然后再使用系数s进行特征缩放。作者参照L2-Softmax中的s的公式,设置其值为64。

在对sphereface使用特征归一化之后,可以将其损失表示成下式,称作SphereFace-FNorm:

在这里插入图片描述



2.5 Additive Cosine Margin

AM-Softmax中不再使用角度margin,而是使用了余弦margin:



cos

(

θ

)

m

\cos(\theta)-m






cos


(


θ


)













m





。损失函数为:

在这里插入图片描述

按照原作者的实验,m取0.35/0.4时效果最好。

AM-softmax的优点是:

  • 实现上简单,不需要进行超参数调试的技巧;
  • 几何解释更加清楚,训练过程中在不使用softmax监督时也可以很好的收敛;
  • 识别效果也有明显提升。



2.6 Additive Angular Margin

虽然cosine margin一对一映射到了angular margin,但两者仍然存在一定的区别。事实上,相比于cosine margin,angular margin的几何解释更为合理,角度空间上的距离就对应于超球面上的弧度距离。

作者提出了一个新的角度间隔,



cos

(

θ

+

m

)

\cos(\theta + m)






cos


(


θ




+








m


)





,这是因为在



θ

[

0

,

π

m

]

\theta \in [0,\pi – m]






θ













[


0


,




π













m


]





时,



cos

(

θ

+

m

)

\cos(\theta + m)






cos


(


θ




+








m


)





小于



cos

(

θ

)

\cos(\theta)






cos


(


θ


)





。总的损失为:

在这里插入图片描述




cos

(

θ

+

m

)

=

cos

(

θ

)

cos

(

m

)

sin

(

θ

)

sin

(

m

)

\cos(\theta + m) = \cos(\theta)\cos(m) – \sin(\theta)\sin(m)






cos


(


θ




+








m


)




=








cos


(


θ


)




cos


(


m


)













sin


(


θ


)




sin


(


m


)





,相比于Additive Cosine Margin



cos

(

θ

)

m

\cos(\theta) – m






cos


(


θ


)













m





,两者的形式接近,但新提出的arcface的margin能够随着



θ

\theta






θ





动态变化。

在这里插入图片描述

几何解释:不仅要求



cos

(

θ

1

)

>

cos

(

θ

2

)

\cos(\theta_1) > \cos(\theta_2)






cos


(



θ










1


















)




>








cos


(



θ










2


















)





,而且要求



cos

(

θ

1

+

m

)

>

cos

(

θ

2

)

\cos(\theta_1 + m) > \cos(\theta_2)






cos


(



θ










1




















+








m


)




>








cos


(



θ










2


















)





。因为是在角度空间,解释上更加清晰。



2.7 softmax到arcface的公式及决策边界示意图

在这里插入图片描述

补充:在代码实现中,训练模型的过程中,如果是easy margin,则在



θ

[

m

,

π

m

]

\theta \in [-m,\pi – m]






θ













[





m


,




π













m


]





时使用的损失函数还是



cos

(

θ

+

m

)

\cos(\theta + m)






cos


(


θ




+








m


)





,但还提供了另一种模式,在



θ

[

m

,

π

m

]

\theta \in [-m,\pi – m]






θ













[





m


,




π













m


]





使用的损失函数是:



cos

(

θ

)

m

sin

(

m

)

\cos(\theta) – m \sin(m)






cos


(


θ


)













m




sin


(


m


)





个人对于上面式子的理解是,当



θ

[

π

m

,

π

]

\theta \in [\pi – m,\pi]






θ













[


π













m


,




π


]





时,是比较难正确分类的难例样本,那么增加margin的值,就可以迫使模型学习到对难例样本更加正确的分类效果。具体的做法就是用



cos

(

θ

)

m

sin

(

m

)

\cos(\theta) – m \sin(m)






cos


(


θ


)













m




sin


(


m


)





代替



cos

(

θ

+

m

)

\cos(\theta + m)






cos


(


θ




+








m


)









cos

(

θ

+

m

)

(

cos

(

θ

)

m

sin

(

m

)

)

=

cos

(

θ

)

cos

m

sin

(

θ

)

sin

m

cos

(

θ

)

+

m

sin

m

=

cos

(

θ

)

(

cos

m

1

)

+

(

m

sin

(

θ

)

)

sin

m

\cos(\theta + m) – (\cos(\theta) – m \sin(m)) \\ =\cos(\theta) \cos m – \sin(\theta) \sin m -\cos (\theta) + m\sin m \\ = \cos(\theta)(\cos m – 1) + (m-\sin (\theta))\sin m






cos


(


θ




+








m


)













(


cos


(


θ


)













m




sin


(


m


)


)










=








cos


(


θ


)




cos




m













sin


(


θ


)




sin




m













cos


(


θ


)




+








m




sin




m










=








cos


(


θ


)


(


cos




m













1


)




+








(


m













sin


(


θ


)


)




sin




m









θ

[

π

m

,

π

]

\theta \in [\pi – m,\pi]






θ













[


π













m


,




π


]





,第一项大于0,第二项也大于0,所以



cos

(

θ

+

m

)

>

(

cos

(

θ

)

m

sin

(

m

)

)

\cos(\theta + m) > (\cos(\theta) – m \sin(m))






cos


(


θ




+








m


)




>








(


cos


(


θ


)













m




sin


(


m


)


)





,也就是说对于难例样本提出了一个更加严格的要求。这个理解如果有错误,欢迎批评指正。



2.8 Target Logit 分析

为了说明为什么使用sphereface(A-softmax)、cosface(AM-Softmax)和arcface能够改善人脸识别效果,作者分析了训练过程中target logits和



θ

\theta






θ





的变化情况。使用的是LResNet34-IR模型和修正后的MS1M数据集。

在这里插入图片描述

图4(a)是softmax、SphereFace、CosineFace和ArcFace的target logits曲线。对于SphereFace而言,最优设置是m=4,



λ

\lambda






λ





=5,这条曲线和



m

=

1.5

,

λ

=

0

m=1.5,\lambda=0






m




=








1


.


5


,




λ




=








0





很接近。但是,SphereFace要求m是正整数。因此,设置



m

=

2

,

λ

=

0

m=2,\lambda=0






m




=








2


,




λ




=








0





,但是训练却无法收敛。因此,对于softmax稍微减小下target logits会增大训练难度且改善效果,但是减少的太多可能会引起训练过程的发散。从图4(a)中还可以看出,cosineface是把softmax曲线向下移动,而arcface是把softmax曲线向左移动。

对于



m

=

0.5

m=0.5






m




=








0


.


5





的arcface,在



θ

[

0

,

180

°

]

\theta \in [0,180°]






θ













[


0


,




1


8


0


°


]





范围内,target logits曲线在



θ

>

151.35

°

\theta > 151.35°






θ




>








1


5


1


.


3


5


°





之后就开始上升了。但是,如图4©所示,随机初始化时,



θ

\theta






θ





初始值是90°,大部分都位于小于105°,训练过程中角度值也从未达到过150°,因此不需要考虑target logits上升的情况。

在图4(a)中,在



θ

[

30

°

90

°

]

\theta \in [30°,90°]






θ













[


3


0


°





9


0


°


]





时,arcface的取值小于cosineface,因此,在这个区间内,arcface比cosineface限制的更加严格。在图4(b)中,训练开始时,红色曲虚线(arcface)比蓝色虚线(cosineface)更靠下,说明arcface比cosineface的限制更加严格。训练结束时,arcface比cosineface收敛的更好(图4(b)中红色虚线高于蓝色虚线,图4( c )中arcface的



θ

\theta






θ





更靠左)。在图4©中,结束训练时,几乎所有的



θ

\theta






θ





都小于60°,超过60°的都是一些难例样本和训练噪声样本。从图4(a)可以发现,虽然在



θ

\theta






θ





小于30°的区间内,cosineface的限制更加严格,但从图4©中看出,cosineface训练结束时几乎都没有收敛到这个区间。

总之,



θ

[

60

°

,

90

°

]

\theta \in [60°,90°]






θ













[


6


0


°


,




9


0


°


]





这一区间,增加太大的margin可能会导致训练发散,例如m=2,



λ

=

0

\lambda=0






λ




=








0





的sphereface。



θ

[

30

°

,

60

°

]

\theta \in [30°,60°]






θ













[


3


0


°


,




6


0


°


]





这一区间增大margin可以有效的改善识别效果,因为这一区间的样本都是半难例样本。在



θ

[

0

°

,

30

°

]

\theta \in [0°,30°]






θ













[


0


°


,




3


0


°


]





这一区间增大margin不会明显改善识别效果,因为这一区间对应的都是最容易识别的样本。那么查看图4(a)中



θ

[

30

°

,

60

°

]

\theta \in [30°,60°]






θ













[


3


0


°


,




6


0


°


]





这一区间的各条曲线,可以明显的看到softmax、sphereface、cosineface和arcface的性能优劣。注意,这里30°、60°这两个关于难例和容易区分的样例的角度阈值是粗略估计出来的。



3 实验



3.1 数据集



3.1.1 训练数据集

使用VGG2和MS-Celeb-1M数据集做训练数据。

VGG2训练集包含8631个人的3141890幅图像,测试集包含500个人的169396幅图像。VGG2数据集包含大的姿势、年龄、光线、种族、职业变化,但图像质量很好,因此对这个数据集没有进行数据修正,直接使用。

MS-Celeb-1M数据集大约包含10万人的1000万幅图像。为了从这个数据集中筛选出高质量的图像集,作者按照每个人员的每幅图像距离其类别中心的特征距离进行了排序,删除掉距离类别中心太大的图像。然后对剩下的图像中距离接近判定阈值的图像进行了人工筛选。最后保留下来大约8.5万个人的380万幅图像。



3.1.2 验证数据集

使用LFW、CFP和AgeDB作为验证数据集。

LFW:包含5749个人的13233幅图像,包含了大的姿态、表情和光线的变化。遵从“unrestricted with labelled outside data”协议,在6000个人脸对上验证模型的准确率。

CFP:CFP包含500个人,每个人有10幅正面照和4幅侧面照。验证规则有两种,分别是正面-正面、正面-侧面人脸验证,每一种规则都有10个文件夹,每个文件夹中包含350个同一人的图像对和350个不同人的图像对。本文中,作者使用了难度更大的正面-侧面人脸验证集衡量模型性能。

AgeDB:数据存在大的姿态、表情、光线和年龄的变化。包含440个人的12240幅图像。每一幅图像都标注了人员id、年龄和性别信息。最大年龄是101岁,最小年龄是3岁。每个人的平均年龄跨度是49岁。测试数据有四组,分别是5年、10年、20年、30年的年龄跨度。每一组包含10份人脸图像,每一份又包含300个正样本和300个负样本。人脸验证的准则和LFW一致。本文中,作者使用了最优挑战的AgeDB-30子集来验证模型的识别性能。



3.1.3 测试数据集

MegaFace是目前最大的最大的公开测试数据集,用于验证在有百万量级干扰图像的情况下模型的人脸识别性能。MegaFace数据集分为gallary set和prob set两部分。gallary set是yahoo flickr图像的子集,包含超过69万人的100万幅图像。prob set由两个已有数据集facescrub和fgnet组成。其中facescrub包含530个人的10万幅图像,其中55742幅男性图像,52076幅女性图像。FGNet是跨年龄的人脸数据集,包含来自于82个人的1002幅图像。每个人有来自于不同年龄(从1到69)的多幅图像。

Megaface数据集中存在一些重复的图像,会影响识别效果。作者从Facesrub数据集中删除了605幅噪声图像,从MegaFace gallary set中删除了707幅噪声图像。作者公布了这些噪声图像的编号单。



3.2 网络设置

首先基于VGG2数据集和softmax损失来验证不同网络结构的影响。所有的实验都用mxnet完成,batchsize为512,在4/8块Tesla P40上进行训练。学习率初始值为0.1,在100k,140k,160k次迭代时学习率分别衰减为原来的0.1倍。总共训练了200k次迭代。momentum设置为0.9,权重衰减设置为5e-4.



3.2.1 输入设置

使用五个人脸关键点进行相似度变换对齐图像。裁剪图像为112 * 112,减去127.5的均值,除以128进行归一化。

第一个卷积层卷积核大小是 3 * 3,stride = 1,这样设置的网络其名字前标示字母“L”。



3.2.2 输出设置

网络的最后几层进行不同的设置可以影响识别效果。除optionA之外,其他所有设置的输出特征维度都是512维,optionA的输出特征维度取决于其最后全连接层的channel数。

  • optionA:使用全局池化层;
  • optionB:在全局池化层后使用全连接层;
  • optionC:在全局池化层后使用全连接层+BN;
  • optionD:在全局池化层后使用全连接层+BN+PRelu;
  • optionE:在最后一个全连接层之后使用BN+Dropout+FC+BN。

测试时,两个人脸特征的余弦距离用于衡量其相似度。人脸识别任务中就是选择特征最近邻样本,人脸验证任务中就是比较两张人脸图像的相似度和特征阈值的相对大小。



3.2.3 网络块设置

作者设计了一个新的网络块结构,如下图所示,使用了该网络块的网络其名字加后缀IR。

在这里插入图片描述



3.2.4 骨干网络

作者实验了使用MobileNet、Inception-ResNet-V2、DenseNet、SE和DPN进行人脸识别时的效率、准确率和模型尺寸。



3.2.5 网络设置的实验效果


不同输入尺寸的影响

:如果第一个卷积层卷积核大小是 3 * 3,stride = 1,输出尺寸就是7 * 7,网络名字加了前缀“L”;如果第一个卷积层的卷积核大小是 7 * 7,stride = 2,那么输出尺寸就是3 * 3。下表明确看出特征的feature map越大,识别准确率越高。

在这里插入图片描述


不同输出结构的影响

:下班可以看出,optionE的识别准确率更高。optionE中的dropout参数设置为0.4,dropout可以作为正则化项防止过拟合,有效提升模型的人脸识别能力。

在这里插入图片描述

**不同网络块的影响:**下表给出了原始残差块和作者设计的网络块的识别差异。结果也表明作者设计的网络块可以取得更好的识别效果。

在这里插入图片描述


不同骨干网络的影响

:下表给出了在Tesla P40上不同骨干网络模型的识别准确率、效率和模型大小。由于在LFW上的验证准确率已经趋于饱和,因此这里主要是衡量在其余两个数据集上的验证效果。Inception-ResNet-V2的识别效率最好,但模型也最大。MobileNet模型尺寸最小,推理速度最快。但由于这些大型模型ResNet-100,Inception-ResNet-V2,DenseNet,DPN和SE-ResNet-100的识别准确率差异很小,因此考虑到模型的准确率、效率和模型大小,选择LResNet100E-IR完成MegaFace实验。

在这里插入图片描述

不同权重衰减系数的影响

:基于SE-LResNet50E-IR网络,测试不同权重衰减系数的影响。可以看出5e-4的效果最好,所以其他实验中都是使用5e-4的权重衰减系数。

在这里插入图片描述



3.3 损失选择

arcface中间隔m对识别效果也有很大的影响,作者基于LResNetE网络和arcface损失,调整间隔m从0.2变化到0.8进行实验,使用修正后的MS1M数据集进行模型训练。从下表可以看出,随着m从0.2增大到0.5,识别效果也在持续改善,但m大于0.5后再继续增加,识别效果就开始变差。所以这里作者固定间隔m为0.5。

在这里插入图片描述

基于修正后的MS1M数据集和LResNet100E-IR网络,作者实验了使用softmax损失、A-softmax、AM-softmax和arcface时的识别效果的差异。由于LFW上的准确率已经区域饱和,因此主要比较在另外两个数据集上的效果差异。从下表的结果中可以看出:

  1. 相比于softmax,sphereface、cosineface和arcface都明显改善了人脸验证效果,尤其是在存在大的姿态和年龄变化的时候;
  2. cosineface和arcface明显优于sphereface,且更易于实现。cosineface和arcface更易于收敛且不需要使用softmax辅助训练;
  3. arcface比cosineface略好,但如图1所示,其几何可解释性更好。

在这里插入图片描述



3.4 在FaceScrub上进行MegaFace比赛

使用修正后的MS1M数据集,使用LResNet100E-IR网络训练模型,表9和表10分别给出了在原始MegaFace和修正后的MegaFace数据集上人脸验证和识别的效果。

在这里插入图片描述
在表9中,作者使用完整的MS1M数据集训练模型。可以看出,arcface明显效果更好。移除了干扰数据的MegaFace数据集的识别准确率明显提升。

为了严格遵从Megaface的验证准则,我们需要从我们的训练数据集中移除所有FaceScrub中包含的人员的图像。作者计算了修正后的MS1M数据集和FaceScrub数据集中各人员图像的特征中心,发现修正后的MS1M中有578个人的特征中心和FaceScrub数据集中的人的特征中心很接近(余弦距离小于0.45)。作者从修正后的MS1M数据集中移除了这578个人的训练图像,并基于这个数据集和arcface训练模型得到了表10.

在这里插入图片描述
从表10中可以看出,arcface仍然略微优于cosineface。但相对于表9,各识别准确率都有所下降。但是,移除训练集和测试集中的重叠图像后,softmax的准确率下降的最多。在修正后的MegaFace数据集上,cosineface 的验证准确率略微好于arcface。但从图8中可以看出,arcface的准确率仍然优于cosineface。

在这里插入图片描述



3.5 使用triplet损失优化效果

优于显存的限制,无法训练包含百万量级人员类别的sphereface、cosineface和arcface的模型。但是可以使用度量学习方法,如最常用的triplet损失。最后作者使用triplet损失微调基于softmax损失族训练好的人脸识别模型。

使用triplet损失进行微调时,使用LResNet100E-IR网络,设置学习率为0.005,momentum为0,权重衰减系数为5e-4。如表11所示,给出了使用triplet损失微调过的不同模型在AgeDB-30数据集上的验证准确率。

在这里插入图片描述

从上表中可以看出:

  1. 在小规模训练集上训练的softmax损失的模型(如VGG2数据集,8631个人)通过在更大规模数据集(MS1M,8万5千人)上进行微调可以有效改善验证效果。这个实验也说明了两步训练策略的有效性,相比于从头训练triplet损失,这种两步训练策略可以有效加速模型训练过程;
  2. 在原始数据集上微调基于softmax损失训练的模型,也可以进一步提升模型效果,证明了局部调整可以改善模型整体效果;
  3. 改进的softmax损失,如sphereface、cosineface和arcface,可以持续改善验证效果。这也证明了局部度量学习方法,如triplet损失,可以作为全局超平面度量学习方法的补充来进一步提升模型效果。

优于triplet损失中实验的margin度量时欧式距离,作者将后续进行使用角度度量的triplet损失优化实验。



4 总结

本文的贡献主要有:

  1. 修正了当前最大的训练和验证数据集,MS1M和MegaFace;
  2. 探索了不同网络设置对识别准确率和速度的影响;
  3. 提出了一种几何解释性更好的损失— arcface,并且分析了为什么arcface比softmax、sphereface和cosineface更好;
  4. 以完全可复现的方式在Megaface上取得了最好的验证效果。



版权声明:本文为cdknight_happy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。