人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

原文链接:点击打开链接

1. From Softmax to ArcFace 

1.1 softmax

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

  其中x_i表示第i个样本的深度特征,属于第y_i类。特征的维数d设置为512维。w_j表示最后全连接层的权值W的第j列,b是偏置项。batchsize和类别数分别为m和n。


1.2 weights normalisation

  简单地,我们固定b_j=0,然后将目标对数函数转换为如下:

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

我们用L2正则固定||w_j||=1,使得预测仅仅依赖于特征向量和权重之间的角度。

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

在sphereface实验中,L2权重正则仅仅提高了一点性能。

1.3 Multiplicative Angular Margin

  在sphereface中,角边界m以乘法的方式引进到角度中。
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition
其中人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition。为了去除这个限制,人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition用一个分段单调函数人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition代替。sphereface制定为:
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition
m是一个大于等于1的整数,用于控制角边界的大小。然而,在实现sphereface中,softmax监督用于保证训练收敛,这个权重用动态超参数人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition来控制,人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition事实上是:
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition
其中人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition是一个超参数来促进sphereface训练。在开始的时候人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition设置为1000,然后减少到5,使得每个类的角空间更加紧凑。这个传统的动态超参数人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition使得sphereface训练比较棘手。

1.4 特征归一化

  特征归一化广泛应用于人脸验证,比如,L2归一化欧式距离和余弦距离。我们用L2归一化固定||x_i||,重新缩放||x_i||到s,本文固定s=64。基于特征和权重归一化,我们可以得到人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition。如果将特征归一化应用到sphereface,我们可以得到特征归一化的sphereface,表示为SphereFace-FNorm:
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

1.5 可调整的余弦边界

  余弦边界m移动到了人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition外面,因此他们提出了余弦边界损失函数:点击打开链接

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

在这篇文章中,我们设置余弦边界m为0.35。对比sphereface,可调整的余弦边界(CosineFace)有三个优势:(1)没有棘手的超参数极容易实现;(2)更清晰和在没有soft max监督下更容易训练;(3)明显的性能提升。

1.6 可调整的角度边界

  尽管余弦边界从余弦空间到角空间是一对一的映射,这两个边界仍然有差别。事实上,角度边界比余弦边界有更加清晰的几何解释,角空间的边界在超球面流形上对应arc距离。我们增加了角边界m在人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition里面。

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition,对于分类这个约束更加严格。我们提出的ArcFace定义如下:

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition


1.7 在二分类情况下比较

  为了更好的理解从softmax到ArcFace的过程,我们给出了在二分类情况下的决策边界,如表1和图3所示。基于权重和特征归一化,这个主要的不同在我们提出的边界方法。

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition


2. 实验

2.1 实验数据

(1)训练集--VGG2MS-Celeb-1M

VGG2VGG2数据集包含一个有8,631个身份(3141890个图像)的训练集和一个包含500个身份的测试集(169,396个图像)。VGG2在姿势、年龄、光照、种族和职业方面有很大的变化。因为VGG2是一个高质量的数据集,所以我们直接使用它而不需要进行数据优化。

MS-Celeb-1M:最初的MS-Celeb-1M数据集包含100 k个身份和1000万张图片。为了减少噪声获得高质量的训练数据:

1)将每个身份的人脸图像都按照距离身份中心的距离进行排序。对于特定的身份,人脸图像的特征向量离身份特征中心太远则自动移除。

2)手动核对第一步中阈值附近的人脸。

3) 最后得到一个380万张85k个身份的数据集。


(2)验证集--LFWCFPAgeDB

LFW13233张图像,5749个身份,6000个人脸对。

CFP500个身份,每个身份有10个正脸,4个侧脸。评估方案:frontal-frontal (FF) and frontal-profile (FP) 人脸验证,有十个文件夹,每个文件夹有350个相同人和350个不同人。本文用CFP-FP进行挑战。

AgeDB:户外数据集。包含12240个身份,每张图片都有关于身份、年龄和性别属性的注释。最小和最大年龄分别为3101。测试数据:四组测试数据,对应不同的年间隔(5,10,20,30)。


(3)测试集--MegaFace

gallery set(参考图像集):Flickr的子集,包括1百万张图像,690k不同的身份。

probe set(测试集):包含FaceScrubFGNet

FaceScrub包含100k张图,530个不同身份,55742个男性,52076个女性。FGNet是一个人脸年龄数据集,有1002张图,包含82个人,每个人有多个不同年龄(范围为1到69岁)人脸图片。

数据清洗:1)FaceScrub数据集中有605个噪声人脸图(人脸和身份不匹配),提升这个身份准确率1%;2)MegaFace数据集干扰项,最后找到707个噪声人脸图,在测试时,增加一维传统特征用于区别噪声人脸,提升身份准确率约15%。


2.2 网络设置

  我们首先使用VGG2作为训练数据,Softmax作为损失函数,基于不同的网络结构设置来评估人脸验证的性能。本文所有的实验都在MxNet框架下实现。我们设置batchsize的大小为512,训练模型在四个或者八个NVIDIA Tesla P40 (24GB)GPUs。学习率从0.1开始,在100k, 140k, 160k迭代次数的时候都除以10。总共迭代次数设为200k。我们设置动量为0.9,权重衰减率为5e-4。

(1)输入设置

  我们使用五个人脸关键点(眼睛中心、鼻尖、嘴角)。图片大小为112*112,在RGB图像的每一个像素值大小为[0,255]通过减去127.5然后除以128归一化。在第一个卷积层,我们使用卷积3*3,步长为1代替卷积7*7,步长为2。

(2)输出设置

  嵌入特征维数设置为512。

(3)块设置

  除了原始的ResNet单元之外,我们也研究了一种对于训练人脸识别模型更有利的残差单元设置。在图7中,显示了改进的残差单元(称为:“IR”),包含BN-Conv-BN-PReLu-Conv-BN结构。对比残差单元,我们设置步长为2在第二个卷积层而不是第一个卷积层。另外,PReLu用来代替原来的ReLu。

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition


(4)Backbones

  基于模型结构设计的最新进展,我们也探索了在MobileNet, InceptionResnet-V2 , Densely connected convolutional networks(DenseNet), Squeeze and excitation networks(SE)  and Dual path Network (DPN)做了深度人脸识别。本文,我们从准确率、速度和模型大小的角度对比了不同网络。

(5)网络设置结论

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

2.3 损失设置

  边界参数m有很重要的作用在ArcFace算法中,首先我们做实验来寻找最好的角边界。变量m从0.2到0.8,我们使用LMobileNetE网络和ArcFace损失函数在重新定义的MS1M数据集上训练模型。如表6所示,性能持续提升从m=0.2到m=0.5在所有数据集上。从m=0.5验证集正确率开始减小。本文,我们固定可调节角边界m=0.5。
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

2.4 MegaFace Challenge1 on FaceScrub

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition
人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition