论文阅读之Arcface

本文详细介绍了Arcface论文,重点探讨了人脸识别中的损失函数改进,包括Softmax Loss、Center Loss、SphereFace和Arcface。Arcface通过引入角度余弦边距损失,提高了特征的区分度,优化了网络训练。实验表明,Arcface在保持网络结构不变的情况下,通过调整损失函数,可以显著提升人脸识别模型的性能。
摘要由CSDN通过智能技术生成

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}} W

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值