再谈人脸识别损失函数综述

2019 年 5 月 7 日 人工智能前沿讲习班

Softmax


softmax是最常见的人脸识别函数,其原理是去掉最后的分类层,作为解特征网络导出特征向量用于人脸识别。softmax训练的时候收敛得很快,但是精确度一般达到0.9左右就不会再上升了,一方面是作为分类网络,softmax不能像metric learning一样显式的优化类间和类内距离,所以性能不会特别好,另外,人脸识别的关键在于得到泛化能力强的feature,与分类能力并不是完全等价的。

公式中N是batch size的大小,n是类别数目。如果训练进行了停滞,可以采用挑选hard sample(即那些预测错误但是预测值较高的样本,也就是比较难分类的样本)的办法进行帮助训练。具体的可以了解OHEM(Online hard example mining)技术, 比如说Focal loss一类的。


Triplet Loss


Triplet loss属于Metric Learning, 相比起softmax, 它可以方便地训练大规模数据集,不受显存的限制。缺点是过于关注局部,导致难以训练且收敛时间长

这里提一下Metric Learning的概念,它是根据不同的任务来自主学习出针对某个特定任务的度量距离函数。通过计算两张图片之间的相似度,使得输入图片被归入到相似度大的图片类别中去。通常的目标是使同类样本之间的距离尽可能缩小,不同类样本之间的距离尽可能放大。


Center Loss


首先我们看一张图:


可以看到,在separable features中,类内距离有的时候甚至是比内间距离要大的,这也是上问题到softmax效果不好的原因之一,它具备分类能力但是不具备metric learning的特性,没法压缩同一类别。在这个基础上,center loss被提出来,用于压缩同一类别。center loss的核心是,为每一个类别提供一个类别中心,最小化每个样本与该中心的距离:

左边是softmax, 右边则是约束各个样本到样本中心的距离。


L-Softmax


原始的Softmax的目的是使得>,即 ,在这个基础上,L-softmax( Large-margin softmax) 希望可以通过增加一个正整数变量m,使得产生的决策边界可以更加严格地约束上述不等式,让类内的间距更加的紧凑,类间的间距更加具有区分性


L-Softmax的公式:

 cos函数在(0,π)内是单调递减的,乘上正整数m后内积会减小,这样可以加大类间的差别,如图所示:


由于L-softmax有一个更加难的实现目标,所以说它更能避免过拟合。同时L-softmax不仅在分类问题上有优势,同样在识别问题上也有优势,因为它使得类内的距离更加的紧凑。 通过控制m的大小,调整类间距离。m越大,类间距离就越大,类内更加紧凑。


不同m带来的分类效果


SphereFace( A-softmax)



SphereFace是在softmax的基础上将权重归一化,即使得 。它与前面提到的L-sofrmax最大的区别在于SphereFace将W权重归一化了。L-Softmax会同时从角度和权重长度上区分不同类别,而SphereFace只从角度上去区分不同类别,在数据集大小固定的条件下,L-softmax的精确度可能不如sphereFace。


在最近读的一篇论文The Devil of Face Recognition is in the Noise中,商汤认为A-Softmax使用在clean dataset的效果比之前描述的各种loss要好,但是在噪声极大的数据分布中,表现甚至不如Center Loss和Softmax。有关人脸数据集噪声的问题,可以参考之前写的博文:人脸识别常用数据集介绍(附下载链接)


CosFace( LMSL: Large Margin Cosine Loss)



CosFace的思想和SphereFace( A-softmax)的思想接近,其中主要做了以下三点的改进:

  • loss的形式做了稍微的改变,将超参数m由乘法运算变成了减法运算

  • 不仅对权重进行了正则化,还对特征进行了正则化

  • 再乘上一个scale参数,超球面过小时,分类映射到超球面上不好分类,这个scale参数可以扩大超球面体积,帮助分类

如下图所示,A-softmax存在一个问题,它的决策边界会随着 的变化而变化,当 为0的时候,margin=0, 而CosFace(即LMCL)克服了这个缺点,两个类别之间有一个明确的决策边界(margin>0), 相对来说有更好的鲁棒性



各大损失函数的决策边界


这里插播一下决策边界( Decision Boundaries)的概念,它表示的是在需要分类的数据中,如何区分不同类别的边界。

那么这么决策边界怎么计算呢,以二分类为例做一个简单说明。对于二分类而言,分类边界就是样本属于两个类别的概率相等。以softmax来距离,假设某个样属于类别1的概率是 中log函数的输入,那么属于类别2的概率只是将log函数输入的分子换成类别2而已,分母是不变的,又因为以e为底的指数函数又是递增函数,所以直接让两个类别的指数相等就能得到softmax的分类边界函数:


ArcFace


Arcface的思想和CosFace类似,主要区别是将m放入了cos中,角度距离比余弦距离对角度的影响更加直接:

论文中提供了大量对照实验:



开源实现


想要研究softmax和triplet loss,可以参照google facenet的开源实现:davidsandberg/facenet(https://github.com/davidsandberg/facenet)

想要研究各种ArcFace、CosineFace等,可以参照deepinsight洞见实验室的开源代码:deepinsight/insightface(https://github.com/deepinsight/insightface)

从在数据集表现上来说,ArcFace优于其他几种loss, 著名的megaface赛事,在很长一段时间都停留在91%左右,在洞见实验室使用ArcFace提交后,准确率哗哗就提到了98%,之后再刷的团队也大同小异,多使用ArcFace, CosineFace等损失函数。

这两个开源算法我也都跑过,粗略地比较了一下,可以见insightface和facenet效果+性能比较(https://zhuanlan.zhihu.com/p/52560499)

最后吐槽一句,写这篇文章的时候发现不少技术博客文章的公式都错了,然后以讹传讹很多都是错的,我自己写的时候就算对着论文有些地方没注意也打错了,所以大家要对着公式实现的时候尽量回去看论文,第二手来源信息肯定没有一手信息可靠~


参考文献


人脸识别Loss对比:L-Softmax, SphereFace, CosFace, ArcFace

ArcFace算法笔记 - AI之路 - CSDN博客

人脸识别论文再回顾之一:Center Loss

ArcFace: Additive Angular Margin Loss for Deep Face Recognition


@知乎:Slumbers

版权声明

本文版权归《Slumbers》,转载请自行联系。



历史文章推荐:

加州伯克利大学计算机系是如何培养计算机人才的?

CVPR2019 | 最新高效卷积方式HetConv

合集下载 | 2018年图灵奖得主“深度学习三巨头”主要贡献和代表性论文

火爆GitHub的《机器学习100天》,有人把它翻译成了中文版!

如何学会看arxiv.org才能不错过自己研究领域的最新论文?

机器学习中的最优化算法总结

深度学习500问!一份火爆GitHub的面试手册

深度学习最常见的 12 个卷积模型汇总,请务必掌握!

CVPR2019 | 专门为卷积神经网络设计的训练方法:RePr

深度神经网络模型训练中的最新tricks总结【原理与代码汇总】

基于深度学习的艺术风格化研究【附PDF】

最新国内大学毕业论文LaTex模板集合(持续更新中)


你正在看吗?👇

登录查看更多
14

相关内容

最新《多任务学习》综述,39页pdf
专知会员服务
258+阅读 · 2020年7月10日
【综述】交通流量预测,附15页论文下载
专知会员服务
128+阅读 · 2020年4月23日
专知会员服务
155+阅读 · 2020年4月21日
2019->2020必看的十篇「深度学习领域综述」论文
专知会员服务
269+阅读 · 2020年1月1日
【文献综述】边缘计算与深度学习的融合综述论文
专知会员服务
158+阅读 · 2019年12月26日
中文知识图谱构建技术以及应用的综述
专知会员服务
309+阅读 · 2019年10月19日
度量学习中的pair-based loss
极市平台
65+阅读 · 2019年7月17日
CVPR 19系列2 | 强判别能力的深度人脸识别(文末附有源码)
最全综述 | 图像目标检测
计算机视觉life
30+阅读 · 2019年6月24日
综述 | CVPR2019目标检测方法进展
计算机视觉life
15+阅读 · 2019年4月3日
判别特征的学习方法用于人脸识别(文末源码)
计算机视觉战队
7+阅读 · 2019年3月28日
人脸识别损失函数综述(附开源实现)
极市平台
29+阅读 · 2019年3月12日
博客 | 回归类算法最全综述及逻辑回归重点讲解
AI研习社
13+阅读 · 2018年11月29日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
中国团以98%精度夺得MegaFace人脸识别冠军(开源)
全球人工智能
5+阅读 · 2018年3月12日
A Survey on Bayesian Deep Learning
Arxiv
60+阅读 · 2020年7月2日
Anomalous Instance Detection in Deep Learning: A Survey
Accelerated Methods for Deep Reinforcement Learning
Arxiv
6+阅读 · 2019年1月10日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Arxiv
8+阅读 · 2018年5月15日
VIP会员
相关资讯
度量学习中的pair-based loss
极市平台
65+阅读 · 2019年7月17日
CVPR 19系列2 | 强判别能力的深度人脸识别(文末附有源码)
最全综述 | 图像目标检测
计算机视觉life
30+阅读 · 2019年6月24日
综述 | CVPR2019目标检测方法进展
计算机视觉life
15+阅读 · 2019年4月3日
判别特征的学习方法用于人脸识别(文末源码)
计算机视觉战队
7+阅读 · 2019年3月28日
人脸识别损失函数综述(附开源实现)
极市平台
29+阅读 · 2019年3月12日
博客 | 回归类算法最全综述及逻辑回归重点讲解
AI研习社
13+阅读 · 2018年11月29日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
中国团以98%精度夺得MegaFace人脸识别冠军(开源)
全球人工智能
5+阅读 · 2018年3月12日
Top
微信扫码咨询专知VIP会员