论文地址:https://arxiv.org/abs/1801.07698
github:https://github.com/deepinsight/insightface
摘要
使用深度卷积神经网络(DCNNs)进行大规模人脸识别的特征学习面临的主要挑战之一是其设计适当的损失函数以增强识别能力。Centre loss 惩罚是指欧氏空间中深度特征与其对应的类中心之间的距离,以实现类内紧致。SphereFace假设最后一个全连接层中的线性变换矩阵可以用来表示角空间中的类中心,并对深度特征与其对应权重之间的角度进行补偿。最近,一个流行的研究方向是将裕度纳入已确定的损失函数,以最大限度地提高面类可分离性。在本文中,我们提出了一个Additive Angular Margin Loss(ArcFace),以获得高度区分特征的人脸识别。由于与超球面测地线距离的精确对应,所提出的ArcFace具有清晰的几何解释。我们展示了所有最近最先进的人脸识别方法的最广泛的实验评估超过10个人脸识别基准,包括一个具有万亿级对的大型图像仓库和一个大型视频数据集。我们证明了ArcFace始终如一地优于最先进的技术,并且可以很容易地实现,而计算开销可以忽略不计。我们发布了所有经过改进的训练数据、训练代码、预训练模型和训练日志,这将有助于重新生成本文的结果。
1 引言
使用深度卷积神经网络(DCNN)嵌入的人脸表示是人脸识别的选择方法[32,33,29,24]。DCNNs映射人脸图像,通常经过姿态归一化步骤[45]后,成为一个具有小的类内距离和大的类间距离的特征。
图1.基于中心[18]和特征[37]归一化,将所有身份分布在超球面上。为了提高类内紧凑性和类间差异,我们考虑了四种测地线距离约束。(A)Margin-Loss:在样本与中心之间插入测地线距离的边界。(B)Intra-Loss:减小样本与相应中心之间的测地线距离。©Inter-Loss:增加不同中心之间的测地线距离。(D)Triplet-Loss:在三元组样本之间插入测地线距离裕度。为了提高人脸识别模型的识别能力,我们提出了一种与(A)中的测地距离(Arc)边缘惩罚完全对应的加角边缘损失(ArcFace)算法。大量的实验结果表明(A)策略是最有效的。
目前有两种主要的研究方向来训练DCNNs进行人脸识别。一种是训练一个多类分类器(如使用softmax分类器[33,24,6])来分离训练集中的不同身份,另一种是直接学习嵌入,如triplet loss[29]。基于大规模训练数据和精心设计的cnn体系结构,基于
softmax-loss的方法[6]和基于triplet loss的方法[29]都能获得良好的人脸识别性能。然而,softmax loss和 triplet loss都有一些缺点。对于softmax损失:(1)线性变换矩阵 W ∈ R d × n W∈R^{d×n} W∈Rd×n的大小随着身份数量 n线性增加;(2)学习到的特征对于缺失集的分类问题是可分离的,但对于开放集的人脸识别问题判别能力不够。对于triplet loss:(1)特别是对于大规模数据集,人脸triplets的数量出现了组合爆炸,导致迭代步骤的显著增加;(2)半硬采样挖掘对有效的建模训练来说是一个比较困难的问题。
几个变体[38,9,46,18,37,35,7,34,27]已经被提出来增强softmax损失的鉴别能力。Wen等[38]率先提出centre loss,利用每个特征向量与其类中心之间的欧氏距离,通过softmax损失的联合补偿来保证类内的紧致性,同时保证类间的离散性。然而,在训练期间更新实际的训练中心是极其困难的,因为可供训练的人脸类别的数量最近急剧增加。
通过观察,与每一类人脸中心具有相似度的softmax损失上训练DCNN分类的最后全连接层的权重,[18、19]的工作提出了一个可乘的角边裕度执行额外的的类内紧致性和类间差异,导致训练模型有更好的辨别力。虽然Sphereface[18]引入了角裕度的重要思想,但其损失函数需要进行一系列的近似才能计算出来,导致网络的训练不稳定。为了稳定训练,他们提出了一个混合损失函数,其中包括标准softmax损失。经验上,softmax损失在训练过程中占主导,因为基于整数的乘角裕度使目标logit曲线非常陡峭,从而阻碍收敛。CosFace[37,35]直接在目标logit中添加了余弦余量惩罚,相比SphereFace获得了更好的性能,但实现起来更容易,并且减少了softmax损失对联合监管的需要。
在本文中,我们提出了一个附加的角裕度进一步提高人脸识别模型的识别能力,稳定训练过程。如图2所示,DCNN feature和最后一个全连接层的点积等于feature和权值归一化后的余弦距离。我们使用arccos函数来计算当前特征和目标权重之间的角度。然后,我们在目标角度上加上一个附加的角裕度,再通过余弦函数得到目标的logit。然后,我们用一个固定的特征范数重新缩放所有logits,随后的步骤与softmax loss中的步骤完全相同。我们提出的ArcFace的优点总结如下:
Engaging。 ArcFace利用归一化超球面中角和弧的精确对应关系直接优化测地线距离余量。我们通过分析特征和权重之间的角度统计数据,直观地说明了512-D空间中发生了什么。
Effective。 ArcFace在10个人脸识别基准上取得了最先进的性能,包括大规模图像和视频数据集。
**Easy。 ** ArcFace只需要算法1中给出的几行代码,并且非常容易在基于计算图形的深度学习框架中实现,例如MxNet [8], Pytorch[25]和Tensorflow[4]。此外,与[18,19]的工作相反,ArcFace不需要与其他损失函数结合就可以获得稳定的性能,并且可以很容易地收敛于任何训练数据集。
Effificient。 ArcFace在训练过程中只增加了微不足道的计算复杂度。当前的gpu可以很容易地支持数百万个身份进行训练,而模型并行策略可以很容易地支持更多的身份。
2.提出的方法
2.1 ArcFace
使用最广泛的分类损失函数softmax loss表示如下:
其中 x i ∈ R d x_i∈R^d xi∈Rd代表第i个样本的特征,它属于第 y i y_i yi类。本文将嵌入特征维数d设为512,像[38,46,18,37]。 W j ∈ R d W_j∈R^d Wj∈Rd代表权重 W ∈ R d × n W∈R^{d×n}