原始题目:ArcFace: Additive Angular Margin Loss for Deep Face Recognition
中文翻译:ArcFace: 用于深度人脸识别的附加角边缘损失(Additive Angular Margin Loss)
发表时间:2018年1月23日
平台:Arxiv
来源:帝国理工学院
摘要
利用深度卷积神经网络(DCNNs)进行大规模人脸识别的特征学习的主要挑战之一是设计适当的损失函数来增强识别能力。Centre loss 惩罚 深度特征与其对应的类中心在欧氏空间的距离,以实现类内紧致。SphereFace 假设最后一个全连接层中的线性变换矩阵可以用作角空间中的类中心的表示,并以乘法的方式惩罚深度特征与其相应权值之间的角度。
最近,一个流行的研究方向是,将 margins 纳入成熟的损失函数,以最大限度地提高类别可分离性。本文提出了一种基于Additive Angular Margin Loss (ArcFace) 的人脸识别算法,以获得具有高度分辨力的人脸特征。
由于与超球面上测地线距离的精确对应,提出的ArcFace具有清晰的几何解释。我们在超过10个人脸识别基准上,对所有最新的最先进的人脸识别方法进行了可能是最广泛的实验评估,包括一个拥有万亿级配对的新的大规模图像数据库和一个大规模视频数据集。我们展示了ArcFace始终优于最先进的性能,并且可以轻松实现,而计算开销可以忽略不计。我们发布了所有精细化的训练数据、训练代码、预训练模型和训练日志1,这将有助于再现本文中的结果。
4. 结论
在本文中,我们提出了一种 Additive Angular Margin 损失函数,该函数可以有效地增强通过DCNNs学习的特征嵌入对人脸识别的甄别能力。在文献中报道的最全面的实验中,我们证明了我们的方法始终优于最先进的方法。代码和细节已在MIT许可下发布。
1. 引言
使用深度卷积神经网络(Deep Convolutional Neural Network, DCNN)嵌入的人脸表征是人脸识别的首选方法[32,33,29,24]。DCNNs通常在姿态标准化步骤[45]之后,将人脸图像映射到一个具有较小的类内距离和较大的类间距离的特征。
姿态标准化步骤:指的是人脸对齐
训练DCNNs进行人脸识别的研究主要有两条线。
- 训练多类分类器,可以分离训练集中不同的身份,如使用softmax分类器[33,24,6]
- 直接学习嵌入,如三元组损失[29]。基于大规模训练数据和精细的DCNN架构,基于 softmax损失的方法[6]和基于 triplet 损失的方法[29]都能获得良好的人脸识别性能。
然而,softmax loss 和 triplet loss 都有一些缺点。
对于softmax损失:
- 线性变换矩阵
的大小随恒等数 n 线性增加;
- 学习到的特征对于闭集分类问题是可分的,而对于开集人脸识别问题则不够判别。
对于三元组丢失:
- 人脸三元组的数量存在组合爆炸,特别是对于大规模数据集,导致迭代步数显著增加;
- 半硬(semi-hard)样本挖掘是一个很难有效训练模型的问题。
已经提出了几种变体[38,9,46,18,37,35,7,34,27]来增强softmax损失的鉴别能力。Wen等人[38]首创了 centre loss ,即每个特征向量与其类中心之间的欧氏距离,以获得类内紧致性,同时通过softmax 损失的联合惩罚来保证类间离散性。然而,在训练期间更新实际的中心是极其困难的,因为可供训练的人脸类别的数量最近急剧增加。
通过 观察到基于softmax损失训练的分类DCNN的最后一个全连接层的权值与每个人脸类别的中心具有概念上的相似性,[18,19]提出了一种乘法角边缘(multiplicative angular margin)惩罚,以同时增强额外的类内紧致性和类间差异,从而使训练模型具有更好的分辨能力。虽然Sphereface[18]引入了角边缘(angular margin)的重要思想,但它们的损失函数需要一系列的逼近才能计算出来,这导致网络的训练不稳定。为了稳定训练,他们提出了一种混合损失函数,其中包括标准softmax损失。经验上,softmax损失在训练过程中占主导地位,因为基于整数的乘性角裕度(integer-based multiplicative angular margin)使得目标 logit 曲线非常陡峭,从而阻碍了收敛。CosFace[37, 35]直接向目标 logit 添加了余弦边际惩罚,与SphereFace相比,它获得了更好的性能,但更容易实现,并减轻了对softmax损失的联合监督的需要。
在本文中,我们提出了一种 Additive Angular Margin Loss (ArcFace),以进一步提高人脸识别模型的辨别能力,稳定训练过程。如图2所示,DCNN特征与最后一个全连接层的点积等于 feature 和 weight normalisation 后的余弦距离。我们利用 arc-cosine 函数来计算当前 feature 与目标 weight 之间的角度。然后,我们在目标角上添加一个 additive angular margin,然后我们通过余弦函数再次得到目标 logit 。然后,我们用一个固定的特征范数(feature norm)重新衡量所有logits,随后的步骤与softmax损失完全相同。ArcFace的优点可以总结如下:
迷人(Engaging)。ArcFace 利用在规范化的超球体中角(angle)和弧(arc)之间的精确对应关系的优点,直接优化测地线距离 margin。通过分析特征和权重之间的角度统计,我们直观地说明了512-D空间中发生的事情。
有效。ArcFace在10个人脸识别基准上实现了最先进的性能,包括大规模图像和视频数据集。
容易。ArcFace只需要算法 1 中给出的几行代码,在基于计算图的深度学习框架中非常容易实现,例如 MxNet [8], Pytorch[25]和Tensorflow[4]。此外,与[18,19]的工作相反,ArcFace不需要与其他损失函数相结合就可以获得稳定的性能,并且可以很容易地收敛于任何训练数据集。
高效。在训练期间,ArcFace只增加了微不足道的计算复杂性。当前的GPUs 可以很容易地支持数百万个身份进行训练,模型并行策略可以很容易地支持更多的身份。
图2。训练DCNN在 ArcFace loss 的监督下进行人脸识别。基于特征 和权值W的 normalisation ,我们得到每一类的
(logit)为
。我们计算
,得到特征
与 ground truth 权重
之间的夹角。事实上,
为每个类提供了一种中心。然后,我们在目标(ground truth)角
上加一个angular margin penalty m。之后,我们计算
,并将所有 logits 乘以特征尺度 s。然后,logits 通过softmax函数,对交叉熵损失做出贡献。
算法1 ArcFace在MxNet上的伪代码
2. 提出的方法
2.1. ArcFace
最广泛使用的分类损失函数softmax损失如下所示:
式中表示第 i 个样本的深度特征,属于第
类。本文按照[38,46,18,37],将嵌入特征维数 d 设为512。
为权重
的第 j 列,
为偏置项。batch size 大小为N,class 数目为N。传统的softmax损失被广泛应用于深度人脸识别[24,6]。然而,softmax损失函数并没有明确优化特征嵌入以增强类内样本的相似性和类间样本的多样性,这导致在较大的类内外观变化(intra-class appearance variations)(例如姿势变化[30,48]和年龄差距[22,49])和大规模测试场景(例如百万[15,39,21]或万亿对[2])下深度人脸识别的性能差距。
为了简单起见,我们将固定偏差为 如[18]。然后,我们将 logit [26]变换为
,其中
为权重
与特征
之间的夹角。跟随[18,37,36],我们通过 L2 normalisation来固定个体权重
。跟随[28,37,36,35],我们还通过 L2 normalisation固定嵌入特征
,并将其重新缩放到s。特征和权重上的 normalisation 步骤使预测仅取决于特征和权重之间的角度。因此,学习到的嵌入特征分布在一个半径为s的超球上。
由于嵌入特征分布在超球上的每个特征中心周围,我们在 和
之间添加一个附加的角边缘惩罚 m,以同时增强类内紧性和类间差异。由于提出的加性角裕度惩罚等于normalised 超球中的测地距离角度惩罚,我们将我们的方法命名为ArcFace。
我们从8个不同身份的人脸图像中选取足够的样本(约1,500张/类),分别用softmax和ArcFace损失训练 2D特征嵌入网络。如图3所示,softmax损失提供了大致可分的特征嵌入,但在决策边界中产生了明显的模糊性,而提出的ArcFace损失可以明显地在最近的类之间施加更明显的差距。
图3。在softmax和ArcFace loss 下的玩具样本具有2D特征的8个身份。点表示样本,线表示每个身份的中心方向。在特征 normalisation 的基础上,将所有人脸特征推送到半径固定的弧空间。最近的类之间的测地线距离差距变得明显,因为附加的角边际惩罚被纳入。
补充知识
弧矩
ArcFace是在角度空间分割,ArcFace的angular margin对应着弧距(arc margin)(也叫geodesic测地距离),就是在超球面曲面上的最小距离。而不是两特征点之间直接相连的距离。