赵文忠
摘要 人脸识别已经成为计算机视觉领域最热门的应用之一,在我们身边,到处都有人脸识别的技术。人脸识别算法主要包含人脸检测(Face Detection)、人脸对齐(Face Alignment)、人脸特征表征(Feature Representation)。这篇文章将详细介绍在人脸识别中用到的各种损失函数以及在主要人脸数据集上的测试结果。
【关键词】人脸识别 SoftmaxL-SoftmaxA-SoftmaxCosFaceArcFace
1 引言
人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,由于人脸识别相对于一般的识别问题,存在人脸对比这样一个需求,这就将人脸识别的主要方向变成了尺度学习问题而并非简简单单的分类问题。而近几年技术上的发展也基本是围绕损失函数展开,以此在有限的数据集上得到更高的识别精度。
2 损失函数
用于人脸识别的损失函数,从Softmax,Contrastive Loss,Triplet Loss,Center Loss,Norm Face,Large MarginLoss,A-SoftmaxLoss,Coco Loss,以及今年的AM,AAM,InsightFace。这些损失函数在聚类上大致上可以分为下面两个类:
(1)单纯聚类:ContrasitveLoss,Center Loss,NormFace,Coco Loss;
(2)加Margin聚类:TripletLoss,Large Margin Loss,A-SoftmaxLoss,AM,AAM,InsightFace。
在距离度量上可以分为下面两个类:
(1)欧式距离:Contrastive Loss,CenterLoss,NormFace,Triplet Loss;
(2)Cosine距离/角度距离:Large Margin Loss,A-SoftmaxLoss,Coco Loss,AM,AAM,InsightFace。
可以看到,目前的主要方向,在从欧氏距离往角度距离发展的同时,中间出现了像NormFace,CocoLoss这些进行了特征归一化,权重归一化操作的损失函数。
2.1 SoftmaxLoss
Softmax损失函数是Sotfmax激活函数加上CrossEntropy,Softmax的作用是将特征经过线性组合转化成概率,然后使用CrossEntropy来计算损失。早期深度人脸识别方法,框架为CNN+Softmax,以“超多分类”这样一种比较难的任务训练CNN,强迫网络在第一个FC层形成比较紧凑的,判别力很强的深度人脸特征,之后用于人脸识别。Softmax函數定义如下:
进一步根据交叉熵函数计算每一个样本i的损失:
y为一个one-hot向量,它只在正确类别上的分量为1,而其他分量都为0。因此损失函数可以进一步转换为:
从以上可知,取log里面的值就是这组数据正确分类的Softmax值,它占的比重越大,这个样本的损失也就越小。Softmax损失函数训练的深度特征,可以有效区分类间差异,把整个人脸空间,按照人的个数进行划分,保证每个人是可分的。但是对于类内的分布没有很好的约束,并不能够有效地学习得到使得类内较为紧凑、类间较离散的特征。而人脸识别要求同人照片之间的距离尽量近,不同人照片之间的距离尽量远,即同人之间紧凑,不同人之间分离。所以Softmax损失函数并不合适人脸识别任务。所以,我们需要改进SoftmaxLoss。
2.2 ModifiedSoftmaxLoss
我们可以将SoftmaxLoss损失函数进一步细化:
2.3 Large-MarginSoftmaxLoss
LargeMarginSoftmax(L-Softmax)Loss是LargeMargin系列的开创算法,表达式如下:
然后加强分类条件,强制让对应类别的W和x夹角增加到原来的m倍,ψ(θ)是cos(mθ)的单调函数版本:
L-Softmax由于没有对权重归一化,所以它不仅可以从角度上区分不同的类,还能从权重的模(长度)上区分。当m=1时,就是Modified Softmax Loss。m越大,代表对该类的分类要求越高。
L-Softmax Loss与ModifiedSoftmax Loss的不同之处在于L-SoftmaxLoss有两个分隔的决策平面且决策平面分隔的大小还是与m的大小成正相关,而ModifiedSoftmax Loss两个不同类的决策平面是同一个。
2.4 Angular SoftmaxLoss
Angular Softmax(A-Softmax)Loss是L-Softmax的改进,就是在L-Softmax Loss的基础上添加了两个限制条件||W||=1和b=0,使得预测仅取决于W和x之间的角度。归一化了权值W,让训练更加集中在优化深度特征映射和特征向量角度上,降低样本数量不均衡问题:
其中9。e[0.7%m],因为在这个范围之外可能会使得mo,.>8,j≠y(这样就不属于分类y;),但cos(m6)>cos(O2)仍可能成立,而我们的Loss方程用的还是cos(O)。为了避免这个问题,我们可以重新设计一个函数来替代cos(m.s),其中定义如下:
这个函数的定义可以使得ψ随,单调递减,如果m0O,s马d>,j≠Jy,那么必有ψ(@yui) 个人认为A-Softmax是基于一个假设:不同的类位于一个单位超球表面的不同区域。从上面也可以知道它的几何意义是权重所代表的在单位超球表面的点,在训练的过程中,同一类的输入映射到表面上会慢慢地向中心点(这里的中心点大部分时候和权重的意义相当)聚集,而到不同类的权重(或者中心点)慢慢地分散开来。m的大小是控制同一类点聚集的程度,从而控制了不同类之间的距离。 A-Softmax Loss在使用时需要注意的一些特性如下: (1)通常情况下,m值越大,学习到的特征区分性更强,但学习难度更大,通常m取4时可以取得较好的效果。 (2)针对二分类问题,m最小值值需满足:。 (3)针对多分类问题,m最小值需满足:。 2.5 AdditiveMarginLoss AM-Softmax在A-Softmax的基礎上,乘性margin改成了加性margin,即cos(mθ)变成了cosθ-m,在权值W归一化的基础上对特征f也做了归一化。作者这样改变之后前向后向传播变得更加简单。其中W和f都是归一化过的,作者在论文中将m=0.35。定义如下: 相比A-Softmax性能有提升,最重要的是训练难度大幅降低,不需要退火优化。值得注意的是,归一化是收敛到好的点的保证,同时采用固定尺度因子s=30。到底什么时候需要归一化什么时候又不需要呢?这实际上依赖于图片的质量。我们看一个公式如下 其中α就是向量x的模,它说明模值比较小的,会有更大的梯度反向传播误差系数,这实际上就相当于难样本挖掘了。不过,也要注意那些质量非常差的,模值太小可能会造成梯度爆炸的问题。 2.6 Large Margin Cosine Loss Large Margin Cosine Loss(CosineFace)与AM-Softmax完全一样,同样的加性margin,同样的特征归一化,工作完成比AM-Softmax早。主要做了一下两点的改进: (1)损失函数的不仅对权重进行了正则化,还对特征进行了正则化。 (2)形式做了稍微的改变,将超参数m由乘法运算变成了减法运算。 CosineFace中新提出的损失函数为LargeMarginCosineLoss(LMCL),表示形式为: 作者在文中与其他几种损失函数进行了对比,来证明此种损失函数的优势,以两钟情况的类别为例: 如图1所示,Softmax的决策边界可以写成如下的形式,可以看出决策边界由权值变量和角度的cosine值一起决定,这样子就导致了,在cosine维度进行度量的时候,两个类别之间会出现重叠(margin<0)。 而NSLLoss是指权值和特征都进行正则化。这样子决策边界就可以写成如下的形式,从而,在cosine维度进行度量的时候,两个类别之间有一个明确的决策边界。但是,由于边界空间为0(margin=0),导致处于边缘的情况,很容易出现分类错误。 注意,在LMCL中,作者证明了s的范围,如下所示: 并且,还分别验证了m的取值和是否正则化特征对网络的影响。 2.7 Additive Angular Margin Loss Additive Angular Margin Loss(ArcFace)在A-Softmax的基础上,同样改用加性margin但形式略有区别,cos(mθ)变成了cos(θ+m),同样也做了特征归一化,固定因子s=64。在基于L2正则化权重和特征的角度空间中,直接最大化决策边界。相比于加性margin和乘性margin,ArcFace能获得更具有判别能力的特征。 ArcFace提出的监督信号更倾向于角度上的分解,有更好的几何解析能力,重要的是,在基于L2正则化权重和特征的角度空间中,直接最大化决策边界。相比于A-Softmax和AM-Softmax,ArcFace能获得更具有判别能力的特征。 3 实验结果 表1是不同的损失函数在不同测试集上的确认率。训练数据集为CASIA-Webface,数据集中有10575个人,494414张照片。网络结构采用ResNet50。 4 结束语 人脸识别是一个非常复杂的计算任务,在这篇文章中,我们主要介绍、分析了用于训练人脸识别模型的各种损失函数。它们就像一把尺子,用来度量模型,指导模型训练。对模型的精度起到举足轻重的作用。 参考文献 [1]SunY,ChenY,WangX,et al. Deep learning face representation by joint identification-verification [C]. NIPS,2014. [2]SunY,WangX,Tang X. Deeply learned face representations are sparse, selective, and robust [C].CVPR,2015. [3]SunY,LiangD,WangX,et al. Deepid3: Face recognition with very deep neural networks [J]. arXiv, 2015. [4]LiuW,WenY,YuZ,et al. Large-Margin Softmax Loss for Convolutional Neural Networks [C]. ICML, 2016. [5]SphereFace: Deep Hypersphere Embedding for Face Recognition. Weiyang Liu, YandongWen,ZhidingYu,Mi ngLi,BhikshaRaj,Le Song. ICML 2017. [6]WangF,XiangX,ChengJ,et al. NormFace: L2 Hypersphere Embedding for Face Verification [C]. ACM MM, 2017. [7]LiuW,WenY,YuZ,et al. SphereFace: Deep Hypersphere Embedding for Face Recognition [C].CVPR. 2017. [8]LiuY,LiH,Wang X. Rethinking feature discrimination and polymerization for large-scale recognition [C]. NIPS workshop, 2017. [9]WangF,LiuW,LiuH,et al. Additive Margin Softmax for Face Verification [C]. ICLR 2018 (Workshop). [10]WangH,WangY,ZhouZ,et al. CosFace: Large Margin Cosine Loss for Deep Face Recognition [C]. CVPR, 2018. [11]JiankangDeng,JiaGuo,StefanosZafeiri ou. ArcFace: Additive Angular Margin Loss for Deep Face Recognition [J]. arXiv:1801.07698. (Submitted to IJCV).