论文阅读之Arcface

2023-10-27

Arcface论文阅读


###前言

近年来随着硬件计算能力的大爆发,在高性能计算的支持下深度学习有了革命性的进步,在互联网大数据的保证下深度学习有了源源不断的动力,优秀的网络结构被不断提出,深度学习技术已被推向 时代浪潮。在深度学习的分支领域,计算机视觉领域当中,人脸识别技术的发展依然是工业界、学术界重点关注的对象。在ResNet在2015年被提出后,越来越多优秀的网络基于ResNet进行优化更新也已取得卓越的成就,而在网络结构进一步升级优化有困难的情况下,研究者逐步将目光转向损失函数这一指挥棒上。

文章[ArcFace:Additive Angular Margin Loss for Deep Face Recognition]的作者提出的Angular Margin Loss在继SoftmaxLoss、Center Loss、A-Softmax Loss、Cosine Margin Loss之后有更加卓越的表现,同时作者也对这一“卓越表现”予以了论证。

论文地址:https://arxiv.org/abs/1801.07698

Code:https://github.com/deepinsight/insightface

人脸识别流程

人脸识别分为四个过程:人脸检测、人脸对齐、特征提取、特征匹配。其中,特征提取作为人脸识别最关键的步骤,提取到的特征更偏向于该人脸“独有”的特征,对于特征匹配起到举足轻重的作用,而我们的网络和模型承担着提取特征的重任,优秀的网络和训练策略使得模型更加健壮。

但在Resnet网络表现力十分优秀的情况下,要提高人脸识别模型的性能,除了优化网络结构,修改损失函数是另一种选择,优化损失函数可以使模型从现有数据中学习到更多有价值的信息。

而在我们以往接触的分类问题有很大一部分使用了Softmax loss来作为网络的损失层,实验表明Softmax loss考虑到样本是否能正确分类,而在扩大异类样本间的类间距离和缩小同类样本间的类内距离的问题上有很大的优化空间,因而作者在Arcface文章中讨论了Softmax到Arcface的变化过程,同时作者还指出了数据清洗的重要性,改善了Resnet网络结构使其“更适合”学习人脸的特征。

如下是ArcFace的输入到输出流程:

上图的处理流程是这样子的,这里假设我们的样本类别数为 n n n,我们的输入数据x的维度为 d d d,模型权重 w w w的维度为 d ⋅ n d\cdot n dn,我们首先对我们的样本 x x x和权重 w w w进行归一化,归一化之后样本经过网络最后得到 1 ⋅ n 1\cdot n 1n维的全连接输出,输出后计算得到Target Logit再乘以归一化参数 s s s再经过Softmax计算得到Prob。

数据

在训练过程中,神经网络都是基于我们的训练数据学习特征的,既然是从训练数据学习特征,最终的方向自然是逼近最终数据的最真实的特征,也就是说,我们数据最原始是什么样子,我们的网络的极限就是什么样子,它不能超越数据本身,而研究者在做的事情,也就是使得网络最后能更加逼近“极限”。所以数据在深度学习中扮演着极其重要的角色,所以文章中强调了干净的数据(数据清洗)的重要性。

这里列举一些文章中提到的开源数据集:

VGG2

VGG2Face人脸数据集包含有训练集8631个人的脸(总量有3141890张人脸),测试集包含有500个人的脸(总量有169396张人脸),属于高质量数据集。

MS-Celeb-1M

MS1M数据集包含有大约10万个人的脸(大约有1千万张人脸),但是数据集中包含有很多的“噪声”,所以作者对MS1M做了数据清洗,最终作者清洗得到的干净的数据包含有8.5万个人的脸(包含有380万张人脸)。

MegaFace

MegaFace数据集包含有69万个人的脸(包含大约有100万张人脸),所有数据由华盛顿大学从Flickr上组织收集。MegaFace是第一个在百万规模级别的面部识别算法的测试基准,这个项目旨在研究当数据库规模提升数个量级时,现有的脸部识别系统能否维持可靠的准确率。MegaFace是目前最为权威、最热门的评价人脸识别性能,特别是海量人脸识别检索性能的基准参照之一。

LFW

LFW(Labeled Faces in the Wild)数据集包含了从网络收集的13000张人脸图像,每张图像都以被拍摄的人名命名。其中,有1680个人有两个或两个以上不同的照片。LFW主要侧重于对比两张人脸照片是否具有相同身份不同。

CPF

CFP(Celebrities in Frontal Profile )数据集是美国名人的人脸数据集,其中包含有500个人物对象,有他们的10张正面照以及4张形象照,因此在作为人物比对验证的时候,作者选用了最有挑战的正面照与形象照作为验证集(CFP,Frontal-Profile,CFP-FP )。

AgeDB

AgeDB(Age Database )数据集包含有440个人的脸(包含有12240张人脸),但其中包含有不同人的不同年龄阶段的照片,最小从3岁到最大101岁时期的照片,每个对象的平均年龄范围为49年。作者采用和LFW一样的对比验证方式。

最后,作者在网络训练过程中采用了VGG2以及MS1M作为训练集,选用了LFW、CPF以及AgeDB作为验证集,最终使用MegaFace作为评测标准。

损失层

关于Loss对于网络的影响,最直观的就是通过计算Loss反传梯度来实现对模型参数的更新,不同的Loss可以使模型更加侧重于学习到数据某一方面的特性,并在之后能够更好地提取到这一“独有”的特征,因此Loss对于网络优化有导向性的作用。

而在近年来人脸识别领域,优化Loss对于最终结果的提高有很大的帮助,从Center Loss的提出,到SphereFace,CosineFace,InsightFace等都有在损失函数这一环节提出新的解决方案,它们的出现对于人脸识别的发展做出了不可磨灭的贡献。

无论是SphereFace、CosineFace还是ArcFace的损失函数,都是基于传统的softmax loss进行修改得到的,所以想要理解ArcFace,需要对之前的损失函数有一定理解。

Softmax Loss

L S = − 1 m ∑ i = 1 m log ⁡ ( e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j ) L_S = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{W^T_{y_i}x_i+b_{y_i}}}{ {\sum\limits_{j=1}^n}e^{W^T_jx_i+b_j} }\right) LS=m1i=1mlogj=1neWjTxi+bjeWyiTxi+byi
这是我们传统的Softmax公式,其中, W j T x i + b j {W^T_{j}x_i+b_{j}} WjTxi+bj 代表我们的全连接层输出,我们在使损失 L S L_S LS下降的过程中,则必须提高我们的 W y i T x i + b y i {W^T_{y_i}x_i+b_{y_i}} WyiTxi+byi所占有的比重,从而使得该类的样本更多地落入到该类的决策边界之内。

而这种方式主要考虑样本是否能正确分类,缺乏类内和类间距离的约束。

在[A Discriminative Feature Learning Approach for Deep Face Recognition]这篇文章中,作者使用了一个比LeNet更深的网络结构,用Mnist做了一个小实验来证明Softmax学习到的特征与理想状态下的差距。

实验结果表明,传统的Softmax仍存在着很大的类内距离,也就是说,通过对损失函数增加类内距离的约束,能达到比更新现有网络结构更加事半功倍的效果。于是,[A Discriminative Feature Learning Approach for Deep Face Recognition]的作者提出了Center Loss,并从不同角度对结果的提升做了论证。

Center Loss

L C = − 1 2 ∑ i = 1 m ∣ ∣ x i − c y i ∣ ∣ 2 L_C = -\frac{1}{2}{\sum\limits_{i=1}^m}{||x_i-c_{y_i}||}^2 LC=21i=1mxicyi2

Δ c j = ∑ i = 1 m δ ( y i = j ) ⋅ ( c j − x i ) 1 + ∑ i = 1 m δ ( y i = j ) \Delta{c_j}=\frac{{\sum\limits_{i=1}^m}{\delta{(y_i=j)}\cdot{(c_j-x_i)}}}{1+{\sum\limits_{i=1}^m}{\delta{(y_i=j)}}} Δcj=1+i=1mδ(yi=j)i=1mδ(yi=j)(cjxi)

Center Loss的整体思想是希望一个batch中的每个样本的feature离feature 的中心的距离的平方和要越小越好,也就是类内距离要越小越好。作者提出,最终的损失函数包含softmax loss和center loss,用参数λ来控制二者的比重,如下面公式所示:
L = L S + L C = − 1 m ∑ i = 1 m log ⁡ ( e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j ) + λ 2 ∑ i = 1 m ∣ ∣ x i − c y i ∣ ∣ 2 L=L_S+L_C= -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{W^T_{y_i}x_i+b_{y_i}}}{ {\sum\limits_{j=1}^n}e^{W^T_jx_i+b_j} }\right)+\frac{\lambda}{2}{\sum\limits_{i=1}^m}{||x_i-c_{y_i}||}^2 L=LS+LC=m1i=1mlogj=1neWjTxi+bjeWyiTxi+byi+2λi=1mxicyi2

因而,加入了Softmax Loss对正确类别分类的考虑以及Center Loss对类内距离紧凑的考虑,总的损失函数在分类结果上有很好的表现力。以下是作者继上个实验后使用新的损失函数并调节不同的参数 λ \lambda λ得到的实验结果,可以看到,加入了Center Loss后增加了对类内距离的约束,使得同个类直接的样本的类内特征距离变得紧凑。

A-Softmax Loss(SphereFace)

Center Loss的出现,使得人脸识别的研究转向损失函数的改进,对于之前的损失函数,研究发现Softmax Loss学习到的特征分辨性不够强,Center Loss考虑到了使得类内紧凑,却不能使类间可分,而Contrastive Loss、Triplet Loss增加了时间上的消耗,[SphereFace: Deep Hypersphere Embedding for Face Recognition]这篇文章的作者提出了A-Softmax Loss。

在Softmax Loss中,由 W T x = ∣ ∣ W ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ⋅ c o s θ {W^Tx}={||W||\cdot{||x||}\cdot{cos\theta}} WTx=Wxcosθ 知,特征向量相乘包含由角度信息,即Softmax使得学习到的特征具有角度上的分布特性,为了让特征学习到更可分的角度特性,作者对Softmax Loss进行了一些改进。
L S o f t m a x = − 1 m ∑ i = 1 m log ⁡ ( e ∣ ∣ W y i ∣ ∣ ⋅ ∣ ∣ x i ∣ ∣ ⋅ c o s θ y i + b y i ∑ j = 1 n e ∣ ∣ W j ∣ ∣ ⋅ ∣ ∣ x i ∣ ∣ ⋅ c o s θ j + b j ) L_{Softmax} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{||W_{y_i}||\cdot{||x_i||}\cdot{cos\theta_{y_i}}+b_{y_i}}}{ {\sum\limits_{j=1}^n}e^{||W_{j}||\cdot{||x_i||}\cdot{cos\theta_{j}}+b_{j}} }\right) LSoftmax=m1i=1mlogj=1neWjxicosθj+bjeWyixicosθyi+byi

L m o d i f i e d 0 = − 1 m ∑ i = 1 m log ⁡ ( e ∣ ∣ x i ∣ ∣ ⋅ c o s θ y i e ∣ ∣ x i ∣ ∣ ⋅ c o s θ y i + ∑ j = 1 , j ≠ y i n e ∣ ∣ x i ∣ ∣ ⋅ c o s θ j ) L_{modified_0} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{{||x_i||}\cdot{cos\theta_{y_i}}}}{ e^{{||x_i||}\cdot{cos\theta_{y_i}}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{||x_i||}\cdot{cos\theta_{j}}}}\right) Lmodified0=m1i=1mlogexicosθyi+j=1,j̸=yinexicosθjexicosθyi

其中,作者在$L_{modified_0} 中 约 束 了 中约束了 ||W||=1$并且令 b j = 0 b_j=0 bj=0 ,并将 e ∣ ∣ x i ∣ ∣ ⋅ c o s θ y i { e^{{||x_i||}\cdot{cos\theta_{y_i}}}} exicosθyi ∑ j = 1 n e ∣ ∣ x i ∣ ∣ ⋅ c o s θ j {\sum\limits_{j=1}^n}e^{{||x_i||}\cdot{cos\theta_{j}}} j=1nexicosθj区分出来,就是为了让特征学习到更可分的角度特性。通过这样的损失函数学习,可以使得学习到的特征具有更明显的角分布,因为决策边界只与角相关。

对于Softmax而言,希望能有 c o s ( θ 1 ) > c o s ( θ 2 ) cos(θ_1)>cos(θ_2) cos(θ1)>cos(θ2),所以作者增加了在角度空间中对损失函数的约束 c o s ( t ⋅ θ 1 ) > c o s ( θ 2 ) cos(t\cdotθ_1)>cos(θ_2) cos(tθ1)>cos(θ2),也就是要把同类数据压缩在一个紧致的空间,同时拉大类间差距。
L m o d i f i e d 1 = − 1 m ∑ i = 1 m log ⁡ ( e ∣ ∣ x i ∣ ∣ ⋅ c o s ( t ⋅ θ y i ) e ∣ ∣ x i ∣ ∣ ⋅ c o s ( t ⋅ θ y i ) + ∑ j = 1 , j ≠ y i n e ∣ ∣ x i ∣ ∣ ⋅ c o s θ j ) , θ y i ∈ [ 0 , π t ] L_{modified_1} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{{||x_i||}\cdot{cos(t\cdot\theta_{y_i})}}}{ e^{{||x_i||}\cdot{cos(t\cdot\theta_{y_i})}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{||x_i||}\cdot{cos\theta_{j}}}}\right),\theta_{y_i}\in[0,\frac{\pi}{t}] Lmodified1=m1i=1mlogexicos(tθyi)+j=1,j̸=yinexicosθjexicos(tθyi),θyi[0,tπ]

由于 c o s θ cos{\theta} cosθ [ 0 , π ] [0,\pi] [0,π]上单调递减,因此 θ \theta θ有上界,为了使得这个函数随角度单调递减,作者构造一个函数去代替 c o s θ cos{\theta} cosθ
L S p h e r e F a c e = − 1 m ∑ i = 1 m log ⁡ ( e ∣ ∣ x i ∣ ∣ ⋅ φ ( θ y i ) e ∣ ∣ x i ∣ ∣ ⋅ φ ( θ y i ) + ∑ j = 1 , j ≠ y i n e ∣ ∣ x i ∣ ∣ ⋅ c o s θ j ) , θ y i ∈ [ 0 , π t ] L_{SphereFace} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{{||x_i||}\cdot{\varphi(\theta_{y_i})}}}{ e^{{||x_i||}\cdot{\varphi(\theta_{y_i})}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{||x_i||}\cdot{cos\theta_{j}}}}\right),\theta_{y_i}\in[0,\frac{\pi}{t}] LSphereFace=m1i=1mlogexiφ(θyi)+j=1,j̸=yinexicosθjexiφ(θyi),θyi[0,tπ]

φ ( θ y i ) = ( − 1 ) k c o s ( t ⋅ θ y i ) − 2 k , θ y i ∈ [ k π t , ( k + 1 ) π t ] , k ∈ [ 0 , t − 1 ] {\varphi(\theta_{y_i})}=(-1)^kcos(t\cdot\theta_{y_i})-2k,\theta_{y_i}\in[\frac{k\pi}{t},\frac{(k+1)\pi}{t}],k\in[0,t-1] φ(θyi)=(1)kcos(tθyi)2k,θyi[tkπ,t(k+1)π],k[0,t1]

在SphereFace的实际训练过程中,作者发现引入Softmax约束可以保证模型的收敛性。因此,对 φ ( θ y i ) {\varphi(\theta_{y_i})} φ(θyi)函数做了变更,并同时用参数λ来控制二者的比重。
φ ( θ y i ) = ( − 1 ) k c o s ( t ⋅ θ y i ) − 2 k + λ ⋅ c o s ( θ y i ) 1 + λ {\varphi(\theta_{y_i})}=\frac{(-1)^kcos(t\cdot\theta_{y_i})-2k+\lambda\cdot{cos(\theta_{y_i})}}{1+\lambda} φ(θyi)=1+λ(1)kcos(tθyi)2k+λcos(θyi)

t t t的大小是控制同一类点聚集的程度,从而控制了不同类之间的距离。如图可以看出不同的 t t t的取值对映射分布的影响(不同的类位于一个单位超球表面的不同区域)

后续的F-Norm SphereFace对SphereFace做了更新,仅注重从数据中得到的角度信息,而不考虑特征向量的值,所以采用了$s = 64 作 为 特 征 归 一 化 参 数 替 代 了 作为特征归一化参数替代了 ||x||$,因此公式更新为:
L F − N o r m − S p h e r e F a c e = − 1 m ∑ i = 1 m log ⁡ ( e s ⋅ φ ( θ y i ) e s ⋅ φ ( θ y i ) + ∑ j = 1 , j ≠ y i n e s ⋅ c o s θ j ) , θ y i ∈ [ 0 , π t ] L_{F-Norm-SphereFace} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{{s}\cdot{\varphi(\theta_{y_i})}}}{ e^{{s}\cdot{\varphi(\theta_{y_i})}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{s}\cdot{cos\theta_{j}}}}\right),\theta_{y_i}\in[0,\frac{\pi}{t}] LFNormSphereFace=m1i=1mlogesφ(θyi)+j=1,j̸=yinescosθjesφ(θyi),θyi[0,tπ]

而这种采用了$s = 64 作 为 特 征 归 一 化 参 数 替 代 了 作为特征归一化参数替代了 ||x||$的思想也被Cosine Loss和Arcface Loss沿用,即相对于距离信息更加关注角度信息。

Cosine Margin Loss

L C o s i n e = − 1 m ∑ i = 1 m log ⁡ ( e s ⋅ ( c o s ( θ y i ) − t ) e s ⋅ ( c o s ( θ y i ) − t ) + ∑ j = 1 , j ≠ y i n e s ⋅ c o s θ j ) L_{Cosine} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{{s}\cdot{(cos(\theta_{y_i})-t)}}}{ e^{{s}\cdot{(cos(\theta_{y_i})-t)}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{s}\cdot{cos\theta_{j}}}}\right) LCosine=m1i=1mloges(cos(θyi)t)+j=1,j̸=yinescosθjes(cos(θyi)t)
与SphereFace相比,CosineFace最明显的变化就是将 c o s ( t ⋅ θ y i ) cos(t\cdot\theta_{y_i}) cos(tθyi)中的 t t t提出来变成 c o s ( θ y i ) − t {cos(\theta_{y_i})-t} cos(θyi)t,与之前相比,这样有几个明显的优势。

  • 相对于SphereFace而言要更加容易实现,移除了 φ ( θ y i ) {\varphi(\theta_{y_i})} φ(θyi),减少了复杂的参数计算
  • 去除了Softmax监督约束,训练过程变得简洁同时也能够实现收敛
  • 模型性能有明显的改善

Angular Margin Loss

尽管在余弦范围到角度范围的映射具有一对一的关系,但他们之间仍有不同之处,事实上,实现角度空间内最大化分类界限相对于余弦空间而言具有更加清晰的几何解释性,角空间中的边缘差距也相当于超球面上的弧距。

于是,作者提出了Angular Margin Loss,将角度边缘 t t t置于 c o s ( θ ) cos(\theta) cos(θ)函数内部,使得 c o s ( θ + t ) cos(\theta+t) cos(θ+t) θ ∈ [ 0 , π − t ] \theta\in[0,\pi-t] θ[0,πt]范围内要小于 c o s ( θ ) cos(\theta) cos(θ),这一约束使得整个分类任务的要求变得更加苛刻。

对于$L_{Arcface} , 在 满 足 ,在满足 W_j=\frac{W_j}{||W_j||},x_i=\frac{x_i}{||x_i||},cos{\theta_i}=W_j^Tx_i$的情况下,其损失计算公式为
L A r c f a c e = − 1 m ∑ i = 1 m log ⁡ ( e s ⋅ ( c o s ( θ y i + t ) ) e s ⋅ ( c o s ( θ y i + t ) ) + ∑ j = 1 , j ≠ y i n e s ⋅ c o s θ j ) L_{Arcface} = -\frac{1}{m}{\sum\limits_{i=1}^m}\log\left(\frac{e^{{s}\cdot{(cos(\theta_{y_i}+t))}}}{ e^{{s}\cdot{(cos(\theta_{y_i}+t))}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{s}\cdot{cos\theta_{j}}}}\right) LArcface=m1i=1mloges(cos(θyi+t))+j=1,j̸=yinescosθjes(cos(θyi+t))
对于 c o s ( θ + t ) cos(\theta+t) cos(θ+t)可以得到 c o s ( θ + t ) = c o s θ c o s t − s i n θ s i n t cos(\theta+t)=cos{\theta}cos{t}-sin{\theta}sint cos(θ+t)=cosθcostsinθsint,对比CosineFace的 c o s ( θ ) − t cos{(\theta)-t} cos(θ)t,ArcFace中的 c o s ( θ + t ) cos(\theta+t) cos(θ+t)不仅形式简单,并且还动态依赖于 s i n θ sin\theta sinθ,使得网络能够学习到更多的角度特性。

Loss对比分析

为了研究 SphereFace、 CosineFace 和ArcFace是如何提高人脸识别的效果,作者使用了 LResNet34E-IR网络和M1SM人脸数据集分别使用不同的损失函数对网络进行训练,客观分析了其中的影响。

上图的Target Logit Curve描绘了随着角度值 θ \theta θ的变化,对于 L C o s i n e = − 1 N ∑ i = 1 N log ⁡ ( 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_{Cosine} = -\frac{1}{N}{\sum\limits_{i=1}^N}\log\left(\frac{e^{{s}\cdot{(cos(\theta_{y_i})-m)}}}{ e^{{s}\cdot{(cos(\theta_{y_i})-m)}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{s}\cdot{cos\theta_{j}}}}\right) LCosine=N1i=1Nloges(cos(θyi)m)+j=1,j̸=yinescosθjes(cos(θyi)m),其中的Target Logit 也就是指 c o s ( θ y i ) − m {cos(\theta_{y_i})-m} cos(θyi)m的值, s s s是归一化参数,在 W j = W j ∣ ∣ W j ∣ ∣ , x i = x i ∣ ∣ x i ∣ ∣ , c o s θ i = W j T x i W_j=\frac{W_j}{||W_j||},x_i=\frac{x_i}{||x_i||},cos{\theta_i}=W_j^Tx_i Wj=WjWj,xi=xixi,cosθi=WjTxi条件下, θ y i \theta_{y_i} θyi是输入向量与权重在超平面中的夹角,同理,对于 L A r c f a c e = − 1 N ∑ i = 1 N log ⁡ ( 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_{Arcface} = -\frac{1}{N}{\sum\limits_{i=1}^N}\log\left(\frac{e^{{s}\cdot{(cos(\theta_{y_i}+m))}}}{ e^{{s}\cdot{(cos(\theta_{y_i}+m))}}+{\sum\limits_{j=1,j\ne{y_i}}^n}e^{{s}\cdot{cos\theta_{j}}}}\right) LArcface=N1i=1Nloges(cos(θyi+m))+j=1,j̸=yinescosθjes(cos(θyi+m))来说,Target Logit 对应着 c o s ( θ y i + m ) {cos(\theta_{y_i}+m)} cos(θyi+m)的值,也就意味着,在 θ ∈ [ 0 ∘ , 3 0 ∘ ] {\theta}\in{[0^{\circ},30^{\circ}]} θ[0,30]时,CosineFace的曲线要低于ArcFace,也就是在 θ ∈ [ 0 ∘ , 3 0 ∘ ] {\theta}\in{[0^{\circ},30^{\circ}]} θ[0,30]范围内CosineFace对于网络的“惩罚”要大于ArcFace,再看 θ ∈ [ 3 0 ∘ , 9 0 ∘ ] {\theta}\in{[30^{\circ},90^{\circ}]} θ[30,90]范围内ArcFace的曲线要低于CosineFace,也就是说在 θ ∈ [ 3 0 ∘ , 9 0 ∘ ] {\theta}\in{[30^{\circ},90^{\circ}]} θ[30,90]内ArcFace对于网络的“惩罚”要大于CosineFace(由下面的 θ \theta θ分布图可知 θ \theta θ 9 0 ∘ 90^{\circ} 90以上范围基本没有,可以忽略)。

而作者提供了训练开始时,中间以及收敛后的 θ \theta θ的分布图,可以看到,在网络收敛的情况下,ArcFace和CosineFace的 θ \theta θ分布基本在 [ 3 0 ∘ , 6 0 ∘ ] [30^{\circ},60^{\circ}] [30,60]范围内,同时,ArcFace和CosineFace的 θ \theta θ中心值要更靠左一点,虽然在 θ ∈ [ 0 ∘ , 3 0 ∘ ] {\theta}\in{[0^{\circ},30^{\circ}]} θ[0,30]范围内CosineFace对于网络的“惩罚”要大于ArcFace,但是由最终结果可以看出,收敛时 θ \theta θ达到 [ 0 ∘ , 3 0 ∘ ] {[0^{\circ},30^{\circ}]} [0,30]范围内的数量很少,相对于 [ 3 0 ∘ , 6 0 ∘ ] {[30^{\circ},60^{\circ}]} [30,60]范围内可以忽略,而在ArcFace对于网络的“惩罚”要大于CosineFace的 θ ∈ [ 3 0 ∘ , 6 0 ∘ ] {\theta}\in{[30^{\circ},60^{\circ}]} θ[30,60]范围内分布着绝大多数的 θ \theta θ

我们已经由 θ \theta θ的分布图可知在收敛的时候ArcFace的 θ \theta θ中心值与CosineFace相比要偏左一点,同时,由上图可知,收敛的时候红色实线要高于蓝色和黄色实线,也就意味着,收敛的时候ArcFace相对于其他Loss使得同一类更加“紧凑”,相对于其他的Loss实现了将同一个类压缩到一个更紧致的空间,更密集,使得网络学习到的特征具有更明显的角分布特性。

网络

为了衡量怎样的网络更适合人脸识别,作者在基于VGG2Face作为训练集和使用Softmax作为损失函数的情况下对Resnet网络做了不同的设置,以期望能达到最好的效果。

作者用了8块特斯拉P40的显卡,设置训练时的总的Batch Size为512,同时学习率从0.1开始在分别在10万、14万、16万次迭代下降一个量级,设置了总的迭代为20万次,momentum 动量为0.9,权值衰减为 5e−4 。

PS:实验表明采用权值衰减值为5e−4效果最好。

####Input selects L

大多数的卷积神经网络为完成Image-Net的分类任务而设计的,所以网络会采用224x224的输入,然而作者所用的人脸大小为112x112,如果直接将112x112的数据作为预训练模型的输入会使得原本最后提取到的特征维度是7x7变成3x3,因此作者将预训练模型的第一个7x7的卷积层(stride=2)替换成3x3的卷积层(stride=1),这样第一个卷积层就不会将输入的维度缩减,因此最后还是能得到7x7的输入,如下图所示,实验中将修改后的网络在命名上加了字母“L”,比如SE-LResNet50D。

####Output selects E

对于网络的最后几层,不同的输出可能会影响模型的性能,因此作者对Option-A到Option-E分别做了测试,在测试过程中,利用两个特征向量对距离进行计算。在识别与验证的过程中采用了最近邻与阈值比较法。

  • Option-A: Use global pooling layer(GP).
  • Option-B:Use one fullyconnected(FC) layer after GP.
  • Option-C: Use FC-Batch Normalisation (BN) after GP.
  • Option-D: Use FC-BN-Parametric Rectified Linear Unit (PReLu) after GP.
  • Option-E: Use BN-Dropout-FC-BN after the last convolutional layer.

经过对比结果得知,使用Option-E模型能取得更好的表现。

####Block selects IR

作者改善了Resnet网络的残差块使其更适合人脸识别模型的训练,采用 BN-Conv-BN-PReLu-Conv-BN 结构作为残差块,并在残差块中将第一个卷积层的步长从2调整到1,激活函数采用PReLu替代了原来的ReLu。采用修改过的残差块的模型作者在后面添加了“IR”以作为标识。

同样实验表明,采用Option-E与改善后的残差块使得模型表现有明显的提升。

Network Setting Conclusions

综上所述,最终在Resnet网络上做出了3项改进,第一是将第一个7x7的卷积层(stride=2)替换成3x3的卷积层(stride=1),第二是采用了Option-E输出,第三是使用了改善后的残差块。

评估

作者同时对比测试了其他主流的网络结构,有MobileNet、Inception-Resnet-V2、DenseNet、Squeeze and excitation networks (SE)以及Dual path Network (DPN),评价的标准由精确度、速度以及模型大小组成。

同时,MegaFace作为百万规模级别的面部识别算法的测试基准,作者以LResNet100E-IR作为网络结构,以MS1M作为训练集,分别对比了不同损失函数在MegaFace上的表现,其中最后两列括号中有“R”是代表清洗过的MegaFace,Rank1指标代表第一次命中率,VR@FAR代表在误识率FAR上的TAR,也就是说第一次命中率Rank1越高越好,VR@FAR越高越好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文阅读之Arcface 的相关文章

随机推荐

  • 在VUE3中使用Pinia

    一 安装使用Pinia 安装下载 npm install pinia main js引入 import createPinia from pinia app use createPinia 根目录新建store index js中写入 im
  • ubuntu20.04 安装Anaconda3+CUDA+cudnn+Pytorch

    ubuntu20 04 安装Anaconda3 CUDA cudnn Pytorch Ubuntu GPU驱动 CUDA版本 CuDNN 版本 都要相互关联 版本不对应的话 就会出错 版本确认顺序 CUDA版本 gt CuDNN版本 gt
  • 反射、泛型详解

    反射 Class文件所包含的内容都有其对应的方法可以获得 创建Class对象的3种方式 方式一 类 class Class personClass Person class 方式二 对象 getClass Person person new
  • 《算法学习》C语言中“ const * “与“ * const “区别总结

    一 简介 最近重新学习了C语言中的指针 本文总结一下C语言中使用 的心得 二 总结 const 表示指针变量是constant 恒定的 不允许通过访问指针地址的方式改变指针所指地址的的值 const 表示该指针是恒定的 即该指针不能再指向别
  • 修改外向交货单:BAPI_OUTB_DELIVERY_CHANGE/SD_DELIVERY_UPDATE_PICKING_SAP刘梦_新浪博客

    TABLES LIKP PARAMETERS P DEL LIKE LIKP VBELN DEFAULT 8000002260 DATA STR HEADER DATA LIKE BAPIOBDLVHDRCHG STR HEADER CON
  • POJ-1240(分治,递归降解)

    题目 http poj org problem id 1240 题目的意思即 给定一棵m元树的前序和后序遍历 问你一共有多少颗m元树有这样的性质 乍一看好像没什么头绪 由于题目中也提到了由中序和后序求前序 想到是不是同样能用分治法 我们知道
  • 在阿里云服务器上部署Jekyll博客

    Step 0 首先买一台服务器 并且装好环境 我都是在阿里云上面买 而且我只是想挂一个个人网站 所以只需要最便宜的轻量应用服务器就好 半年只需要72块钱 我现在想来 之前也应该买香港的服务器 因为更加便宜 大陆的要60块一月 而且不需要给服
  • 初识ASO

    大概了解了一下ASO 在此记录一下 ASO 应用商店优化 的简称 ASO App Search Optimization 重点在于关键词搜索排名优化 覆盖热词 搜索下载激活 优化评论 关键词覆盖数量优化 就是指用户搜索更多关键词都能找到该款
  • VS Code(Visual Studio Code)环境下C++开发的配置方法

    一 Visual Studio Code的下载 去官网下载 下载地址 https code visualstudio com Download 我在windows系统下使用 直接点击Windows那个图标下载就好 安装时可以自己选择一下安装
  • layui源码详细分析之树形菜单

    前言 今天分析的是layui框架内置模块tree js 该模块的功能是构建树形菜单 具体的形式 layui官网该模块的具体形式 如下 自实现树形菜单 使用html css js实现了树形菜单 具体的实现思路如下 html中定义包含树形菜单的
  • C++选择结构学案

    学习目标 熟练掌握 C 中的关系 逻辑运算符 熟知关系 逻辑运算符和数学运算符的优先级 学会正确使用选择表达式 知识着陆 1 关系运算符 使用关系运算符需要注意的问题 1 等于 与 赋值 的区别 2 实型数据 浮点数 的关系运算 3 运算符
  • 锚点的作用及用法

    锚点的作用及用法 HTML中的a标签大家都非常熟悉 它是超链接标签 通过a标签能够跳转到href中指定的页面及指定的位置 a标签可以做到单页面跳转或多页面跳转 锚点能够跳转到当前页面中指定的位置 也能够跳转到指定的其他页面或其他页面中指定的
  • anaconda怎么运行python程序_PyCharm运行Python程序

    介绍如何使用 PyCharm 创建 Python 项目 以及如何编写并运行 Python 程序 PyCharm创建Python项目 PyCharm 中 往往是通过项目来管理 Python 源代码文件的 虽然对于第一个 Python 程序来说
  • java中的String类型的对象为什么可以自动转换成Object类型的?而Object却要强制转换成String类型的

    java中的String类型的对象为什么可以自动转换成Object类型的 而Object却要强制转换成String类型的 5 比如 String a hello Object b a 这样可以直接用 而 Object a hello Str
  • vue鼠标点击指定区域创建dom元素与编辑删除元素的思路

    vue鼠标点击指定区域创建dom元素与编辑删除元素的思路 话不多说有思路直接干 一 鼠标点击页面灰色背景创建红色元素 二 点击已经创建的红色元素则是编辑或者删除 根据点击元素的类名来判断是属于创建元素还是编辑或者删除元素 e target
  • 多个checkpoint 的参数进行平均

    source model 路径下 存在 以下几个checkpoint model checkpoint path model ckpt 457157707 all model checkpoint paths model ckpt 4560
  • 动手学深度学习d2l.Animator无法在PyCharm中显示动态图片的解决方案

    from d2l import torch as d2l 一 问题描述 运行d2l的训练函数 仅在控制台输出以下内容 无法显示动态图片 训练监控
  • notepad++ 正则表达式

    转载自 https www cnblogs com winstonet p 10635043 html 注意 Notepad 正则表达式字符串最长不能超过69个字符 转义字符 如 要使用 本身 则应该使用 t Tab制表符 注 扩展和正则表
  • 5. C++知识点之else分支

    上篇文章我们说了if语句 这篇文章我们再来说说if语句的后半部分 else if但分支选择结构在条件为真时采取操作 条件为假时则忽略这个操作 利用if else双分支选择结构则可以在条件为真时和条件和假时采取不同操作 格式 格式1 if 条
  • 论文阅读之Arcface

    Arcface论文阅读 文章目录 Arcface论文阅读 人脸识别流程 数据 VGG2 MS Celeb 1M MegaFace LFW CPF AgeDB 损失层 Softmax Loss Center Loss A Softmax Lo