目录
摘要
在使用DCNN进行大规模人脸识别的特征学习中,一个主要的挑战是设计适当的loss来增强识别能力。Center loss惩罚欧氏空间中深层特征与其对应的类中心之间的距离,以实现类内紧凑性(intra-class compactness)。SphereFace(CVPR2017)假设最后一个全连接层中的线性变换矩阵可以用作angular空间中类中心的表示,并以 m m m的方式惩罚深度特征与其相应权重之间的角度。最近,一个流行的研究方向是将 margins(边际)纳入构建好的损失函数中,以最大限度地提高面部类别的可分性。在本文中,我们提出了一种加性角度裕度损失(ArcFace)来获得人脸识别的高分辨特征。由于与超球面(hypersphere)上的几何距离精确对应,本文提出的Arcface具有清晰的几何解释。我们在10多个人脸识别基准上对所有最新的最先进的人脸识别方法进行了实验评估,包括一个新的大规模图像数据库(具有万亿级pairs)和一个大规模视频数据集。我们证明,ArcFace优于最新技术,并且可以轻松实现,计算开销可以忽略不计。
1.Introduction
使用深度卷积神经网络(DCNN)embedding的人脸表示是人脸识别的首选方法。DCNN通常在归一化步骤之后,将人脸图像映射为具有较小类内距离和较大类间距离的特征。
训练DCNN进行人脸识别有两条主要的研究路线。那些训练多类分类器的可以在训练集中分离不同的身份,例如通过使用softmax分类器,以及那些直接学习embedding的,例如triplet loss。基于大规模训练数据和精心设计的DCNN体系结构,基于softmax损失的方法和基于三元组损失的方法都可以在人脸识别方面获得优异的性能。然而,softmax loss和triplet loss都有一些缺点。对于Softmax loss:
- 线性变换矩阵的大小随着identities数的增加而线性增加。
- 对于闭集分类问题,学习到的特征是可分离的,但对于开集人脸识别问题,学习到的特征没有足够的辨别力。
对于Triplet loss:
- 人脸triplets的数量呈组合爆炸式增长,尤其是对于大规模数据集,导致迭代步骤的数量显著增加;
- semi-hard样本挖掘对于有效的模型训练来说是一个相当困难的问题(很难挖掘难分类样本)。
目前已经提出了几种变体,以增强softmax loss的识别能力。Wen等人率先提出了center loss,即通过缩小每个特征向量与其类中心之间的欧几里德距离,以获得类内紧凑性,同时通过对softmax损失的联合惩罚来保证类间分散。然而,由于可供训练的FR类别数量最近急剧增加,在训练期间更新实际的类中心极其困难。
通过观察DCNN的最后一个全连接层在softmax损失上训练的权值与每个face类的中心具有概念上的相似性,有工作提出了一种乘 m m m的角裕度惩罚,以同时加强额外的类内紧致性和类间差异性,使训练有素的模型具有更好的辨别力。尽管Sphereface引入了角裕度的重要思想,但它们的损失函数需要一系列近似才能计算,这导致了网络的不稳定训练。为了稳定训练,他们提出了一种混合loss,其中包括标准的softmax loss。从经验上看,softmax损失在训练过程中占主导地位,因为基于整数的乘法角度裕度使得目标logit曲线非常陡峭,从而阻碍收敛。CosFace直接向目标logit添加了余弦惩罚,与SphereFace相比,它获得了更好的性能,允许更容易实现,并且免除了对softmax损失进行联合监督的需要。
CosFace:来自论文CosFace:Large Margin Cosine Loss for Deep Face Recognition(CVPR2018),与L-Softmax和SphereFace不同,论文提出的损失引入一个cosine margin来进行度量的约束,让当前样本所属的类别在减去一个
m
m
m之后仍然属于这个类别,即:
c
o
s
(
θ
1
)
−
m
>
c
o
s
(
θ
2
)
cos(\theta_{1})-m>cos(\theta_{2})
cos(θ1)−m>cos(θ2)因此,LMCL为:
其中,
c
o
s
(
θ
j
,
i
)
=
W
j
T
x
i
cos(\theta_{j},i)=W_{j}^{T}x_{i}
cos(θj,i)=WjTxi,
s
s
s用于缩放,比如考虑softmax:
其中,
f
j
=
W
j
T
x
=
∣
∣
W
j
∣
∣
⋅
∣
∣
x
∣
∣
c
o
s
θ
j
f_{j}=W_{j}^{T}x=||W_{j}||\cdot||x||cos\theta_{j}
fj=WjTx=∣∣Wj∣∣⋅∣∣x∣∣cosθj,如果对
W
W
W和
x
x
x都做normalization为1,由于
x
x
x norm会导致训练loss太大,所以进行缩放,固定为大小
s
s
s。
注意, L l m c L_{lmc} Llmc中margin的相减操作是针对cosine的,所以scale的缩放仍然放在最外层。
在本文中,我们提出了一种加性角裕度损失(ArcFace),以进一步提高人脸识别模型的识别能力,并稳定训练过程。如图2所示,DCNN特征和最后一个全连接层之间的点积等于特征和权重归一化后的余弦距离。我们使用arc-cosine来计算当前特征和目标权重之间的角度。我们向目标角度添加一个附加的角度裕度,然后通过余弦函数再次得到目标logit。我们通过一个固定的特征规范重新缩放所有logit,后续步骤与softmax loss中的步骤完全相同。提出arcface的优点总结如下:
- ArcFace通过归一化超球面中角度和圆弧之间的精确对应关系直接优化测地距离裕度。通过分析特征和权重之间的角度统计,我们直观地说明了在512-D空间中发生了什么。
- ArcFace在包括大规模图像和视频数据集在内的十个人脸识别基准上实现了最先进的性能。
- ArcFace只需要几行代码,在基于计算图的深度学习框架中非常容易实现,例如MxNet、Pytorch和Tensorflow。此外,ArcFace不需要与其他损失函数结合以获得稳定的性能,并且可以很容易地收敛于任何训练数据集。
- ArcFace在训练期间只增加了微不足道的计算复杂性。当前的GPU可以轻松支持数百万个identities进行训练,模型并行策略可以轻松支持更多identities。
- 图1:基于中心和特征归一化,所有identities都分布在超球面上。为了增强类内紧凑性和类间差异,我们考虑了四种测地距离(GDis,Geodesic Distance)约束。
- A边距损失Margin-Loss:在样本和中心之间插入测地距离边距。
- B类内损耗Intra-Loss:减小样本与相应中心之间的测地距离。
- C类间损耗Inter-Loss:增加不同中心之间的测地距离。
- D三元组损失Triplet-Loss:在三元组样本之间插入测地距离边距。
- 为了提高人脸识别模型的识别能力,本文提出了一种与A中测地距离(Arc margin)惩罚完全对应的加性角margin损失(ArcFace)。大量的实验结果表明,A策略是最有效的。
- 图2:训练一个DCNN进行人脸识别,由ArcFace loss监督。
- 基于normalization的特征 x i x_{i} xi和权重 W W W,我们得到 c o s ( θ j ) cos(\theta_{j}) cos(θj)(即logit)对应 W j T x i W^{T}_{j}x_{i} WjTxi。我们计算 a r c c o s θ y i arccos\theta_{y_{i}} arccosθyi,得到特征 x i x_{i} xi和ground truth权重向量 W y i W_{y_{i}} Wyi之间的夹角。实际上, W j W_{j} Wj为类别 j j j提供了一个中心。然后,我们在目标(GT)角度 θ y i \theta_{y_{i}} θyi上增加一个角度裕度惩罚 m m m,我们计算 c o s ( θ y i + m ) cos(\theta_{y_{i}}+m) cos(θyi+m),然后再乘被 s s s缩放后的logits。然后,logits通过softmax函数,并输入给交叉熵损失。
2.Method
2.1.ArcFace
广泛使用的softmax loss为: L 1 = − 1 N ∑ i = 1 N l o g e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j L_{1}=-\frac{1}{N}\sum_{i=1}^{N}log\frac{e^{W_{y_{i}}^{T}x_{i}+b_{y_{i}}}}{\sum_{j=1}^{n}e^{W_{j}^{T}x_{i}+b_{j}}} L1=−N1i=1∑Nlog∑j=1neWjTxi+bjeWyiTxi+byi其中, x i ∈ R d x_{i}\in R^{d} xi∈Rd代表第 i i i个样本属于类别 y i y_{i} yi。本文将这个embedding特征维数 d d d设置为512。 W j W_{j} Wj是类别 j j j对应的权重向量。批次大小和类别数量分别为 N N N和 n n n。传统的softmax loss被广泛应用于深度人脸识别。然而,softmax损失并未明确优化特征embedding,以提高类内样本的相似性和类间样本的多样性,这导致在较大的类内外观变化(例如姿势变化和年龄差异)和大规模测试场景(例如百万或万亿pairs)下,深度人脸识别的性能存在差距。
我们令
b
j
=
0
b_{j}=0
bj=0,此时
W
j
T
x
i
=
∣
∣
W
j
∣
∣
⋅
∣
∣
x
i
∣
∣
c
o
s
θ
j
W_{j}^{T}x_{i}=||W_{j}||\cdot||x_{i}||cos\theta_{j}
WjTxi=∣∣Wj∣∣⋅∣∣xi∣∣cosθj,我们用L2正则化使得
∣
∣
W
j
∣
∣
=
1
||W_{j}||=1
∣∣Wj∣∣=1。我们对
x
i
x_{i}
xi正则并缩放到大小为
s
s
s。正则化步骤可以让prediction仅取决于特征和权重之间的夹角。因此,学习到的特征将分布在半径为
s
s
s的超球面上。
L
2
=
−
1
N
∑
i
=
1
N
l
o
g
e
s
c
o
s
θ
y
i
e
s
c
o
s
θ
y
i
+
∑
j
=
1
,
j
≠
y
i
n
e
s
c
o
s
θ
j
L_{2}=-\frac{1}{N}\sum_{i=1}^{N}log\frac{e^{scos\theta_{y_{i}}}}{e^{scos\theta_{y_{i}}}+\sum_{j=1,j\neq y_{i}}^{n}e^{scos\theta_{j}}}
L2=−N1i=1∑Nlogescosθyi+∑j=1,j=yinescosθjescosθyi由于embedding特征坏绕在超球面上的每个特征中心,我们在
x
i
x_{i}
xi和
W
y
i
W_{y_{i}}
Wyi之间添加了一个附加的角裕度惩罚
m
m
m,以同时增强类内紧致性和类间差异性。由于提出的附加角裕度惩罚等于归一化超球面中的测地距离裕度惩罚,我们将我们的方法命名为ArcFace。
L
3
=
−
1
N
∑
i
=
1
N
l
o
g
e
s
(
c
o
s
(
θ
y
i
+
m
)
)
e
s
(
c
o
s
(
θ
y
i
+
m
)
)
+
∑
j
=
1
,
j
≠
y
i
n
e
s
c
o
s
θ
j
L_{3}=-\frac{1}{N}\sum_{i=1}^{N}log\frac{e^{s(cos(\theta_{y_{i}}+m))}}{e^{s(cos(\theta_{y_{i}}+m))}+\sum_{j=1,j\neq y_{i}}^{n}e^{scos\theta_{j}}}
L3=−N1i=1∑Nloges(cos(θyi+m))+∑j=1,j=yinescosθjes(cos(θyi+m))我们从8个包含足够样本(约1500class)的不同身份中选择人脸图像,分别用softmax和ArcFace loss训练二维特征嵌入网络。如图3所示,softmax损失提供了大致可分离的特征嵌入,但在决策边界中产生了明显的模糊性,而ArcFace损失显然会在最近的类别之间造成更明显的差距。
- 图3:softmax和ArcFace loss下的toy示例,基于8个具有2D特征的identities。点表示样本,线表示每个身份的中心方向。基于特征归一化,所有人脸特征都被推送到具有固定半径的圆弧空间。随着附加角裕度惩罚的加入,最近类别之间的测地距离差距变得明显。
2.2.Comparison with SphereFace and CosFace
数值上的相似
在SphereFace、ArcFace和CosFace中,提出了三种不同的裕度惩罚,分别是乘法角裕度
m
1
m_{1}
m1、加法角裕度
m
2
m_{2}
m2和加法余弦裕度
m
3
m_{3}
m3。从数值分析的角度来看,不同的margin惩罚,无论是加上角度还是在余弦空间相加,都通过惩罚目标logit来加强类内紧凑性和类间多样性。在图4b中,我们绘制了SphereFace、ArcFace和CosFace在其最佳margin设置下的目标logit曲线。我们只在部分范围内显示这些目标logit曲线,因为
W
y
i
W_{y_{i}}
Wyi和
x
i
x_{i}
xi之间的角度从90度左右开始(随机初始化)并在30度左右结束,如图4a所示。直观地说,目标logit曲线中有三个因素会影响性能,即起点、终点和斜率。
- 图4:Target logit分析, θ j \theta_{j} θj分布为从ArcFace训练的开始到结束。Target Logit 曲线包括softmax、SphereFace、ArcFace、CosFace。统一写成表达式 c o s ( m 1 θ + m 2 ) − m 3 cos(m_{1}\theta+m_{2})-m_{3} cos(m1θ+m2)−m3
通过结合所有的margin惩罚,我们在一个统一的框架中实现了SphereFace、ArcFace和CosFace,其中 m 1 , m 2 , m 3 m_1,m_2,m_3 m1,m2,m3是超参数。 L 4 = − 1 N ∑ i = 1 N l o g e s ( c o s ( m 1 θ y i + m 2 ) − m 3 ) e s ( c o s ( m 1 θ y i + m 2 ) − m 3 ) + ∑ j = 1 , j ≠ y i n e s c o s θ j L_{4}=-\frac{1}{N}\sum_{i=1}^{N}log\frac{e^{s(cos(m_{1}\theta_{y_{i}}+m_{2})-m_{3})}}{e^{s(cos(m_{1}\theta_{y_{i}}+m_{2})-m_{3})}+\sum_{j=1,j\neq y_{i}}^{n}e^{scos\theta_{j}}} L4=−N1i=1∑Nloges(cos(m1θyi+m2)−m3)+∑j=1,j=yinescosθjes(cos(m1θyi+m2)−m3)基于这个统一的损失,我们可以很容易地得到其他一些同样具有高性能的目标logit曲线。
几何上的差异
尽管ArcFace和以前的工作在数值上相似,但由于角裕度与测地距离精确对应,因此提出的附加角裕度具有更好的几何属性。如图5所示,我们比较了二元分类情况下的决策边界。arcFace在整个margin内具有恒定的线性角裕度。相比之下,SphereFace和CosFace只具有非线性角裕度。
- 图5:二元分类情况下不同损失函数的决策裕度。虚线表示决策边界,灰色区域表示决策裕度。
margin设计的微小差异可能会对训练产生“蝴蝶效应”。例如,原始SphereFace采用了退火优化策略。为了避免训练开始时出现分歧,SphereFace中使用了softmax的联合监督,以削弱乘法margin的惩罚。我们通过使用arc-cosine而不是使用复杂的双角度公式,实现了一个新版本的SphereFace,它对margin没有整数要求。在我们的实现中,我们发现 m = 1.35 m=1.35 m=1.35可以在没有任何收敛困难的情况下获得与原始SphereFace类似的性能。
2.3.Comparison with SphereFace and CosFace
其他损失函数可以基于特征和权重向量的角度表示来设计。例如,我们可以设计一个loss来增强超球面上的类内紧凑性和类间差异性。如图1所示,我们与本文中的其他三种损失进行了比较。
Intra-Loss
Intra-Loss旨在通过减小样本与GT中心之间的角度来提高类内紧凑性。
Inter-Loss
Inter Loss的目标是通过增加不同中心之间的角度/弧度来增强类间差异。
Triplet-loss
Triplet-loss旨在扩大triplet之间的角度/弧度。
3.Experiments
- 图6:MegaFace上不同模型的CMC和ROC曲线。结果在原始和改进的MegaFace数据集上进行评估。
- 表1:不同损失函数得到的结果比较。
个人总结
从设计损失函数的角度做出了贡献,在ArcFace中,提出了统一的softmax loss框架,可以统一表示CosFace(余弦空间下的加法惩罚),SphereFace(角度空间下的乘法惩罚)和ArcFace(角度空间下的加法惩罚): L 4 = − 1 N ∑ i = 1 N l o g e s ( c o s ( m 1 θ y i + m 2 ) − m 3 ) e s ( c o s ( m 1 θ y i + m 2 ) − m 3 ) + ∑ j = 1 , j ≠ y i n e s c o s θ j L_{4}=-\frac{1}{N}\sum_{i=1}^{N}log\frac{e^{s(cos(m_{1}\theta_{y_{i}}+m_{2})-m_{3})}}{e^{s(cos(m_{1}\theta_{y_{i}}+m_{2})-m_{3})}+\sum_{j=1,j\neq y_{i}}^{n}e^{scos\theta_{j}}} L4=−N1i=1∑Nloges(cos(m1θyi+m2)−m3)+∑j=1,j=yinescosθjes(cos(m1θyi+m2)−m3)目的是增大类间差异,缩小类内差异,通过强制将特征限制在超球面的流形上,然后用几何意义的方式惩罚训练过程,从而让模型直接学习到与超球面流形匹配的判别性特征分布。ArcFace直接显式地在角度空间里做加法惩罚,让决策边界在几何意义下保持线性,避免了SphereFace和CosFace出现非线性决策边界的状况。