由于之前长期从事NLP相关工作,对图像领域的知识积累极少,鉴于此次工作需要做一些人脸识别的事情,查阅了一些资料,对人脸识别算法有了简单的了解,总结下,希望能够帮到想快速浏览人脸识别算法的小白们啊!主要参考资料1
人脸识别算法经历了早期算法,人工特征+分类器,深度学习3个阶段
早期的算法有基于几何特征的算法,基于模板匹配的算法,子空间算法等多种类型。代表算法有:
重点来了,自2012年深度学习在ILSVRC-2012大放异彩后,很多研究者都在尝试将其应用在自己的方向,这极大的推动了深度学习的发展。卷积神经网络在图像分类中显示出了巨大的威力,通过学习得到的卷积核明显优于人工设计的特征+分类器的方案。在人脸识别的研究者利用卷积神经网络(CNN)对海量的人脸图片进行学习,然后对输入图像提取出对区分不同人的脸有用的特征向量,替代人工设计的特征。
在前期,研究人员在网络结构、输入数据的设计等方面尝试了各种方案,然后送入卷积神经网络进行经典的目标分类模型训练;在后期,主要的改进集中在损失函数上,即迫使卷积网络学习得到对分辨不同的人更有效的特征,这时候人脸识别领域彻底被深度学习改造了!
DeepFace2是CVPR2014上由Facebook提出的方法,是深度卷积神经网络在人脸识别领域的奠基之作。DeepFace在LFW上取得了97.35%的准确率,已经接近了人类的水平。相比于1997年那篇基于卷积神经网络的40个人400张图的数据规模,Facebook搜集了4000个人400万张图片进行模型训练,也许我们能得出一个结论:大数据取得了成功!
Google推出的FaceNet3,使用三元组损失函数(Triplet Loss)代替常用的Softmax交叉熵损失函数,在一个超球空间上进行优化使类内距离更紧凑,类间距离更远,最后得到了一个紧凑的128维人脸特征,其网络使用GoogLeNet的Inception模型,模型参数量较小,精度更高,在LFW上取得了99.63%的准确率,这种损失函数的思想也可以追溯到早期的LDA算法。
CVPR2014、CVPR2015香港中文大学汤晓鸥团队提出的DeepID系列是一组非常有代表性的工作。其中DeepID14使用四层卷积,最后一层为Softmax,中间为Deep Hidden Identity Features,是学习到的人脸特征表示,并使用Multi-patch分别训练模型最后组合成高维特征,人脸验证阶段使用联合贝叶斯的方法;通过学习一个多类(10000类,每个类大约有20个实例)人脸识别任务来学习特征,文中指出,随着训练时要预测的人脸类越多,DeepID的泛化能力就越强。
DeepID25在DeepID1的基础上对损失函数部分做了改进,在原有Identification Loss基础上,增加了Verification Loss,其中Verification主要是增加类内的紧致度,而Identification是反应类间的变化。 通过提升类间差距,降低类内差距,是训练出来的特征更加适合类似人脸识别的任务。这一思想同样源于早期的LDA算法。
DeepID36提出了用于人脸识别的两个非常深的神经网络结构(基于VGG和GoogleNet),但识别结果与DeepID2一样,或许当有更多的训练数据时,能够提高性能,需要进一步研究。
当前人脸识别任务主要是应用在开集识别的情况下,这就需要学习出来的人脸特征有好的泛化能力,而Softmax损失函数本身是用于解决多分类的问题,并没有针对隐含特征层去优化,往往直接训练出来的特征并不具有好的泛化能力。Contrastive Loss和Triplet Loss虽然优化目标很明确很合理,但是需要研发人员具有丰富的数据工程经验(比如OHEM-困难样本挖掘)。 能不能有一种端到端的解决方案呢?ECCV2016一篇文章提出了权衡的解决方案。通过添加Center-Loss7对特征层进行优化并结合Softmax就能够训练出拥有内聚性良好的特征。该特点在人脸识别上尤为重要,从而使得在很少的数据情况下训练出来的模型也能有不俗的性能。
Center-Loss在Softmax的基础上加入了一个维持类别中心的损失函数,并能使特征向所属类别中心聚拢,从而使达到了和Triple Loss类似的效果。
是ICML2016的一篇文章提出的,对Softmax做了改进,在网络设计上将最后一层分类层的偏置项去掉(这一做法在后续的人脸识别损失函数改进中都得到了使用),直接优化特征和分类器的余弦角度,通过人为设定增加了一个角度(Margin)增加了模型的学习难度,借用SVM的思想来理解的话,如果原来的Softmax loss是只要支持向量和分类面的距离大于h就算分类效果比较好了,那么L-Softmax8就是需要距离达到mh(m是正整数)才算分类效果达到预期。通过这种方式最终使类间距离增大,类内样本更紧凑。
SphereFace提出了A-Softmax9,针对L-Softmax做了微小的改进,归一化了权重,可以看成在一个超球面的流形上对样本进行分类判别。
以上的几种方法都没有对嵌入的特征层进行归一化,所以不能看作严格意义上的针对角度的优化。
L2-Softmax10将特征向量做了L2归一化,这样做的好处是范数小的特征算出来的梯度会更大;而范数小的特征一般对应的是质量较差的图片。因此,某种程度上特征归一化起到类似于难例挖掘的作用。然而对特征层强行进行L2的约束会导致分类空间太小,导致模型训练困难,Loss值难以下降分类效果不佳。在实际的模型训练中为了便于模型优化作者加入尺度缩放因子将分类的超球空间放大。如下图所示,上边一行的Feature Norm很大,下边一行Feature Norm很小,L2-Softmax能更好的处理下边一行的人脸图片。
后续的AM-Softmax[20]和ArcFace[21]都是针对SphereFace做了改进。
AM-Softmax11是把角度裕量从cos(mθ)改进为cos(θ)+mcos(mθ)改进为cos(θ)+m,主要的好处是这样改进之后容易收敛。
ArcFace12可以看做是针对AM-Softmax的改进版本,直接针对角度去加Margin(红线标记的部分),这样做的好处是角度距离比余弦距离在对角度的影响更加直接。ArcFace同时对特征和权重归一化,参考L2-Softmax加入了固定的特征尺度因子S。通过针对性的对网络结构做了改进以及对MegaFace数据集的清洗,作者跑出了令人兴奋的指标。
转自:https://blog.csdn.net/wfei101/article/details/80700325
A-softmax是在传统softmax的基础上,通过m和角度相乘,引进了角度间隔(angular margin) m; AM-softmax是对A-softmax的改进, 把m由cos函数内引到cos函数外,将乘法变成加法运算,为余弦间隔;ArcFace则是在cos函数里加上一个角度间隔(angular margin)m。这四种损失函数如表格1所示:
ArcFace的几何表示如下图所示:在二分类情况下,对于类别1,ArcFace的边界决策函数为
SphereFace、F-Norm Sphereface、CosineFace和ArcFace在二分类中的分界线
参考文章:https://blog.csdn.net/intflojx/article/details/82378520
观点总结:
一文带你了解人脸识别算法演化史! ↩︎
Yaniv Taigman, Ming Yang, Marcaurelio Ranzato, Lior Wolf. DeepFace: Closing the Gap to Human-Level Performance in Face Verification. 2014,computer vision and pattern recognition. ↩︎
Florian Schroff, Dmitry Kalenichenko, James Philbin. FaceNet: A unified embedding for face recognition and clustering. 2015, computer vision and pattern recognition. ↩︎
Yi Sun, Xiaogang Wang, Xiaoou Tang. DeepID: Deep Learning for Face Recognition. 2014, computer vision and pattern recognition. ↩︎
Yi Sun, Yuheng Chen, Xiaogang Wang, Xiaoou Tang. Deep Learning Face Representation by Joint Identification-Verification. 2014, neural information processing systems. ↩︎
Yi Sun, Ding Liang, Xiaogang Wang, Xiaoou Tang. DeepID3: Face Recognition with Very Deep Neural Networks. 2015, Computer Vision and Pattern Recognition. ↩︎
Yandong Wen, Kaipeng Zhang, Zhifeng Li, Yu Qiao. A Discriminative Feature Learning Approach for Deep Face Recognition. 2016, european conference on computer vision. ↩︎
W. Liu, Y. Wen, Z. Yu, and M. Yang. Large-margin softmax loss for convolutional neural networks. In ICML, 2016. 2, 3,7, 8 ↩︎
W. Liu, Y. Wen, Z. Yu, M. Li, B. Raj, and L. Song. Sphereface: Deep hypersphere embedding for face recognition. arXiv preprint arXiv:1704.08063, 2017. 2, 8 ↩︎
Ranjan, Rajeev, Carlos D. Castillo, and Rama Chellappa. “L2-constrained Softmax Loss for Discriminative Face Verification.” arXiv preprint arXiv:1703.09507 (2017).v ↩︎
F. Wang, W. Liu, H. Liu, and J. Cheng. Additive margin softmax for face verification. In arXiv:1801.05599, 2018. 1,2, 3, 4, 9 ↩︎
Deng J, Guo J, Zafeiriou S. ArcFace: Additive Angular Margin Loss for Deep Face Recognition[J]. arXiv preprint arXiv:1801.07698, 2018. ↩︎