查看原文
其他

【源头活水】SphereFace(A-softmax)论文解读:人脸识别的深度超球嵌入

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—记忆的迷谷

地址:https://zhuanlan.zhihu.com/p/374565098


01

前言
本文是CVPR2017的一篇文章。本文研究了开放集合协议下的深度人脸识别问题,即在适当的度量空间下,理想的人脸特征的最大类内距离小于最小类间距离。然而现在很少有算法可以达到这一标准。目前常用的softmax loss只能学习可分离的特征,但这些特征不够有区别性。虽然结合了center loss的Triplet loss取得了很好的效果,但是center loss只缩小了类内的距离,对类间的距离没有限制,且无法约束单独的样本,需要精心设计的成对的特征,耗时且表现效果不足够好。
本文提出了A-softmax Loss,使网络能够学习角度鉴别特征。几何上,a - softmax损失可以被看作是对超球面流形施加区别性约束。角度margin的大小可通过参数m调整。
论文:SphereFace:Deep Hypersphere Embedding for Face Recognition
https://arxiv.org/abs/1704.08063


02

简介
近些年来,DCNN将人脸识别的性能提升到前所未有的水平,人脸识别分为人脸检测和人脸验证两部分,前者将一张脸分类为一个特定的身份,而后者决定一对脸是否属于同一身份。
如上图,论文比较了闭集人脸识别和开集人脸识别的过程:
闭集人脸识别:所有的测试样本都曾在训练集中出现,很容易根据给定的身份对人脸图像分类,在此场景中,人脸验证相当于分别对一对人脸进行识别。所以闭集人脸识别可以看做分类问题(图的左侧)。
开集人脸识别:测试集的人脸图片没在训练集中出现过,难度更大也更接近于现实场景中的应用。由于测试数据在训练集中不包含,需要将人脸映射到判别特征空间。在这个场景中,人脸识别可以看作是在探针人脸和图库中的每个身份之间进行人脸验证(图的右侧)。开集人脸识别本质上是一个度量学习问题,其中关键是学习有区别的特征。期望特征在一定度量空间下满足最大类内距离小于最小类间距离的准则。
本文提出了A-softmax解决开集人脸检测的难题,取得了不错的效果。如上图,黄色的点代表第一类面部特征,而紫色的点代表第二类面部特征。可以看出,原始的softmax loss学习到的特征不能简单地通过角度进行分类,即图(a)、(b)中有一部分紫色的点错误地落在了左半部分,而修改后的softmax loss可以将二者分离。A-Softmax损耗可以进一步增加学习特征的角度。通过优化A-Softmax损失,使决策区域更加分离,同时扩大了类间的margin,压缩了类内角分布。
本文的贡献:
1. 提出了A-Softmax损失以及对其的几何解释。学习到的特征在分布在一个超球面上。
2. 推导了m的下界,使A-Softmax损失能够近似于最小类间距离大于最大类内距离的学习任务。
3. 第一个在人脸识别任务中展示角度边缘的有效性的。SphereFace取得了有竞争力的结果。


03

A-softmax LOSS
相对于传统的softmax分类而言,区分出的特征是separable feature,而在人脸领域,我们的目标获得discriminative feature,因为人脸识别大多时候都是开集,训练集不可能把所有的人脸都包含进来,所以这个时候就需要margin的作用,来实现完美的约束,即:最大的类内距离 < 最小的类间距离。
论文首先从softmax损失函数提起:
对于样本x属于某一个类别的概率如下:
在softma损失函数中xi是输入的特征向量,W是第j类的权值,b代表偏置。fj定义如下:
将f代入原公式,通过余弦公式的变换得到如下损失函数:
公式中的夹角代表xi和W的角度,至此,我们在训练的时候,优化的还是W和X的内积。本文提出了一个改进:归一化W,同时让bias置零,这样就可以让W全部都分布在超球面上,同时loss函数变为modified softmax:
从上面公式可以看到,已经从优化内积变为了优化角度,类别的决策边界就完全由角度决定,以二分类为例,如下表,决策边界变得更加简洁明了,也更符合超球面的图像可解释化。
虽然可以通过modified softmax loss学习特征,但是这些特征不一定可判别。我们希望类内更紧凑些,于是采用一个margin来对夹角进行约束之前是cos(θ1)>cos(θ2),通过增加margin m,变成cos(mθ1)>cos(θ2) ,这样就会约束θ1变得更小,也就是类内更加紧凑。这个思想最早是由large margin softmax提出来的。为了进一步将强特征的可判别性,作者将角度距离加入到损失函数中,即A-Softmax loss,一般化的公式如下:
这里需要注意的是,如果实际优化的时候仅仅使用cos,那么需要对θ的范围进行约束,以保证cos单调递减,而为了摆脱这一约束实现cnn的直接优化,实际使用的是cos的近似函数:单调递减的一个函数。改进如下:
其中:
m是控制margin大小的参数, k∈[0, m − 1],当m=1时,损失函数和原softmax loss保持一致。将使用不同大小的m训练得到的样本分布可视化如下图:可以发现,m越大,不同类别的样本在球体上的分布散开越明显,角边缘也越大。于此同时,属于同一类的样本也随着m增大越来越聚合在一起。


04

Tricks
1. 删除最后一层的Relu激活函数
通常将ReLU连接到最后一个全连接层,因此学习到的特征只会分布在非负[0,+∞]范围内,限制了学习空间(角度)。所以本文去除了SphereFace网络中连接到FC1底部的ReLU非线性激活函数,直观地说,删除ReLU可以极大地有利于特性学习,因为它提供了更大的学习空间。
如上图,作者采用MINIST数据集做了一个实验,图中左边和右边两张图分别表示添加和不添加最后一个RELU的情况:可以看出使用RELU激活函数以后,特征只能分布在第一象限,如果没有最后一个RELU,分布会更加合理、更加散开。
2. 对权重进行归一化
归一化权值可以隐式地减少训练数据不平衡问题,也就是说,作者认为归一化权值可以部分解决训练数据不平衡的问题。此外作者还发现,一个类的样本数越大,相关权值的范数也越大。第i类的权值的范数很大程度上取决于它的样本分布和样本数量。因为人脸验证的测试集中的数据在训练集中没有出现过,所以训练数据集中的先验不应该转移到测试中,而将权重Wi归一化操作恰好可以看做是隐藏了训练数据集中学习过的先验知识,消除这种先验有利于人脸验证。
3. 偏置bias置为零
通常在传统的DCNN中全连接层保留偏置项,但是偏置项会使分析A-softmax损失变的困难,因为SprereFace目标是优化角度,并产生margin。但由于全连接层存在偏置,增加了角度的几何解释的难度,因此将该偏置剔除(b设置为0)。
作者也针对MINIST数据集做了实验,图中左边的两张图片是使用偏置项的,右边两张图是偏置项归零的,将偏差归零对特征分布没有直接影响。有偏置和无偏置学习的特征都能充分利用学习空间。
加入Tricks的效果:
从表中可以发现,移除了最后一个RELU、消除偏置、权重归一化以后的性能都得到了改善,此外,使用了A-softMax可以大幅度提升角度特征的判别能力。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看


分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存