转自:https://zhuanlan.zhihu.com/p/76541084
ArcFace/InsightFace(弧度)是伦敦帝国理工学院邓建康等在2018.01发表,在SphereFace基础上改进了对特征向量归一化和加性角度间隔,提高了类间可分性同时加强类内紧度和类间差异,ArcFace: Additive Angular Margin Loss for Deep Face Recognition
主要思想
- 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的优点
- 性能高,易于编程实现,复杂性低,训练效率高
- ArcFace直接优化geodesic distance margin(弧度),因为归一化超球体中的角和弧度的对应。
- 为了性能的稳定,ArcFace不需要与其他loss函数实现联合监督,可以很容易地收敛于任何训练数据集。
- 缺点:W模型很大
损失函数
(1)Softmax loss
(2)Normalized version of Softmax Loss (NSL)
- 特征向量归一化,权重归一化
(3)A-Softmax Loss
- θ乘以决策余量m,进行权重归一化,并将偏置项归零(||W_i||=1,b_i=0)
(4)CosFace Loss
- CosFace的LMCL(大间隔余弦损失函数):权重归一化,特征向量归一化到一个固定值s,让cos(θ)加上m(注意是加在了余弦上)
(5)ArcFace 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。
- 决策边界:ArcFace:Additive Angular Margin,加法角度间隔
- SphereFace:Multiplicative Angular Margin,乘法角度间隔
- CosFace:Additive Cosine margin,加法余弦间隔
- 角度空间特征分步:ArcFace比Softmax的特征分布更紧凑,决策边界更明显,一个弧长代表一个类。
人脸分类器训练过程
先将特征向量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 中的步骤完全相同。
ArcFace与SphereFace、CosFace比较
(1)数值相似性
在SphereFace、ArcFace和CosFace中,提出了三种不同的margin惩罚,分别是乘法角度间隔m1、加法角度间隔m2、加法余弦间隔m3。从数值分析的角度来看,不同的margen惩罚,无论是加上角度空间还是加在余弦空间,都通过惩罚目标逻辑(target logit),来加强类内紧度和类间多样性。
图4a中ArcFace训练时角度会不断减小,从90到30度。图4b绘制了在其最佳margin设置下的目标逻辑曲线。目标logit曲线中影响性能的因素有三个,即起点、终点和斜率。
(2)联合margin
通过结合所有的margin惩罚(cos(m1*θ+m2)−m3) ,我们可以很容易地得到其他一些同样具有高性能的目标逻辑曲线。如图4b的CM1线
(3)几何差异
- ArcFace的在整个区间内具有恒定的线性角度margen,margen保持不变。注意图5二分类情况下的决策边界的坐标轴是θ,而不是cos(θ)。尽管ArcFace与以往的工作相似,但由于角度与测地距离具有精确的对应关系,提出的加性角度间隔具有较好的几何属性。
- CosFace的margen在角度空间上有非线性的角度间隔,但在cos空间上是直线;
- SphereFace在θ比较小时margen也比较小;
- Softmax没有margen。
弧矩
- ArcFace是在角度空间分割,ArcFace的angular margin对应着弧距(arc margin)(也叫geodesic测地距离),就是在超球面曲面上的最小距离。而不是两特征点之间直接相连的距离。
设计组合margin损失函数
基于中心和特征归一化,所有身份分布在超球面上。为了提高类内密度和类间差异,我们比较了四种测地线距离/弧度/角度约束(Geodesic Distance (GDis) constraint),根据特征和权重向量的角度表示来设计。
- (A) 间隔损失(Margin-Loss):在样品和中心之间插入角度margin。角度空间。大量的实验结果表明(A)策略是最有效的。
- 样本用x表示,中心用W表示。中心就是最终人脸特征表示,如SphereFace中假设最后一个完全连接层中的线性变换矩阵可以表示角度空间中类别的中心。
- (B) 类内损失:减少样本与相应真实中心之间的角度/弧来提高类内紧密性。L2时特征向量和权重归一化的NSL函数。内部损失可以有效压缩类内变化,但也会带来较小的类间角度。
- (C) 类间损失:增加不同中心之间的角度/弧来增强类间差异。类间损失可以略微增加W(直接)和嵌入网络(间接)上的类间差异,但也会增加类内角度。
- (D) 基于角度间隔的三元组损失:在三元样品之间插入测地线距离margin。余弦空间。与ArcFace相比,三元损失具有相似的类内紧度,但类间差较低。ArcFace已经具有很好的类内紧凑性和类间差异性。
数据集
- 训练数据集:分别采用CASIA、VGGFACE2、MS1MV2、DeepGlint-Face(包括MS1M-Deepglin和Asian-Deepglin)
- 人脸验证数据集:LFW、YTF、CFP-FP、AGEDB-30
- 大姿态和大年龄数据集:CPLFW、CALFW
- 大规模图像数据集:MegaFace,IJB-B,IJB-C,Trillion-Pairs,iQIYI-VID(视频)
实验设置
按照Sphereface和CosFace中相同方法MTCNN,来生成五个面部关键点生成归一化的面部裁剪图像(112×112)。对于嵌入网络,我们采用了广泛使用的CNN架构,ResNet50和ResNet100。在最后一个卷积层之后,我们探索了BN-Dropout-FC-BN结构,得到了最终的512-D嵌入特性。
按照CosFace将设置特征比例s=64,并选择角度间隔m=0.5(SphereFace和CosFace分别为1.35和0.35时性能最佳)。批量大小设置为512,在CASIA上,学习率从0.1开始,在20k,28k迭代时除以10。训练过程在32K迭代时完成。在MS1Mv2上,我们将学习速率划分为100k、160k次迭代,并在180k次时迭代完成。我们将动量设置为0.9,重量衰减为5e-4。
在测试过程中,我们只保留没有全连接层的特征嵌入网络(resnet50为160MB,resnet100为250MB),并为每个归一化的人脸提取512维度的特征(resnet50为8.9ms/面,resnet100为15.4ms/面)。为了获得模板(e.g. IJB-B and IJB-C)或视频(e.g. YTF and iQIYI-VID)的嵌入特征,我们只需计算来自模板所有图像或视频中所有帧的特征中心 。注意,为了进行严格的评估将删除训练集和测试集之间的重叠标识并,且我们只对所有测试使用一个裁剪。
测试结果
- LFW上99.83%,YTF上98.02%。用了580万数据训练
- MegaFace Challenge1的人脸识别和验证比较。表6
- 损失函数的比较:m=0.5时最好,使用ResNet50结构和CASIA训练集。表2
- 不同组合margin相关参数的设置,最好性能比SphereFace和CosFace框架更好但上限是ArcFace。
- 比较了Arcface与其他可以减小类内间距加大类间距离的损失函数进行对比,结果表示Arcface已经增强了类内的紧凑性、类间的差异性。
- 训练高效:W很大,但我们可以很容易地把它拆开
参考:
作者视频 参考1
Lightweight Face Recognition Challenge: http://insightface-challenge.com
模型库(LResNet50E-IR 99.8%、MobileFaceNet 99.50%等): https://github.com/deepinsight/insightface/wiki/Model-Zoo
作者源码MXNet: https://github.com/deepinsight/insightface
TensorFlow各大小: https://github.com/auroua/InsightFace_TF
insightface-caffe: https://github.com/xialuxi/arcface-caffe
Pytorch: https://github.com/TreB1eN/InsightFace_Pytorch