下一章:深度篇——人脸识别(二) 人脸识别代码 insight_face_pro 项目讲解
目录内容:
深度篇——人脸识别(一) ArcFace 论文 翻译
深度篇——人脸识别(二) 人脸识别代码 insight_face_pro 项目讲解
论文地址: 《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》
源码地址: InsightFace: 2D and 3D Face Analysis Project
本小节,ArcFace 论文 翻译,下一小节 人脸识别代码 insight_face_pro 项目讲解
一. ArcFace 论文 翻译
1. 概述
使用深度卷积神经网络(Deep Convolutional Neural Networks, DCNNs) 来学习大规模人脸识别特征 的一个主要挑战是设计一个适当的损失函数来增强识别的能力。中心损失弥补(惩罚,类似于正则项) 了欧氏空间中深度特征与对应类别中心之间的距离,从而使得类内紧凑而简洁。SphereFace 假设在最后全连接层对矩阵进行线性变换可以作为在角空间中类中心的代表,并对深度特征和其对应权重之间的角度进行乘法补偿(惩罚,类似于正则项)。最近,一个流行的方向是将边缘信息纳入到已确定的损失函数中,并以此来最大限度地提高面类可分性。在本论文中,我们提出一种 边缘夹角附加损失(Additive Angular Margin Loss, AAML) (ArcFace) 来获得人脸识别的高可辨特征。我们所提出的 ArcFace 由于在超球面精确对应其球面距离, 所以其具有清晰的几何可解释性。我们使用超过 10 个目前最好的人脸识别方法(有争议的) 进行最广泛的评估实验,其中包括 一个拥有万亿级配对的新型大规模图像数据库和一个大规模视频数据集。通过这些实验,我们证明了 ArcFace 始终超越那些目前最好的人脸识别方法,并且它的实现非常简单,而计算开销基本可以忽略不计。我们开源所有优化过的训练数据,训练代码,预训练模型和训练日志,这将有助于别人对本论文进行探索,并获得更好的结果(开源,鼓励大家去探索,并在这个方向获得更好的研究结果)。
2. 介绍
使用嵌入式的深度卷积神经网络(DCNNs) 是人脸识别的首选方法。人脸图像的 DCNNs map 通过一个姿态归一化步骤处理后,变成一个内类小距离和内类大距离的特征。
对于训练人脸识别的 DCNNs ,目前有两条主流研究方向。一种是使用一个 softmax 分类器来训练能够在训练集上区分不同的身份的多类分类器,另一种则是直接学习一个嵌入式分类器,例如 triplet loss (三重损失,即 3 个损失函数)。基于大规模训练数据集和精细的 DCNN 结构,这两者都是基于 softmax-loss 和 基于 triple-loss 的方法,它们在人脸识别上获得卓越的性能。然而,无论是 softmax loss 还是 triplet loss 都有一些缺点。
对于 softmax loss:
(1). 线性变换矩阵 的大小随着常数 n 线性递增(d 为维度,n 可以理解为 n 分类,分类数大,矩阵必然大)。
(2). 所学习到的特征对于闭合分类问题是可分离的,但对于开放类型的(即识别类别不是固定的,而是无限大的) 人脸识别问题是识别能力欠缺的。
对于 triplet loss:
(1). 人脸 triplets 数量会出现一个组合爆炸,特别是对于大规模数据集,它会导致迭代步骤显著增加。
(2). 而有效训练模型的一个非常困难的问题是: semi-hard 样本采样(semi-hard 样本采样: negative example 与 anchor 距离大于 anchor 与 positive example 的距离,但还不至于使得loss, 即 )。
现在已经提出了几种变体函数来提升 softmax loss 的分类能力。Wen 等人首创 的 centre loss,它通过每个特征向量与其类中心之间的欧氏距离来获得类内的紧凑性,而通过对 softmax loss 联合惩罚项来控制类间的离散性。然而,在训练期间更新真实的中心是极其困难的,因为可供训练的人脸类别数量会急剧增加
通过观察,最后一个全连接层关于 DCNN 训练分类的 softmax loss 的权重 承担与每一个人脸类别中心概念的相似性,并提出一个乘法的边缘夹角惩罚项来执行额外的类内的紧凑和类间的差异,从而导致训练模型具有更好的辨别能力。尽管 Sphereface 引入了边缘夹角这一重要思想,但是它的损失函数需要一系列的近似值才能被计算出来,这就导致该网络的训练波动很大。为了能稳定训练,它们提出了包含标准 softmax loss 的混合损失函数。按照以往的经验,softmax loss 在训练过程中起着主导作用,因为基于整数乘法的边缘夹角会使得目标对数曲线非常陡峭,从而使得它难以收敛。与 Sphereface 相比,CosFace 直接在目标对数中加入余弦距离惩罚项来获得更好的性能,但实现起来更容易,并使得联合监督摆脱了对 softmax loss 的需要。
在本论文,我们提出一种 边缘夹角附加损失(Additive Angular Margin Loss, AAML) (ArcFace) 来进一步提升人脸识别模型辨别能力和训练过程的稳定性。DCNN feature 和 最后一个全连接层的点积等于 feature 和 weight 归一化之后的余弦距离,如下图Figure 2 所示:
我们利用反余弦函数来计算当前的 feature 和 目标 weight 之间的角度。然后,我们给目标角度添加一个附件的边缘夹角,并通过余弦函数来恢复得到目标对数。之后,我们根据固定 feature norm 来重新调节所有的对数,并且随后的步骤在 softmax loss 中恰好相同。我们提出的 ArcFace 方法优点总结如下:
Engaging. ArcFace 利用 归一化后的超球面的角度和弧度之间精确的对应关系来直接优化球面距离的边缘。我们通过分析 feature 和 weights 之间的角度统计来直观说明在 512-D 空间中发生了什么。
Effective. ArcFace 在 包括 大规模图像和视频数据集 的 10 个人脸识别基准上获得了最佳性能。
Easy. ArcFace 对于上图 Figure 2 中的 Algorithm 1 只需几行代码就搞定,并且对基于计算图形的深度学习框架(如,MxNet, Pytorch 和 TensorFlow 等) 是非常容易实现的。此外,ArcFace 不需要与其他损失函数结合就获得稳定的性能,并且对于任何训练数据集都很容易收敛。
Efficient. ArcFace 在训练过程中只增加了一点微不足道的计算复杂度。当前 GPUs可以很容易支持训练百万级身份(意思是,百万级个不同人脸训练),而模型并行策略可以很容易支持更多的身份。
3. 提议方法
(1). ArcFace
使用最广泛的分类损失函数 softmax loss 表示如下:
, 表示第 个样本特征的深度, 它属于第 个类别。 本论文将嵌入特征的维度 设置为 512。
表示 权重 中的 第 列,而