[论文]ArcFace Additive Angular Margin Loss for Deep Face Recognition
论文题目:《ArcFace Additive Angular Margin Loss for Deep Face Recognition 》
论文地址:https://arxiv.org/pdf/1801.07698.pdf
1. 前言
这篇文章提出一种新的用于人脸识别的损失函数:additive angular margin loss,基于该损失函数训练得到人脸识别算法ArcFace(开源代码中为该算法取名为insightface,二者意思一样,接下来都用ArcFace代替)。ArcFace的思想(additive angular margin)和SphereFace以及不久前的CosineFace(additive cosine margin )有一定的共同点,重点在于:在ArchFace中是直接在角度空间(angular space)中最大化分类界限,而CosineFace是在余弦空间中最大化分类界限,这也是为什么这篇文章叫ArcFace的原因,因为arc含义和angular一样。
除了损失函数外,本文的作者还清洗了公开数据集MS-Celeb-1M的数据,并强调了干净数据的对实验结果的影响,同时还对网络结构和参数做了优化。总体来说ArcFace这篇文章做了很多实验来验证additive angular margin、网络结构设计和数据清洗的重要性,
主要思想:
● ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接。几何上有恒定的线性角度margen。
● ArcFace中是直接在角度空间θ中最大化分类界限,而CosFace是在余弦空间cos(θ)中最大化分类界限。
● 预处理(人脸对齐):人脸关键点由MTCNN检测,再通过相似变换得到了被裁剪的对齐人脸。
● 训练(人脸分类器):ResNet50 + ArcFace loss
● 测试:从人脸分类器FC1层的输出中提取512维的嵌入特征,对输入的两个特征计算余弦距离,再来进行人脸验证和人脸识别。
● 实际代码中训练时分为resnet model+arc head+softmax loss。resnet model输出特征;arc head将特征与权重间加上角度间隔后,再输出预测标签,求ACC是就用这个输出标签;softmax loss求预测标签和实际的误差。
● LFW上99.83%,YTF上98.02%
优点:
● 性能高,易于编程实现,复杂性低,训练效率高
● ArcFace直接优化geodesic distance margin(弧度),因为归一化超球体中的角和弧度的对应。
● 为了性能的稳定,ArcFace不需要与其他loss函数实现联合监督,可以很容易地收敛于任何训练数据集。
缺点:
● W模型很大
2. Angular Margin Loss
不管是SphereFace、CosineFace还是ArcFace的损失函数,都是基于传统的softmax loss进行修改得到的,公式(1)就是softmax loss损失函数。
首先把偏置b_j设置为0,,接着将特征向量归一化,权重归一化,然后乘以缩放系数s就得到公式(2)。
公式(3)便为最终的Angular Margin Loss。
公式解释如下:
在xi和Wji之间的θ上加上角度间隔m(注意是加在了角θ上),以加法的方式惩罚深度特征与其相应权重之间的角度,从而同时增强了类内紧度和类间差异。
惩罚θ角度的意思就是:训练时加上m就会使θ降低
解释Margin是如何使类内聚合类间分离的:比如训练时降到某一固定损失值时,有Margin和无Margin的e指数项是相等的,则有Margin的θ_yi就需要相对的减少了。这样来看有 Margin的训练就会把 i 类别的输入特征和权重间的夹角θ_yi缩小了,从一些角度的示图中可以看出,Margin把θ_yi挤得更类内聚合了,θ_yi和其他θ类间也就更分离了。
L2归一化来修正单个权重||W_j||=1,还通过L2归一化来固定嵌入特征||x_i|,并将其重新缩放成s。特征和权重的归一化步骤使预测仅取决于特征和权重之间的角度。因此,所学的嵌入特征分布在半径为s的超球体上。
由于提出的加性角度间隔(additive angular margin)惩罚与测地线距离间隔(geodesic distance margin)惩罚在归一化的超球面上相等,因此我们将该方法命名为ArcFace。
3. 人脸分类器训练过程
先将特征向量L2归一化,权重L2归一化,他俩的夹角为θ,计算cos(θj),求反余弦arccos(θyi)得到特征xi与真实权值Wyi之间的夹角θyi,添加角度间隔m,再求余弦cos(θyj+m),将所有的log乘以特征尺度s,然后将log送到softmax函数得到各类别概率。再用Ground Truth和One Hot Vector一起算出交叉熵损失。即DCNN特征和最后一个完全连接层之间的点积等于特征和权重归一化后的余弦距离。我们利用arc-cosine函数来计算当前特征和目标权重之间的角度。然后,在目标角上加上一个附加的角度间隔,用余弦函数重新计算逻辑回归的反向传播过程。然后,我们用一个固定的特征范数重新缩放所有的逻辑,随后的步骤与Softmax loss 中的步骤完全相同。
具体算法步骤如下:
核心速览
研究背景
- 研究问题:这篇文章要解决的问题是如何在深度人脸识别中增强特征嵌入的判别力和鲁棒性,特别是在存在大规模标签噪声的情况下。
- 研究难点:该问题的研究难点包括:传统的softmax损失和triplet损失在处理开放集人脸识别问题和大规模数据集时存在局限性;如何在存在大规模标签噪声的情况下训练出鲁棒的模型。
- 相关工作:该问题的研究相关工作有:基于margin的softmax方法(如SphereFace和CosFace)、处理大规模噪声数据的策略(如co-mining和weighting)、以及子类划分在人脸识别中的应用。
研究方法
这篇论文提出了ArcFace和sub-center ArcFace来解决深度人脸识别中的判别力和鲁棒性问题。具体来说,
- ArcFace:首先,作者提出了一种加性角间隔损失函数(ArcFace),其公式如下:
L3=−logescos(θyi+m)escos(θyi+m)+∑j=1,j eqyiNescosθjL3=−logescos(θyi+m)+∑j=1,j eqyiNescosθjescos(θyi+m)
其中,xixi表示第i个样本的深度特征,WyiWyi表示第y_{i}类的中心,ss是特征尺度,mm是角间隔。通过引入加性角间隔,ArcFace能够直接优化测地距离间隔,从而提高特征嵌入的判别力。
- sub-center ArcFace:为了应对大规模噪声数据,作者在ArcFace中引入了子类概念。每个类别包含K个子中心,训练样本只需接近任意一个正子中心。公式如下:
L7=−logescos(θyi+m)escos(θyi+m)+∑j=1,j eqyiNescosθjL7=−logescos(θyi+m)+∑j=1,j eqyiNescosθjescos(θyi+m)
其中,θjθj表示样本与第j个子中心的夹角,mm是角间隔。通过这种方式,sub-center ArcFace能够自动隔离主导子类和多个非主导子类,从而提高模型的鲁棒性。
- 模型反转:此外,作者还探讨了从特征向量到人脸图像的映射问题。通过使用网络梯度和Batch Normalization(BN)先验,预训练的ArcFace模型可以生成保持身份的面部图像。
实验设计
数据集:实验使用了多个数据集,包括CASIA、VGG2、MS1MV0、MS1MV3、Celeb500K和IBUG-500K。MS1MV0和Celeb500K包含大量噪声数据,通过sub-center ArcFace进行自动清洗。
实验设置:实验中使用了ResNet50和ResNet100作为嵌入网络,特征维度设为512。数据预处理包括生成标准化的面部图像(112x112)。训练过程中使用了SGD优化器,学习率调度根据不同数据集进行调整。
评估指标:实验评估了不同损失函数在LFW、CFP-FP、CPLFW、AgeDB、CALFW、MegaFace、IJB-B和LFR2019-Image等数据集上的性能。
结果与分析
ArcFace的效果:ArcFace在所有测试数据集上均表现出色,显著提高了特征的判别力。与传统的softmax损失相比,ArcFace在CFP-FP和AgeDB数据集上的验证准确率分别提高了约4%和3%。
sub-center ArcFace的效果:sub-center ArcFace在存在大规模噪声的数据集上表现尤为突出,显著降低了噪声对模型性能的影响。在MS1MV0数据集上,sub-center ArcFace将噪声率降低到约三分之一,同时在IJB-C数据集上达到了97.27%的TPR@FPR=1e-4。
模型反转的效果:预训练的ArcFace模型可以通过网络梯度和BN先验生成保持身份的面部图像。生成的图像在LFW数据集上的验证准确率为99.81%,在生成图像上的验证准确率为97.75%。
总体结论
这篇论文提出的ArcFace和sub-center ArcFace在深度人脸识别中显著提高了特征嵌入的判别力和鲁棒性。ArcFace通过优化测地距离间隔直接提高了特征的判别力,而sub-center ArcFace则通过引入子类概念自动隔离了主导子类和非主导子类,提高了模型在噪声数据上的鲁棒性。此外,预训练的ArcFace模型还可以通过模型反转生成保持身份的面部图像。总体而言,ArcFace及其扩展方法在多个基准数据集上均取得了最先进的性能。
论文评价
优点与创新
- 直观的几何解释:ArcFace通过精确对应角度和弧度在归一化超球面上的关系,直接优化了测地距离间隔,提供了直观的几何解释。
- 经济性:引入子类到ArcFace中,提高了在大规模真实世界噪声下的鲁棒性。提出的子中心ArcFace可以自动清理大规模原始网络人脸(如MS1MV0和Celeb500K),无需昂贵且密集的人力投入。
- 易用性:ArcFace仅需几行代码,在基于计算图的深度学习框架(如MxNet、Pytorch和Tensorflow)中极易实现。与之前的工作不同,ArcFace不需要与其他损失函数结合即可稳定收敛。
- 高效性:ArcFace在训练过程中仅增加了可忽略的计算复杂度。提出的中心并行策略可以轻松支持在单个服务器(8个GPU)上训练数百万身份。
- 有效性:使用IBUG-500K作为训练数据,ArcFace在十个人脸识别基准测试中取得了最先进性能,包括在大型图像和视频数据集上的表现。
- 生成能力:ArcFace不仅增强了判别特征嵌入,还加强了生成面部图像的能力。预训练的ArcFace模型可以通过使用网络梯度和BN层存储的统计先验来生成保持身份且视觉上合理的面部图像。
不足与反思
- 面部姿态和表情控制:ArcFace反演仅关注近似目标身份特征,面部姿态和表情不可控。未来将探索在反演过程中控制中间神经元激活以针对特定面部姿态和表情。
- 防止模型可逆性:未来还将探索如何使人脸识别模型不可逆,以防止面部图像从模型权重中轻易重建,从而保护隐私。
关键问题及回答
问题1:ArcFace如何通过加性角间隔损失函数(ArcFace)直接优化测地距离间隔?
ArcFace通过引入加性角间隔来优化测地距离间隔。具体来说,ArcFace的损失函数公式如下:
L3=−logescos(θyi+m)escos(θyi+m)+∑j=1,j eqyiNescosθjL3=−logescos(θyi+m)+∑j=1,j eqyiNescosθjescos(θyi+m)
其中,xixi表示第i个样本的深度特征,WyiWyi表示第y_{i}类的中心,ss是特征尺度,mm是角间隔。通过这种方式,ArcFace能够直接优化测地距离间隔,从而提高特征嵌入的判别力。与传统的softmax损失相比,ArcFace在CFP-FP和AgeDB数据集上的验证准确率分别提高了约4%和3%。
问题2:sub-center ArcFace如何通过引入子类概念来提高模型在大规模噪声数据上的鲁棒性?
sub-center ArcFace通过在每个类别中引入多个子中心来提高模型在大规模噪声数据上的鲁棒性。具体来说,每个类别包含K个子中心,训练样本只需接近任意一个正子中心。公式如下:
L7=−logescos(θyi+m)escos(θyi+m)+∑j=1,j eqyiNescosθjL7=−logescos(θyi+m)+∑j=1,j eqyiNescosθjescos(θyi+m)
其中,θjθj表示样本与第j个子中心的夹角,mm是角间隔。通过这种方式,sub-center ArcFace能够自动隔离主导子类和多个非主导子类,从而提高模型的鲁棒性。例如,在MS1MV0数据集上,sub-center ArcFace将噪声率从38.47%降低到12.40%,同时在IJB-C数据集上达到了97.27%的TPR@FPR=1e-4。
问题3:预训练的ArcFace模型如何通过模型反转生成保持身份的面部图像?
预训练的ArcFace模型可以通过网络梯度和Batch Normalization(BN)先验生成保持身份的面部图像。具体步骤如下:
- 使用ArcFace模型的前向传播计算输入图像的特征向量。
- 通过网络梯度反向传播,更新输入图像以最小化ArcFace损失。
- 在反向传播过程中,利用BN层存储的统计先验(如均值和方差)来约束生成的面部图像。
- 通过多次迭代,逐步更新输入图像,直到生成的图像在LFW数据集上的验证准确率达到99.81%,在生成的图像上为97.75%。
这种方法不仅能够生成保持身份的面部图像,还能在生成的图像上保持较高的视觉质量。