softmax是最常见的人脸识别函数,其原理是去掉最后的分类层,作为解特征网络导出特征向量用于人脸识别。softmax训练的时候收敛得很快,但是精确度一般达到0.9左右就不会再上升了,一方面是作为分类网络,softmax不能像metric learning一样显式的优化类间和类内距离,所以性能不会特别好,另外,人脸识别的关键在于得到泛化能力强的feature,与分类能力并不是完全等价的。
公式中N是batch size的大小,n是类别数目。如果训练进行了停滞,可以采用挑选hard sample(即那些预测错误但是预测值较高的样本,也就是比较难分类的样本)的办法进行帮助训练。具体的可以了解OHEM(Online hard example mining)技术, 比如说Focal loss一类的。
Triplet loss属于Metric Learning, 相比起softmax, 它可以方便地训练大规模数据集,不受显存的限制。缺点是过于关注局部,导致难以训练且收敛时间长
这里提一下Metric Learning的概念,它是根据不同的任务来自主学习出针对某个特定任务的度量距离函数。通过计算两张图片之间的相似度,使得输入图片被归入到相似度大的图片类别中去。通常的目标是使同类样本之间的距离尽可能缩小,不同类样本之间的距离尽可能放大。
首先我们看一张图:
可以看到,在separable features中,类内距离有的时候甚至是比内间距离要大的,这也是上问题到softmax效果不好的原因之一,它具备分类能力但是不具备metric learning的特性,没法压缩同一类别。在这个基础上,center loss被提出来,用于压缩同一类别。center loss的核心是,为每一个类别提供一个类别中心,最小化每个样本与该中心的距离:
左边是softmax, 右边则是约束各个样本到样本中心的距离。
原始的Softmax的目的是使得
cos函数在(0,π)内是单调递减的,乘上正整数m后内积会减小,这样可以加大类间的差别,如图所示:
由于L-softmax有一个更加难的实现目标,所以说它更能避免过拟合。同时L-softmax不仅在分类问题上有优势,同样在识别问题上也有优势,因为它使得类内的距离更加的紧凑。 通过控制m的大小,调整类间距离。m越大,类间距离就越大,类内更加紧凑。
不同m带来的分类效果SphereFace是在softmax的基础上将权重归一化,即使得
在最近读的一篇论文The Devil of Face Recognition is in the Noise中,商汤认为A-Softmax使用在clean dataset的效果比之前描述的各种loss要好,但是在噪声极大的数据分布中,表现甚至不如Center Loss和Softmax。有关人脸数据集噪声的问题,可以参考之前写的博文:人脸识别常用数据集介绍(附下载链接)
CosFace的思想和SphereFace( A-softmax)的思想接近,其中主要做了以下三点的改进:
如下图所示,A-softmax存在一个问题,它的决策边界会随着
这里插播一下决策边界( Decision Boundaries)的概念,它表示的是在需要分类的数据中,如何区分不同类别的边界。
那么这么决策边界怎么计算呢,以二分类为例做一个简单说明。对于二分类而言,分类边界就是样本属于两个类别的概率相等。以softmax来距离,假设某个样属于类别1的概率是
Arcface的思想和CosFace类似,主要区别是将m放入了cos中,角度距离比余弦距离对角度的影响更加直接:
论文中提供了大量对照实验:
想要研究softmax和triplet loss,可以参照google facenet的开源实现:davidsandberg/facenet
想要研究各种ArcFace、CosineFace等,可以参照deepinsight洞见实验室的开源代码:deepinsight/insightface
从在数据集表现上来说,ArcFace优于其他几种loss, 著名的megaface赛事,在很长一段时间都停留在91%左右,在洞见实验室使用ArcFace提交后,准确率哗哗就提到了98%,之后再刷的团队也大同小异,多使用ArcFace, CosineFace等损失函数。
这两个开源算法我也都跑过,粗略地比较了一下,可以见insightface和facenet效果+性能比较
最后吐槽一句,写这篇文章的时候发现不少技术博客文章的公式都错了,然后以讹传讹很多都是错的,我自己写的时候就算对着论文有些地方没注意也打错了,所以大家要对着公式实现的时候尽量回去看论文,第二手来源信息肯定没有一手信息可靠~
人脸识别Loss对比:L-Softmax, SphereFace, CosFace, ArcFace
ArcFace算法笔记 - AI之路 - CSDN博客
人脸识别论文再回顾之一:Center Loss
ArcFace: Additive Angular Margin Loss for Deep Face Recognition
@Slumbers
版权声明
本文版权归《Slumbers》,转载请自行联系