一文了解人脸识别技术的原理 人脸识别技术是什么( 七 )


这篇论文是一篇很有意思的文章,文章对于权重与特征归一化做了很多有意思的探讨 。文章提出,sphereface虽然好,但是它不优美 。在测试阶段,sphereface通过特征间的余弦值来衡量相似性,即以角度为相似性度量 。但在训练过程中也有一个问题,权重没有归一化,loss function在训练过程中减小的同时,会使得权重的模越来越大,所以sphereface损失函数的优化方向并不是很严谨,其实优化的方向还有一部分去增大特征的长度了 。有博主做实验发现,随着m的增大,坐标的尺度也在不断增大,如下图所示 。

一文了解人脸识别技术的原理 人脸识别技术是什么

文章插图
因此作者在优化的过程中,对特征做了归一化处理 。相应的损失函数也如下所示:
一文了解人脸识别技术的原理 人脸识别技术是什么

文章插图
其中W和f都为归一化的特征,两个点积就是角度余弦值 。参数s的引入是因为数学上的性质,保证了梯度大小的合理性,原文中有比较直观的解释,可以阅读原论文,并不是重点 。s既可以变成可学习的参数,也可以变成超参,论文作者给了很多推荐值,可以在论文中找到 。其实,FaceNet中归一化的欧氏距离,和余弦距离是统一的 。
4. AM-softmax/CosFace
参考论文:Additive Margin Softmax for Face Verification
CosFace: Large Margin Cosine Loss for Deep Face Recognition
看上面的论文,会发现少了一个东西,那就是margin,或者说是margin的意味少了一些,所以AM-softmax在归一化的基础上有引入了margin 。损失函数如下:
一文了解人脸识别技术的原理 人脸识别技术是什么

文章插图
直观上来看,-m比更小,所以损失函数值比Normface里的更大,因此有了margin的感觉 。m是一个超参数,控制惩罚,当m越大,惩罚越强 。该方法好的一点是容易复现,而且没有很多调参的tricks,效果也很好 。
(1)ArcFace
与 AM-softmax 相比,区别在于 Arcface 引入 margin 的方式不同,损失函数:
一文了解人脸识别技术的原理 人脸识别技术是什么

文章插图
乍一看是不是和 AM-softmax一样?注意 m 是在余弦里面 。文章指出基于上式优化得到的特征间的 boundary 更为优越,具有更强的几何解释 。
然而这样引入 margin 是否会有问题?仔细想 cos(θ+m) 是否一定比 cos(θ) 小?
最后我们用文章中的图来解释这个问题,并且也由此做一个本章 Margin-based Classification 部分的总结 。
一文了解人脸识别技术的原理 人脸识别技术是什么

文章插图
这幅图出自于 Arcface,横坐标为 θ 为特征与类中心的角度,纵坐标为损失函数分子指数部分的值(不考虑 s),其值越小损失函数越大 。
看了这么多基于分类的人脸识别论文,相信你也有种感觉,大家似乎都在损失函数上做文章,或者更具体一点,大家都是在讨论如何设计上图的 Target logit-θ 曲线 。
这个曲线意味着你要如何优化偏离目标的样本,或者说,根据偏离目标的程度,要给予多大的惩罚 。两点总结:
1. 太强的约束不容易泛化 。例如 Sphereface 的损失函数在 m=3 或 4 的时候能满足类内最大距离小于类间最小距离的要求 。此时损失函数值很大,即 target logits 很小 。但并不意味着能泛化到训练集以外的样本 。施加太强的约束反而会降低模型性能,且训练不易收敛 。
2. 选择优化什么样的样本很重要 。Arcface 文章中指出,给予 θ∈[60° , 90°] 的样本过多惩罚可能会导致训练不收敛 。优化 θ ∈ [30° , 60°] 的样本可能会提高模型准确率,而过分优化 θ∈[0° , 30°] 的样本则不会带来明显提升 。至于更大角度的样本,偏离目标太远,强行优化很有可能会降低模型性能 。
这也回答了上一节留下的疑问,上图曲线 Arcface 后面是上升的,这无关紧要甚至还有好处 。因为优化大角度的 hard sample 可能没有好处 。这和 FaceNet 中对于样本选择的 semi-hard 策略是一个道理 。
Margin based classification 延伸阅读1. A discriminative feature learning approach for deep face recognition [14]
提出了 center loss,加权整合进原始的 softmax loss 。通过维护一个欧式空间类中心,缩小类内距离,增强特征的 discriminative power 。
2. Large-margin softmax loss for convolutional neural networks [10]
Sphereface 作者的前一篇文章,未归一化权重,在 softmax loss 中引入了 margin 。里面也涉及到 Sphereface 的训练细节 。
使用ModelArts训练人脸模型人脸识别算法实现解释