赞
踩
使用深度卷积神经网络 (DCNN) 进行大规模人脸识别的特征学习的主要挑战之一是设计适当的损失函数以增强辨别力。
Centre loss在欧几里得空间中惩罚深度特征与其对应的类中心之间的距离,以实现类内紧凑性。 SphereFace 假设最后一个全连接层中的线性变换矩阵可以用作角空间中类中心的表示,并以乘法方式惩罚深度特征与其相应权重之间的角度。最近,一个流行的研究方向是在完善的损失函数中加入边距,以最大限度地提高人脸类别的可分离性。
在本文中,我们提出了一种加性角裕度损失(ArcFace:Additive Angular Margin Loss)来获得用于人脸识别的高度判别特征。由于与超球面上的测地线距离精确对应,所提出的 ArcFace 具有清晰的几何解释。我们可以说是对所有最近最先进的人脸识别方法在 10 多个人脸识别基准上进行的最广泛的实验评估,包括一个具有万亿级配对的新大规模图像数据库和一个大规模视频数据集。我们展示了 ArcFace 始终优于最先进的技术,并且可以以可忽略的计算开销轻松实现。我们发布所有精炼的训练数据、训练代码、预训练模型和训练日志,这将有助于重现本文中的结果。
https://github.com/deepinsight/insightface
使用深度卷积神经网络 (DCNN) 嵌入(embedding)的人脸表示是人脸识别的首选方法 [32、33、29、24]。 DCNN 通常在姿势归一化步骤 [45] 之后将人脸图像映射为具有小类内和大类间距离的特征。
训练 DCNN 进行人脸识别有两条主要研究方向。那些训练可以在训练集中分离不同身份的多类分类器的方法,例如使用 softmax 分类器 [33,24,6],以及直接学习嵌入的方法,例如三元组损失 [29]。基于大规模训练数据和精细的 DCNN 架构,基于 softmax-loss 的方法 [6] 和基于triplet-loss 的方法 [29] 都可以在人脸识别方面获得出色的性能。然而,softmax 损失和三元组损失都有一些缺点。对于 softmax 损失: (1) 线性变换矩阵 W ∈ Rd×n 的大小随着身份数 n 线性增加; (2) 学习到的特征对于闭集分类问题是可分离的,但对于开集人脸识别问题的判别力不够。对于三元组损失:(1)人脸三元组的数量出现组合爆炸式增长,特别是对于大规模数据集,导致迭代步数显着增加; (2) 半硬样本挖掘对于有效的模型训练来说是一个相当困难的问题。
已经提出了几种变体 [38, 9, 46, 18, 37, 35, 7, 34, 27] 来增强 softmax 损失的判别能力。温等人 [38] 开创了centre loss,即每个特征向量与其类中心之间的欧几里德距离,以获得类内紧凑性,而类间分散由 softmax 损失的联合惩罚来保证。然而,在培训期间更新实际中心是极其困难的,因为可用于培训的人脸类别的数量最近急剧增加。
[38] Y . Wen, K. Zhang, Z. Li, and Y . Qiao. A discriminative feature learning approach for deep face recognition. In ECCV,2016. 2, 6, 7
通过观察来自在 softmax 损失上训练的分类 DCNN 的最后一个全连接层的权重与每个人脸类别的中心在概念上具有相似性,[18, 19] 中的工作提出了一个乘法角边距惩罚(multiplicative angular margin penalty)来强制执行额外的内部同时具有类紧凑性和类间差异,从而使训练模型具有更好的判别力。
[18] W. Liu, Y . Wen, Z. Y u, M. Li, B. Raj, and L. Song.Sphereface: Deep hypersphere embedding for face recognition. In CVPR, 2017. 1, 2, 3, 4, 5, 6, 7
[19] W. Liu, Y . Wen, Z. Y u, and M. Yang. Large-margin softmax loss for convolutional neural networks. In ICML, 2016. 2, 3
尽管 Sphereface [18] 引入了 angular margin 的重要概念,但它们的损失函数需要一系列近似值才能被计算,这导致网络的训练不稳定。为了稳定训练,他们提出了一种混合损失函数,其中包括标准的 softmax 损失。根据经验,softmax 损失在训练过程中占主导地位,因为基于整数的乘法角余量使目标 logit 曲线非常陡峭,从而阻碍了收敛。 CosFace [37, 35] 直接在目标 logit 中添加余弦裕度惩罚,与 SphereFace 相比,它获得了更好的性能,但实现起来更容易,并且减轻了对 softmax 损失的联合监督的需要。
在本文中,我们提出了一种加性角边距损失(ArcFace),以进一步提高人脸识别模型的判别力并稳定训练过程。如图 2 所示,DCNN 特征和最后一个全连接层之间的点积等于特征和权重归一化后的余弦距离。我们利用反余弦函数来计算当前特征和目标权重之间的角度。然后,我们在目标角度上添加一个附加的角度余量,并通过余弦函数再次得到目标 logit。然后,我们通过一个固定的特征范数重新缩放所有 logit,后续步骤与 softmax loss 中的完全相同。
提出的 ArcFace 的优点可以总结如下:
迷人的。 ArcFace 通过归一化超球面中角度和弧的精确对应,直接优化测地线的距离裕度。我们通过分析特征和权重之间的角度统计数据直观地说明了 512-D 空间中发生的情况。
有效的。 ArcFace 在包括大规模图像和视频数据集在内的十个人脸识别基准测试中实现了最先进的性能。
简单的。 ArcFace 只需要算法 1 中给出的几行代码,并且在基于计算图的深度学习框架中非常容易实现,例如MxNet [8]、Pytorch [25] 和 Tensorflow [4]。此外,与 [18, 19] 中的工作相反,ArcFace 无需与其他损失函数结合即可获得稳定的性能,并且可以轻松收敛于任何训练数据集。
高效的。 ArcFace 在训练期间只增加了可以忽略不计的计算复杂度。当前的 GPU 可以轻松支持数百万个特性进行训练,模型并行策略可以轻松支持更多特性。
最广泛使用的分类损失函数softmax loss如下所示:
其中 xi ∈ Rd 表示第 i 个样本的深度特征,属于第 yi 类。本文遵循 [38, 46, 18, 37] 将嵌入特征维度 d 设置为 512。Wj ∈ Rd 表示权重 W ∈ Rd×n 的第 j 列,bj ∈ Rn 是偏置项。批量大小和类数分别为 N 和 n。传统的 softmax 损失被广泛用于深度人脸识别 [24, 6]。然而,softmax 损失函数并没有显式优化特征嵌入以增强类内样本的相似性和类间样本的多样性,这导致在大的类内外观变化(例如姿势变化 [ 30, 48] 和年龄差距 [22, 49])和大规模测试场景(例如百万 [15, 39, 21] 或万亿对 [2])下深度人脸识别的性能差距。
为了简单起见,我们修正了[18]中的偏差bj=0。然后,我们将logit[26]转换为WTjxi=||Wj|| ||xi|| cosθj,其中θj是权重Wj和特征xi之间的角度。在[18,37,36]之后,我们通过l2归一化来固定单个权重||Wj||=1。在[28、37、36、35]之后,我们还通过l2归一化固定嵌入特征||xi||,并将其重新缩放到s。特征和权重的归一化步骤使预测仅取决于特征和权重之间的角度。因此,学习的嵌入特征分布在半径为s的超球面上。
由于嵌入特征分布在超球面上的每个特征中心周围,我们在xi和Wyi之间添加了一个附加的角裕度惩罚m,以同时增强类内紧致性和类间差异性。由于提出的附加角裕度惩罚等于归一化超球面中的测地距离裕度惩罚,我们将我们的方法命名为ArcFace。
我们从包含足够样本(约1500张图像/类)的8个不同身份中选择人脸图像,分别训练具有softmax和ArcFace损失的2D特征嵌入网络。如图3所示,softmax损失提供了大致可分离的特征嵌入,但在决策边界中产生了明显的模糊性,而提出的弧面损失显然可以在最近的类之间形成更明显的差距。
图3。softmax和ArcFace loss下的玩具示例基于8个具有2D功能的身份。点表示样本,线表示每个标识的中心方向。基于特征归一化,将所有人脸特征推送到具有固定半径的弧空间。随着附加角裕度惩罚的加入,最近类之间的测地距离差距变得明显。
数值相似性。在SphereFace[18,19]、ArcFace和CosFace[37,35]中,提出了三种不同的裕度惩罚,分别是乘法角裕度m1、加法角裕度m2和加法余弦裕度m3。从数值分析的角度来看,不同的裕度惩罚,无论是角度[18]还是余弦空间[37],都通过惩罚目标logit[26]来增强类内紧性和类间多样性。
在图4(b)中,我们绘制了SphereFace、ArcFace和CosFace在其最佳边距设置下的目标logit曲线。我们仅在[20◦, 100◦]范围内显示这些目标logit曲线,因为Wyi和xi之间的角度是从90◦左右开始的 (随机初始化)并在30◦左右结束。在ArcFace训练期间,如图4(a)所示。直观地说,目标logit曲线中有三个因素会影响性能,即起点、终点和斜率。
图4。目标logit分析。(a) ArcFace训练期间从开始到结束的θj分布。(2) softmax、SphereFace、ArcFace、CosFace和组合裕度惩罚(cos(m1θ+m2)− m3)的目标logit曲线。
通过组合所有的裕度惩罚,我们在一个统一的框架中实现了SphereFace、ArcFace和CosFace,其中m1、m2和m3是超参数。
如图4(b)所示,通过组合所有上述运动裕度(cos(m1θ+m2)− m3),我们可以很容易地获得其他一些也具有高性能的目标logit曲线。
几何差异。尽管ArcFace与以前的工作在数值上相似,但由于角裕度与测地线距离精确对应,因此拟议的附加角裕度具有更好的几何属性。如图5所示,我们比较了二元分类情况下的决策边界。提出的ArcFace在整个间隔内具有恒定的线性角裕度。相反,SphereFace和CosFace只具有非线性角裕度。
图5。二分类情况下不同损失函数的决策裕度。虚线表示决策边界,灰色区域表示决策边界。
裕度设计的微小差异可能会对模型训练产生“蝴蝶效应”。例如,原始SphereFace[18]采用退火优化策略。为了避免在训练开始时出现分歧,在SphereFace中使用softmax的联合监督来削弱乘法边缘惩罚。通过使用弧余弦(arc-cosine)函数而不是使用复杂的双角度公式(complex double angle formula),我们实现了一种新版本的SphereFace,对边距没有整数要求。在我们的实现中,我们发现m=1.35可以获得与原始SphereFace相似的性能,并且没有任何收敛困难。
其他损失函数可以基于特征和权重向量的角度表示来设计。例如,我们可以在超球面上设计一个损失来增强类内紧性和类间差异。如图1所示,我们与本文中的其他三种损失进行了比较。
图1。基于中心[18]和特征[37]归一化,所有恒等式都分布在超球面上。为了增强类内紧性和类间差异,我们考虑了四种测地距离(GDis)约束。(A)Margin-Loss:在样本和中心之间插入测地距离余量。(B) Intra-Loss:减小样本与相应中心之间的测地线距离。(C) Inter-Loss:增加不同中心之间的测地线距离。(D)Triplet-Loss:在三个一组的样本之间插入测地距离裕度。在本文中,我们提出了一种与(A)中的测地距离(弧)边缘惩罚完全对应的加性角度边缘损失(ArcFace),以提高人脸识别模型的识别能力。大量实验结果表明,(A)策略是最有效的。
Intra-Loss 旨在通过减小样本与地面真值中心之间的角度/弧度来提高类内紧性。
Inter-Loss 旨在通过增加不同中心之间的角度/弧度来增强类间差异。
这里的Inter-Loss是最小超球面能量(MHE:Minimum Hyper-spherical Energy)方法[17]的特例。在[17]中,隐藏层和输出层都由MHE正则化。在MHE论文中,通过将网络最后一层的球面损耗与MHE损耗相结合,提出了损耗函数的特例。
Triplet-Loss 旨在扩大三个一组样本之间的角度/弧裕度。在FaceNet[29]中,欧几里得裕度应用于归一化特征。在这里,我们通过特征的角度表示来使用Triplet-Loss,即arccos(xposi xi)+m≤ arccos(xnegi xi)。
数据集。如表1所示,我们分别使用CASIA[43]、VGGFace2[6]、MS1MV2和DeepGlint Face(包括MS1M DeepGlint和Asian DeepGlint)[2]作为我们的训练数据,以便与其他方法进行公平比较。请注意,拟议的MS1MV2是MS-Celeb-1M数据集的半自动优化版本[10]。据我们所知,我们是第一个使用种族特定注释器进行大规模人脸图像注释的人,因为如果注释器不熟悉身份,边界情况(例如硬样本和噪声样本)很难区分。在训练期间,我们探索有效的人脸验证数据集(例如LFW[13]、CFP-FP[30]、AgeDB-30[22]),以检查不同设置下的改善情况。除了最广泛使用的LFW[13]和YTF[40]数据集外,我们还报告了ArcFace在最近的大位姿和大年龄数据集(例如CPLFW[48]和CALFW[49])。我们还广泛测试了大规模图像数据集(例如
MegaFace[15]、IJB-B[39]、IJB-C[21]和万亿对[2])和视频数据集(爱奇艺视频[20])。
实验设置。对于数据预处理,我们遵循最近的论文[18,37],通过利用五个面部点生成归一化面部裁剪(112×112)。对于嵌入网络,我们采用了广泛使用的CNN架构,ResNet50和ResNet100[12,11]。在最后一个卷积层之后,我们探索BN[14]-Dropout[31]-FC-BN结构,以获得最终的512-D嵌入特征。在本文中,我们使用([训练数据集,网络结构,损耗])来帮助理解实验设置。
我们按照[37]将特征比例s设置为64,并将ArcFace的角裕度m选择为0.5。本文中的所有实验均由MXNet[8]实现。我们将批量大小设置为512,并在四个NVIDIA Tesla P40(24GB)GPU上训练模型。在CASIA上,学习速率从0.1开始,在20K、28K次迭代时除以10。训练过程在32K次迭代中完成。在MS1MV2上,我们在100K、160K次迭代时划分学习速率,并在180K次迭代时完成。我们将动量设为0.9,将重量衰减设为5e− 4。在测试过程中,我们只保留没有完全连接层的特征嵌入网络(对于ResNet50为160MB,对于ResNet100为250MB),并为每个归一化的面提取512D特征(对于ResNet50为8.9毫秒/face,对于ResNet100为15.4毫秒/face)。为了获得模板(如IJB-B和IJB-C)或视频(如YTF和爱奇艺VID)的嵌入特征,我们只需计算模板中所有图像或视频中所有帧的特征中心。请注意,为了进行严格评估,删除了训练集和测试集之间的重叠标识,并且我们仅对所有测试使用单个裁剪。
在表2中,我们首先使用ResNet50探索CASIA数据集上ArcFace的角度裕度设置。在我们的实验中观察到的最佳裕度为0.5。使用等式4中提出的组合裕度框架,可以更容易地设置SphereFace和CosFace的裕度,我们发现当分别设置为1.35和0.35时,它们具有最佳性能。我们对SphereFace和CosFace的实现都可以在不存在任何收敛困难的情况下获得出色的性能。提出的ArcFace在所有三个测试集上实现了最高的验证精度。此外,我们使用组合边缘框架进行了广泛的实验(在图4(b)中的目标logit曲线引导下,观察到CM1(1,0.3,0.2)和CM2(0.9,0.4,0.15)的一些最佳性能)与单个SphereFace和CosFace相比,组合边缘框架的性能更好,但上界受ArcFace的性能限制。
表 2. 不同损失函数([CASIA, ResNet50, loss*])的验证结果(%)。
除了与基于裕度(margin)的方法进行比较外,我们还对 ArcFace 和其他旨在加强类内紧凑性(Eq.5)和类间差异(Eq.6)的损失进行了进一步比较。作为基线,我们选择了 softmax 损失,并且我们观察到 CFP-FP 和 AgeDB-30 在权重和特征归一化后的性能下降。通过将 softmax 与类内损失相结合,CFP-FP 和 AgeDB-30 的性能有所提高。然而,将 softmax 与类间损失相结合只会略微提高准确性。 Triplet-loss 优于 Norm-Softmax 损失的事实表明了裕度在提高性能方面的重要性。但是,在三元组样本中使用边距惩罚不如在 ArcFace 中在样本和中心之间插入边距有效。最后,我们将 Intra-loss、Inter-loss 和 Triplet-loss 合并到 ArcFace 中,但没有观察到任何改进,这使我们相信 ArcFace 已经在执行类内紧凑性、类间差异和分类余量。
为了更好地理解 ArcFace 的优越性,我们在表 3 中给出了不同损失下训练数据(CASIA)和测试数据(LFW)的详细角度统计。我们发现(1)Wj 与 ArcFace 的嵌入特征中心几乎同步(14.29°),但 Wj 与 Norm-Softmax 的嵌入特征中心之间存在明显的偏差 (44.26°)。因此,Wj 之间的角度不能绝对代表训练数据上的类间差异。或者,训练后的网络计算的嵌入特征中心更具代表性。 (2) Intra-Loss 可以有效压缩类内变化,但也带来更小的类间角度。 (3) Inter-Loss 可以略微增加 W(直接)和嵌入网络(间接)上的类间差异,但也会提高类内角度。 (4) ArcFace 已经具有很好的类内紧凑性和类间差异。 (5) 与 ArcFace 相比,Triplet-Loss 具有相似的类内紧凑性,但类间差异较差。此外,ArcFace 在测试集上比 Triplet-Loss 有更明显的边距,如图 6 所示。
表 3. 不同损失下的角度统计([CASIA, ResNet50, loss*])。每列表示一个特定的损失。 “WEC”是指 Wj与相应嵌入特征中心之间的角度平均值。 “W-Inter”是指 Wj 之间最小角度的平均值。 “Intra1”和“Intra2”分别指 xi与 CASIA 和 LFW 上的嵌入特征中心之间的角度平均值。 “Inter1”和“Inter2”分别是指嵌入特征中心在 CASIA 和LFW 上的最小角度的平均值。
图 6. 来自 LFW 的所有正对和随机负对 (~ 0.5M) 的角度分布。红色区域表示正对,蓝色表示负对。所有角度都以度数表示。([CASIA,ResNet50,损失*])。
LFW、YTF、CALFW 和 CPLFW 的结果。 LFW [13] 和 YTF [40] 数据集是用于图像和视频无约束人脸验证的最广泛使用的基准。在本文中,我们遵循无限制的带有标记的外部数据协议来报告性能。如表 4 所示,使用 ResNet100 在 MS1MV2 上训练的 ArcFace 在 LFW 和 YTF 上都以显着的优势击败了基线(例如 SphereFace [18] 和 CosFace [37]),这表明附加的角边距惩罚可以显着增强判别力深度学习特征的力量,展示了 ArcFace 的有效性。
表 4 不同方法在 LFW 和 YTF 上的验证性能(%)。
除了在 LFW 和 YTF 数据集上,我们还报告了 ArcFace 在最近引入的数据集(例如 CPLFW [48] 和 CALFW [49])上的性能,这些数据集显示了来自 LFW 的相同身份的更高姿势和年龄变化。在人脸识别模型中,ArcFace 模型被评估为排名第一的人脸识别模型,如表 5 所示,明显优于同类模型。在图 7 中,我们说明了 LFW、CFP-FP、AgeDB-30、YTF、CPLFW 和 CALFW 上正负对的角度分布(由在 MS1MV2 和 ResNet100 上训练的 ArcFace 模型预测)。我们可以清楚地发现,由于姿势和年龄差距导致的内部方差显着增加了正对(positive pairs)之间的角度,从而使人脸验证的最佳阈值增加,并在直方图上产生更多的混淆区域。
图 7. LFW、CFP-FP、AgeDB-30、YTF、CPLFW 和 CALFW上正负对的角度分布。红色区域表示正对,蓝色表示负对。所有角度都以度数表示。 ([MS1MV2,ResNet100,ArcFace])
MegaFace 上的结果。 MegaFace 数据集 [15] 包括 69 万个不同个体的 100 万张图像作为图库集,以及来自 FaceScrub [23] 的 530 个独特个体的 10 万张照片作为探测集。在 MegaFace 上,在两种协议(大型或小型训练集)下有两种测试场景(识别和验证)。如果训练集包含超过 0.5M 的图像,则将其定义为大。为了公平比较,我们分别在小协议和大协议下在 CAISA 和 MS1MV2 上训练 ArcFace
在表 6 中,在 CASIA 上训练的 ArcFace 实现了最佳的单模型识别和验证性能,不仅超过了强基线(例如 SphereFace [18] 和 CosFace [37]),而且优于其他已发表的方法 [38, 17]。
表 6. 在 MegaFace Challenge1 上使用 FaceScrub 作为探针集的不同方法的人脸识别和验证评估。“Id”是指具有 1M 干扰项的 rank-1 人脸识别准确度,“Ver”是指 10-6 FAR 的人脸验证 TAR。 “R”是指对探针组和1M 干扰项的数据细化。 ArcFace 在小型和大型协议下都获得了最先进的性能。
由于我们观察到识别和验证之间存在明显的性能差距,我们对整个 MegaFace 数据集进行了彻底的手动检查,发现许多带有错误标签的人脸图像,这显着影响了性能。因此,我们手动优化了整个 MegaFace 数据集,并报告了 ArcFace 在 MegaFace 上的正确性能。在改进后的 MegaFace 上,ArcFace 仍然明显优于 CosFace,在验证和识别方面都达到了最佳性能
在大型协议下,ArcFace 明显超过 FaceNet [29],与 CosFace [37] 相比,在识别和验证方面取得了可比的结果。由于 CosFace 使用私有训练数据,我们使用 ResNet100 在我们的 MS1MV2 数据集上重新训练 CosFace。在公平的比较下,ArcFace 表现出优于 CosFace 的优势,并在识别和验证场景下形成 CosFace 的上包络,如图 8 所示。
图 8. MegaFace 上不同模型的 CMC 和 ROC 曲线。结果在原始和改进的 MegaFace 数据集上进行评估。
略
在本文中,我们提出了一种 Additive Angular Margin Loss 函数,它可以有效地增强通过 DCNN 学习的特征嵌入在人脸识别中的判别力。在文献报道的最全面的实验中,我们证明我们的方法始终优于最先进的方法。代码和详细信息已在 MIT 许可下发布。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。