论文阅读笔记:ArcFace: Additive Angular Margin Loss for Deep Face Recognition
- [1 背景](#1 背景)
- [2 创新点](#2 创新点)
- [3 方法](#3 方法)
- [4 模块](#4 模块)
-
- [4.1 Softmax](#4.1 Softmax)
- [4.2 权重归一化](#4.2 权重归一化)
- [4.3 乘性角度间隔](#4.3 乘性角度间隔)
- [4.4 特征归一化](#4.4 特征归一化)
- [4.5 加性余弦间隔](#4.5 加性余弦间隔)
- [4.6 加性角度间隔](#4.6 加性角度间隔)
- [4.7 二值化情况下的比较](#4.7 二值化情况下的比较)
- [4.8 目标Logit分析](#4.8 目标Logit分析)
- [5 效果](#5 效果)
-
- [5.1 消融实验](#5.1 消融实验)
- [5.2 和SOTA方法对比](#5.2 和SOTA方法对比)
论文:https://arxiv.org/pdf/1801.07698
代码:https://github.com/deepinsight/insightface
1 背景
通过深度卷积网络嵌入的人脸表示被认为是目前最先进的人脸验证、人脸聚类和人脸识别方法。深度卷积网络负责将人脸图像(通常经过姿态归一化步骤)映射为嵌入特征向量,使得同一个人的特征具有较小的距离,而不同个体的特征具有相当大的距离。
通过深度卷积网络嵌入的各种人脸识别方法在三个主要属性上是不同的。
第一个属性是用于训练模型的训练数据。虽然公开可用的训练数据有大量的ID,但它们存在注释噪声和长尾分布。由于在训练数据规模上存在数量级上的差异,来自工业界的人脸识别模型的性能要远远优于来自学术界的模型。训练数据的差异也使得一些深度人脸识别结果不完全具有可重复性。
第二个属性是网络架构和设置。高容量深度卷积网络,如Resnet和Inception-ResNet可以获得比VGG和Inception V1更好的表现。不同的深度人脸识别应用在速度和精度之间的均衡是不同的。对于移动设备上的人脸验证,实时的运行速度和紧凑的模型尺寸至关重要,对于十亿级别的安防系统,高精度和效率同等重要。
第三个属性是损失函数的设计。
-
基于欧式间隔的损失。一个Softmax分类层在一组已知的ID上训练,然后从网络的中间层提取特征向量,并用于在训练集ID之外的泛化识别。中心损失,范围损失,间隔损失等通过增加额外的惩罚来压缩类内差距或增加类间差距来提高识别率,但都是结合Softmax来训练识别模型。然而,当身份数量增加到百万级别时,基于分类的方法在分类层上 承受这巨大的GPU内存小号,并且需要为每个身份提供平衡和充足的训练数据。对比损失和三元组损失使用了成对训练策略。对比损失函数由正对和负对组成。损失函数的梯度拉拢正对,推开负对。三元组损失最小化锚与正样本之间的距离,最大化锚与来自不同身份的负样本之间的距离。然而,由于选择有效的训练样本,对比损失和三元组损失的训练过程非常困难。
-
基于角度和余弦间隔的损失。L-Softmax损失通过为每个身份添加乘性角度约束来提高特征区分度。SphereFace c o s ( m θ ) cos(m\theta) cos(mθ) 将L-Softmax应用于权值归一化的深度人脸识别。由于余弦函数的非单调性,在SphereFace中应用分段函数来保证单调性。在SphereFace的训练过程中,结合了Softmax损失,以方便和保证收敛。为了克服SphereFace的优化难度,加性余间隔际 c o s ( θ ) − m cos(\theta)-m cos(θ)−m 将角间隔际移入余弦空间。加性余间隔际的实现和优化比SphereFace容易很多。与基于欧间隔际的损失相比,基于角和余间隔际的损失显式地增加了对超球面体流形的判别性约束,这与人脸位于流形上的先验是内在匹配的。
众所周知,数据、网络和损失这3个属性对人脸识别模型的性能有着从高到低的影响。
2 创新点
在本文中,作者从上述的三个属性为提高深度人脸识别做出贡献。
-
作者以自动和手动两种方式精细了训练数据和测试数据。
-
本文提出的网络结构在年龄和姿态的巨大变化下仍然具有鲁棒性。并探索了速度和精度之间的权衡
-
作者提出了一种新的损失函数,加性角度间隔(ArcFace),用于学习高判别性的特征,以实现鲁棒的人脸识别。
3 方法

如图1所示,所提出的损失函数 c o s ( θ + m ) cos(\theta+m) cos(θ+m) 直接基于L2归一化权重和特征在角度(弧度)空间中最大化决策边界。
4 模块
4.1 Softmax
应用最广泛的分类损失函数Softmax loss如下:
其中 x i ∈ R d x_i∈R^d xi∈Rd 表示第 i i i 个样本的深层特征,属于第 y i y_i yi 类。本文将特征维数 d d d 设置为512。 W j ∈ R d W_j∈R^d Wj∈Rd 表示最后一个全连接层中权重 W ∈ R d × n W∈R^{d×n} W∈Rd×n 的第 j j j 列, b b b 为偏差项。批次大小和类别数分别为 m m m 和 n n n。传统的Softmax损失被应用于深度人脸识别。然而,Softmax损失函数没有显式地优化特征,使其对正样本对具有较高的相似度得分,对负样本对具有较低的相似度得分,从而导致性能较差。
4.2 权重归一化
为了简单起见,通常将固定偏差 b j = 0 b_j=0 bj=0 。然而,对目标logit做出如下变换:
然后,通过L2标准化来固定 ∣ ∣ W j = 1 ∣ ∣ ||W_j=1|| ∣∣Wj=1∣∣ ,这使得预测结果只依赖特征向量和权重之间的夹角。
在SphereFace的实验中,L2权重归一化对性能的提升不大。
4.3 乘性角度间隔
在SphereFace中,角度间隔 m m m 是通过角度上的乘法引入的:
其中 θ y i ∈ [ 0 , π / m ] \theta_{y_i}∈[0,\pi/m] θyi∈[0,π/m]。为了消除这个限制,用分段单调函数 ψ ( θ y i ) \psi(\theta_{y_i}) ψ(θyi) 代替 c o s ( m θ y i ) cos(m\theta_{y_i}) cos(mθyi), ShereFace的表达式为:
其中 ψ ( θ y i ) = ( − 1 ) k c o s ( m θ y i ) − 2 k , θ y i ∈ [ k π m , ( k + 1 ) π m ] , k ∈ [ 0 , m − 1 ] , m ≥ 1 \psi(\theta_{y_i})=(-1)^kcos(m\theta_{y_i})-2k,\theta_{y_i}∈[\frac{k\pi}{m},\frac{(k+1)\pi}{m}],k∈[0,m-1],m≥1 ψ(θyi)=(−1)kcos(mθyi)−2k,θyi∈[mkπ,m(k+1)π],k∈[0,m−1],m≥1 是控制角间隔际大小的整数。然而,SphereFace的实现过程中,为了保证训练的收敛性,引入了Softmax损失监督,权重由一个动态的超参数 λ \lambda λ 控制。加上额外的Softmax损失后, ψ ( θ y i ) \psi(\theta_{y_i}) ψ(θyi)
实际上为:
其中 λ \lambda λ 是一个额外的超参数,开始设置为1000,随着训练过程减小到5,以便每个类的角度空间更加紧凑。这种额外的动态超参数 λ \lambda λ 使得训练变得相对棘手。
这里的符号有点乱。 Σ \Sigma Σ 处的 m m m 前文指出是batch size。 c o s cos cos 处的 m m m 是角间隔际。
SphereFace使用角度间隔,使得同类样本的角度更小,不同类样本的角度更大。对于同类样本,当 m > 1 m>1 m>1 时 c o s ( m θ y i ) cos(mθ_{yi}) cos(mθyi) 相比于 c o s ( θ y i ) cos(θ_{yi}) cos(θyi) 更小,从而产生更大的损失迫使 θ y i θ_{yi} θyi 变小来增加同类特征相似度。在超球面上,角度间隔 m m m 相当于在决策边界上增加了一个额外的裕量 ,使得分类边界更加严格。
4.4 特征归一化
特征归一化被广泛应用于人脸验证,特征和权重归一化背后的直观解释是去除径向变化,并推动每个特征分布在超球流形上。作者通过L2归一化和缩放 ∣ ∣ x i ∣ ∣ ||x_i|| ∣∣xi∣∣ 到 s s s 来固定 ∣ ∣ x i ∣ ∣ ||x_i|| ∣∣xi∣∣,其中 s s s 是超球半径。本文采用 s = 64 s=64 s=64 进行人脸识别实验。基于特征和权重归一化,我们可以得到 W j T x i = c o s θ j W_j^Tx_i=cos\theta_j WjTxi=cosθj。
如果将特征归一化应用到SphereFace中,我们可以得到归一化的SphereFace,记为SphereFace-FNorm:
直接归一化后,梯度可能过小,导致训练速度变慢甚至停滞,引入缩放系数 s s s 可以增大梯度,保证训练稳定性。
4.5 加性余弦间隔
在加性余弦间隔中,角度间隔被移到 c o s θ cos \theta cosθ 的外侧。因此他们提出角度间隔损失:
余弦间隔 m m m 设置为0.35。相比与SphereFace,加性余弦间隔(Cosine-Face)有三个优点:
-
非常容易实现,无需复杂的超参
-
在没有Softmax监督的情况下,更加清晰,能够收敛
-
性能提升明显
c o s θ y i cos\theta_{y_i} cosθyi 需要大于 m m m 才能保证相似度为正,从而拉近了同类别特征。
4.6 加性角度间隔
虽然加性余弦间隔具有余弦空间到角度空间的一一对应关系,但这两种间隔之间仍然存在差异。事实上,与余弦间隔相比,角度间隔具有更明确的几何意义,角度空间中的间隔对应于超球面流形上的弧距离。
本文在 c o s θ cos \theta cosθ 内增加了一个间隔 m m m。当 θ ∈ [ 0 , π − m ] \theta∈[0,\pi-m] θ∈[0,π−m] 时, c o s ( θ + m ) < c o s ( θ ) cos(\theta+m)<cos(\theta) cos(θ+m)<cos(θ) ,因此改约束对分类更加严格,提出的ArcFace定义为:
如果将提出的加性角度间隔 c o s ( m + θ ) cos(m+\theta) cos(m+θ) 展开,则 c o s ( θ + m ) = c o s θ c o s m − s i n θ s i n m cos(\theta+m)=cos\theta cosm-sin\theta sinm cos(θ+m)=cosθcosm−sinθsinm,与加性余弦间隔 c o s ( θ ) − m cos(\theta)-m cos(θ)−m 相比,本文提出的 ArcFace 类似,但由于 s i n θ sin \theta sinθ 的缘故,间隔是动态的。
在图2中,作者对所提出的ArcFace进行了说明。ArcFace不仅可以压缩特征区域,还可以对应超球面上的测地距离。
4.7 二值化情况下的比较
为了更好的理解从Softmax到ArcFace的过程,作者在表1和图3中给出了二分类情况下的决策边界。基于权重和特征归一化,这些方法之间的区别在于把间隔放在了哪里。
4.8 目标Logit分析
为了研究为什么SphereFace,CosineFace和ArcFace可以提高人脸识别性能,作者分析了训练过程中的目标 logit 曲线和 θ \theta θ 分布。
如图4(a)中,作者绘制了Softmax,SphereFace,CosineFace和ArcFace的logit曲线。对于SphereFace,最佳设置为 m = 4 , λ = 5 m=4,\lambda=5 m=4,λ=5,与 m = 1.5 , λ = 0 m=1.5,\lambda=0 m=1.5,λ=0 的曲线类似。然而,SphereFace的实现要求 m m m 为整数。当尝试最小乘法间隔, m = 2 m = 2 m=2 和 λ = 0 λ = 0 λ=0 时,训练不能收敛。因此,从Softmax中略微减小目标logit曲线,可以增加训练难度,提高性能,但减小过多会导致训练发散。
CosineFace和ArcFace都遵循了这一观点。从图4(a)中可以看出,CosineFace沿着 y y y 轴的负方向移动目标logit曲线,而ArcFace沿着 x x x 轴的负方向移动目标logit曲线。现在我们可以很容易的理解从Softmax到CosineFace和ArcFace的性能提升。
这里的移动是相较于softmax的目标logits曲线来看的。
对于边界 m = 0.5 m = 0.5 m=0.5 的ArcFace,当 θ ∈ [ 0 、 180 ° ] θ∈[ 0、180 °] θ∈[0、180°] 时,目标logit曲线不是单调递减的。事实上,当 θ > 151.35 ° θ > 151.35 ° θ>151.35° 时,目标logit曲线上升。然而,如图4 ( c )所示,当从随机初始网络开始时, θ θ θ 具有高斯分布,其中心位于 90 ° 90 ° 90°,最大角度低于 105 ° 105 ° 105°。ArcFace的增加间隔在训练过程中几乎从未达到。因此,不需要对此进行明确的处理。
这里是在 θ ∈ [ π − m , π ] \theta∈[\pi-m,\pi] θ∈[π−m,π] 的情况。
在图4 ( c )中展示了CosineFace和ArcFace在训练开始、中间和结束三个阶段的 θ θ θ 分布。分布中心由 90 ° 90 ° 90° 逐渐向 35 ° − 40 ° 35°-40° 35°−40° 移动。在图4 ( a )中,可以发现ArcFace的目标logit曲线在 30 ° − 90 ° 30° - 90° 30°−90° 之间低于CosineFace的目标logit曲线。因此,所提出的ArcFace在该区间内比CosineFace施加了更严格的边距惩罚。
在图4 ( b )中展示了Softmax,CosineFace和ArcFace在训练批次上估计的目标logit收敛曲线。我们还可以发现,在开始时,ArcFace的边距惩罚比CosineFace重,因为红色的点线比蓝色的点线更低。在训练结束时,ArcFace比CosineFace收敛得更好,因为 θ θ θ 的直方图在左边(图4(c )),目标logit收敛曲线更高(图4(b))。从图4 (c )中,我们可以发现在训练结束时,几乎所有的 θ θ θ 都小于 60 ° 60 ° 60°。
该域之外的样本是最难的样本,也是训练数据集的噪声样本。即使CosineFace在 θ < 30 ° θ < 30° θ<30°时施加了更严格的边界惩罚(图4(a)),在训练结束时也只有很少部分 θ \theta θ 达到了这个域图4 ( c ) )。因此,我们也可以理解为何SphereFace在这一部分中即使有比较小的余量也能获得非常好的性能。
总之,当 θ ∈ [ 60 ° 、 90 ° ] θ∈[ 60°、90°] θ∈[60°、90°] 时,添加过多的间隔惩罚可能会导致训练发散,例如. Sphere Face ( m = 2 , λ = 0 m = 2 , λ = 0 m=2,λ=0 )。当 θ ∈ [ 30 ° , 60 ° ] θ∈[ 30 ° , 60 °] θ∈[30°,60°] 时增加间隔可以潜在地提高性能,因为这一部分对应于最有效的半难的负样本。当 θ < 30 ° θ < 30 ° θ<30° 时,增加间隔并不能明显改善性能,因为这段时间对应的是最简单的样本。当我们回到图4(a)并对 [ 30 ° , 60 ° ] [ 30 ° , 60 °] [30°,60°] 之间的曲线进行排序时,我们可以理解为什么在它们的最佳参数设置下,性能可以从Softmax,SphereFace,CosineFace到ArcFace提高。注意,这里的 30 ° 30 ° 30° 和 60 ° 60 ° 60° 分别为容易和困难训练样本的粗略估计阈值。

5 效果
5.1 消融实验
当使用conv3 × 3和step = 1作为第一个卷积层时,网络输出为7 × 7。相比之下,如果使用conv7 × 7和step = 2作为第一个卷积层,网络输出仅为3 × 3。从表2中可以明显看出,在训练过程中选择较大的特征图可以获得更高的验证精度,对应SE-LResNet50E。
网络结构设置实验,多种设置如下:
-
Option-A:使用全局池化层( GP )
-
Option-B:在GP后使用一个全连接( FC )层
-
Option-C:在GP后使用FC -批标准化( BN )
-
Option-D:在GP后使用FC - BN -参数化校正线性单元( PReLu)
-
Option-E:在最后一个卷积层后使用BN - Dropout - FC - BN
权重衰减值实验效果。
角度间隔 m m m 的消融实验。
不同的损失的效果对比。
不同backbone的消融实验。
5.2 和SOTA方法对比
通过使用Triplet Loss微调后的效果。