人脸识别算法的简单发展历程

由于之前长期从事NLP相关工作,对图像领域的知识积累极少,鉴于此次工作需要做一些人脸识别的事情,查阅了一些资料,对人脸识别算法有了简单的了解,总结下,希望能够帮到想快速浏览人脸识别算法的小白们啊!主要参考资料1

文章目录

  • 人脸识别主要任务
  • 早期算法
  • 人工特征+分类器
  • 深度学习
    • DeepFace,2014,Facebook
    • FaceNet,2015,Google
    • DeepID1,2,3系列,2014-2015,香港中文大学汤晓鸥团队
    • Contrastive Loss和Triplet Loss,2016
    • L-Softmax,2016
    • A-Softmax,2017
    • L2-Softmax,2017
    • AM-Softmax,2018
    • ArcFace,2018
      • ArcFace,AM-softmax,A-softmax和softmax之间的联系和区别
  • 开源项目
  • 为什么要优化人脸识别中的LOSS,而不是直接用softmax

人脸识别主要任务

  • 人脸检测(Face Detection):解决“人脸在哪里”的问题,把真正的人脸区域从图像中裁剪出来
  • 人脸对齐(Face Alignment):同一个人在不同的图像序列中可能呈现出不同的姿态和表情,为了便于人脸识别,将人脸图像都变换到一个统一的角度和姿态
  • 人脸特征表示(Face Feature Representation):通过特征建模得到向量化的人脸特征
    得到特征后的应用大家都知道了:人脸对比、人脸验证、人脸识别等。

人脸识别算法经历了早期算法,人工特征+分类器,深度学习3个阶段

早期算法

早期的算法有基于几何特征的算法,基于模板匹配的算法,子空间算法等多种类型。代表算法有:

  • PCA(主成分分析,也称为特征脸EigenFace):降维后进行识别
  • LDA(线性判别分析,FisherFace):中心思想是最大化类间差异,最小化类内差异,即保证同一个人的不同人脸图像在投影之后聚集在一起,不同人的人脸图像在投影之后被用一个大的间距分开。这种思想在后来的深度学习阶段也被用来优化人脸识别效果,而且非常成功。
  • 基于以上两种方法非线性降维方法
  • HMM:对光照变化、表情和姿态的变化更鲁棒
  • 卷积神经网络:已有人使用(We use a database of 400 images of 40 individuals!!!),但是限于数据量、网络深度和硬件都和现在差的很多,并没有十分出色。

人工特征+分类器

深度学习

重点来了,自2012年深度学习在ILSVRC-2012大放异彩后,很多研究者都在尝试将其应用在自己的方向,这极大的推动了深度学习的发展。卷积神经网络在图像分类中显示出了巨大的威力,通过学习得到的卷积核明显优于人工设计的特征+分类器的方案。在人脸识别的研究者利用卷积神经网络(CNN)对海量的人脸图片进行学习,然后对输入图像提取出对区分不同人的脸有用的特征向量,替代人工设计的特征。
在前期,研究人员在网络结构、输入数据的设计等方面尝试了各种方案,然后送入卷积神经网络进行经典的目标分类模型训练;在后期,主要的改进集中在损失函数上,即迫使卷积网络学习得到对分辨不同的人更有效的特征,这时候人脸识别领域彻底被深度学习改造了!

DeepFace,2014,Facebook

DeepFace2是CVPR2014上由Facebook提出的方法,是深度卷积神经网络在人脸识别领域的奠基之作。DeepFace在LFW上取得了97.35%的准确率,已经接近了人类的水平。相比于1997年那篇基于卷积神经网络的40个人400张图的数据规模,Facebook搜集了4000个人400万张图片进行模型训练,也许我们能得出一个结论:大数据取得了成功!
人脸识别算法的简单发展历程_第1张图片

FaceNet,2015,Google

Google推出的FaceNet3,使用三元组损失函数(Triplet Loss)代替常用的Softmax交叉熵损失函数,在一个超球空间上进行优化使类内距离更紧凑,类间距离更远,最后得到了一个紧凑的128维人脸特征,其网络使用GoogLeNet的Inception模型,模型参数量较小,精度更高,在LFW上取得了99.63%的准确率,这种损失函数的思想也可以追溯到早期的LDA算法。

人脸识别算法的简单发展历程_第2张图片

DeepID1,2,3系列,2014-2015,香港中文大学汤晓鸥团队

CVPR2014、CVPR2015香港中文大学汤晓鸥团队提出的DeepID系列是一组非常有代表性的工作。其中DeepID14使用四层卷积,最后一层为Softmax,中间为Deep Hidden Identity Features,是学习到的人脸特征表示,并使用Multi-patch分别训练模型最后组合成高维特征,人脸验证阶段使用联合贝叶斯的方法;通过学习一个多类(10000类,每个类大约有20个实例)人脸识别任务来学习特征,文中指出,随着训练时要预测的人脸类越多,DeepID的泛化能力就越强。
人脸识别算法的简单发展历程_第3张图片
DeepID25在DeepID1的基础上对损失函数部分做了改进,在原有Identification Loss基础上,增加了Verification Loss,其中Verification主要是增加类内的紧致度,而Identification是反应类间的变化。 通过提升类间差距,降低类内差距,是训练出来的特征更加适合类似人脸识别的任务。这一思想同样源于早期的LDA算法。
DeepID36提出了用于人脸识别的两个非常深的神经网络结构(基于VGG和GoogleNet),但识别结果与DeepID2一样,或许当有更多的训练数据时,能够提高性能,需要进一步研究。
人脸识别算法的简单发展历程_第4张图片

Contrastive Loss和Triplet Loss,2016

当前人脸识别任务主要是应用在开集识别的情况下,这就需要学习出来的人脸特征有好的泛化能力,而Softmax损失函数本身是用于解决多分类的问题,并没有针对隐含特征层去优化,往往直接训练出来的特征并不具有好的泛化能力。Contrastive Loss和Triplet Loss虽然优化目标很明确很合理,但是需要研发人员具有丰富的数据工程经验(比如OHEM-困难样本挖掘)。 能不能有一种端到端的解决方案呢?ECCV2016一篇文章提出了权衡的解决方案。通过添加Center-Loss7对特征层进行优化并结合Softmax就能够训练出拥有内聚性良好的特征。该特点在人脸识别上尤为重要,从而使得在很少的数据情况下训练出来的模型也能有不俗的性能。
Center-Loss在Softmax的基础上加入了一个维持类别中心的损失函数,并能使特征向所属类别中心聚拢,从而使达到了和Triple Loss类似的效果。
人脸识别算法的简单发展历程_第5张图片

L-Softmax,2016

是ICML2016的一篇文章提出的,对Softmax做了改进,在网络设计上将最后一层分类层的偏置项去掉(这一做法在后续的人脸识别损失函数改进中都得到了使用),直接优化特征和分类器的余弦角度,通过人为设定增加了一个角度(Margin)增加了模型的学习难度,借用SVM的思想来理解的话,如果原来的Softmax loss是只要支持向量和分类面的距离大于h就算分类效果比较好了,那么L-Softmax8就是需要距离达到mh(m是正整数)才算分类效果达到预期。通过这种方式最终使类间距离增大,类内样本更紧凑。
人脸识别算法的简单发展历程_第6张图片

A-Softmax,2017

SphereFace提出了A-Softmax9,针对L-Softmax做了微小的改进,归一化了权重,可以看成在一个超球面的流形上对样本进行分类判别。
人脸识别算法的简单发展历程_第7张图片
以上的几种方法都没有对嵌入的特征层进行归一化,所以不能看作严格意义上的针对角度的优化。

L2-Softmax,2017

L2-Softmax10将特征向量做了L2归一化,这样做的好处是范数小的特征算出来的梯度会更大;而范数小的特征一般对应的是质量较差的图片。因此,某种程度上特征归一化起到类似于难例挖掘的作用。然而对特征层强行进行L2的约束会导致分类空间太小,导致模型训练困难,Loss值难以下降分类效果不佳。在实际的模型训练中为了便于模型优化作者加入尺度缩放因子将分类的超球空间放大。如下图所示,上边一行的Feature Norm很大,下边一行Feature Norm很小,L2-Softmax能更好的处理下边一行的人脸图片。
人脸识别算法的简单发展历程_第8张图片
后续的AM-Softmax[20]和ArcFace[21]都是针对SphereFace做了改进。

AM-Softmax,2018

AM-Softmax11是把角度裕量从cos(mθ)改进为cos(θ)+mcos(mθ)改进为cos(θ)+m,主要的好处是这样改进之后容易收敛。

人脸识别算法的简单发展历程_第9张图片
人脸识别算法的简单发展历程_第10张图片

ArcFace,2018

ArcFace12可以看做是针对AM-Softmax的改进版本,直接针对角度去加Margin(红线标记的部分),这样做的好处是角度距离比余弦距离在对角度的影响更加直接。ArcFace同时对特征和权重归一化,参考L2-Softmax加入了固定的特征尺度因子S。通过针对性的对网络结构做了改进以及对MegaFace数据集的清洗,作者跑出了令人兴奋的指标。
人脸识别算法的简单发展历程_第11张图片
人脸识别算法的简单发展历程_第12张图片

ArcFace,AM-softmax,A-softmax和softmax之间的联系和区别

转自: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所示:
人脸识别算法的简单发展历程_第13张图片

ArcFace的几何表示如下图所示:在二分类情况下,对于类别1,ArcFace的边界决策函数为
人脸识别算法的简单发展历程_第14张图片

SphereFace、F-Norm Sphereface、CosineFace和ArcFace在二分类中的分界线
人脸识别算法的简单发展历程_第15张图片

开源项目

  • facenet: https://github.com/davidsandberg/facenet
  • Insightface: https://github.com/deepinsight/insightface
    loss-type=0: Softmax
    loss-type=1: SphereFace
    loss-type=2: CosineFace
    loss-type=4: ArcFace
    loss-type=5: Combined Margin
    loss-type=12: TripletLoss

为什么要优化人脸识别中的LOSS,而不是直接用softmax

参考文章:https://blog.csdn.net/intflojx/article/details/82378520
观点总结:

  1. Softmax训练的深度特征,会把整个超空间或者超球,按照分类个数进行划分,保证类别是可分的,这一点对多分类任务如MNIST和ImageNet非常合适,因为测试类别必定在训练类别中。
  2. 但Softmax并不要求类内紧凑和类间分离,这一点非常不适合人脸识别任务,因为训练集的1W人数,相对测试集整个世界70亿人类来说,非常微不足道,而我们不可能拿到所有人的训练样本,更过分的是,一般我们还要求训练集和测试集不重叠。
  3. 所以需要改造Softmax,除了保证可分性外,还要做到特征向量类内尽可能紧凑,类间尽可能分离。

  1. 一文带你了解人脸识别算法演化史! ↩︎

  2. 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. ↩︎

  3. Florian Schroff, Dmitry Kalenichenko, James Philbin. FaceNet: A unified embedding for face recognition and clustering. 2015, computer vision and pattern recognition. ↩︎

  4. Yi Sun, Xiaogang Wang, Xiaoou Tang. DeepID: Deep Learning for Face Recognition. 2014, computer vision and pattern recognition. ↩︎

  5. Yi Sun, Yuheng Chen, Xiaogang Wang, Xiaoou Tang. Deep Learning Face Representation by Joint Identification-Verification. 2014, neural information processing systems. ↩︎

  6. Yi Sun, Ding Liang, Xiaogang Wang, Xiaoou Tang. DeepID3: Face Recognition with Very Deep Neural Networks. 2015, Computer Vision and Pattern Recognition. ↩︎

  7. Yandong Wen, Kaipeng Zhang, Zhifeng Li, Yu Qiao. A Discriminative Feature Learning Approach for Deep Face Recognition. 2016, european conference on computer vision. ↩︎

  8. W. Liu, Y. Wen, Z. Yu, and M. Yang. Large-margin softmax loss for convolutional neural networks. In ICML, 2016. 2, 3,7, 8 ↩︎

  9. 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 ↩︎

  10. Ranjan, Rajeev, Carlos D. Castillo, and Rama Chellappa. “L2-constrained Softmax Loss for Discriminative Face Verification.” arXiv preprint arXiv:1703.09507 (2017).v ↩︎

  11. 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 ↩︎

  12. Deng J, Guo J, Zafeiriou S. ArcFace: Additive Angular Margin Loss for Deep Face Recognition[J]. arXiv preprint arXiv:1801.07698, 2018. ↩︎

你可能感兴趣的:(人脸识别)