人脸识别简史与近期进展
源地址:http://mp.weixin.qq.com/s?__biz=MzI1NTE4NTUwOQ==&mid=402656652&idx=1&sn=a254c2c9c8493c6e845d19dbbfea93de&scene=23&srcid=0330GL7YcWFqeN5WEuUCViXn#rd
自动人脸识别的经典流程分为三个步骤:人脸检测、面部特征点定位(又称Face Alignment人脸对齐)、特征提取与分类器设计。一般而言,狭义的人脸识别指的是"特征提取+分类器"两部分的算法研究。
在深度学习出现以前,人脸识别方法一般分为高维人工特征提取(例如:LBP, Gabor等)和降维两个步骤,代表性的降维方法有PCA, LDA等子空间学习方法和LPP等流行学习方法。在深度学习方法流行之后,代表性方法为从原始的图像空间直接学习判别性的人脸表示。
一般而言,人脸识别的研究历史可以分为三个阶段。在第一阶段(1950s-1980s),人脸识别被当作一个一般性的模式识别问题,主流技术基于人脸的几何结构特征。在第二阶段(1990s)人脸识别迅速发展,出现了很多经典的方法,例如Eigen Face, Fisher Face和弹性图匹配,此时主流的技术路线为人脸表观建模。在第三阶段(1990s末期到现在),人脸识别的研究不断深入,研究者开始关注面向真实条件的人脸识别问题,主要包括以下四个方面的研究:1)提出不同的人脸空间模型,包括以线性判别分析为代表的线性建模方法,以Kernel方法为代表的非线性建模方法和基于3D信息的3D人脸识别方法。2)深入分析和研究影响人脸识别的因素,包括光照不变人脸识别、姿态不变人脸识别和表情不变人脸识别等。3)利用新的特征表示,包括局部描述子(Gabor Face, LBP Face等)和深度学习方法。4)利用新的数据源,例如基于视频的人脸识别和基于素描、近红外图像的人脸识别。
2007年以来,LFW数据库成为事实上的真实条件下的人脸识别问题的测试基准。LFW数据集包括来源于因特网的5,749人的13,233张人脸图像,其中有1680人有两张或以上的图像。LFW的标准测试协议包括6000对人脸的十折确认任务,每折包括300对正例和300对反例,采用十折平均精度作为性能评价指标。
自从LFW发布以来,性能被不断刷新。2013年之前,主要技术路线为人造或基于学习的局部描述子+测度学习。2014年之后,主要技术路线为深度学习。
2014年以来,深度学习+大数据(海量的有标注人脸数据)成为人脸识别领域的主流技术路线,其中两个重要的趋势为:1)网络变大变深(VGGFace16层,FaceNet22层)。2)数据量不断增大(DeepFace 400万,FaceNet2亿),大数据成为提升人脸识别性能的关键。
在前DL时代,以VIPL实验室三代半SDK为例,关键技术点包括1)分块人脸特征融合:Gabor特征+LPQ特征。 2)子空间学习进行特征降(PCA+LDA)。3)融合多尺度的人脸归一化模板。SDK3.5的相关技术在FRGC实验4上取得了0.1%错误接受率条件下96%的确认率,至今依然是FRGC数据集上最好结果。
需要指出的是,虽然深度学习强调特征学习,但学习特征并不是DL的专利。在前DL时代,利用浅层模型从图像中直接学习表示和基于人造描述子学习语义表示(例如学习中层属性表示的Attributes and Simile Classifier和学习高层语义表示的Tom-vs-Pete)的工作都见于相关文献。
2014年,Facebook发表于CVPR14的工作DeepFace将大数据(400万人脸数据)与深度卷积网络相结合,在LFW数据集上逼近了人类的识别精度。其中DeepFace还引入了一个Local Connected卷积结构,在每个空间位置学习单独的卷积核,缺点是会导致参数膨胀,这个结构后来并没有流行起来。
DeepID家族可以看作是DL时代人脸识别领域的一组代表性工作。最早的DeepID网络包括四个卷积层,采用softmax损失函数。DeepID2在DeepID网络的基础上,同时考虑了分类损失(identity
loss) 和确认损失(verification loss),
这两种损失在Caffe深度学习框架中分别可以采用softmaxwithloss层和contrastive
loss层来实现。DeepID2+网络则是在DeepID2的基础上,增加了每一层的辅助损失函数(类似Deep Supervised Network)。
Google发表于CVPR2015的工作FaceNet采用了22层的深层卷积网络和海量的人脸数据(800万人的2亿张图像)以及常用于图像检索任务的Triplet Loss损失函数。值得一提的是,由于人脸类别数达到800万类,如果使用softmax loss,输出层节点将达到800万个,需要至少32GB显存(假设上一个隐层节点1024个,采用单精度浮点数),而Triplet Loss则不需要额外占用显存。FaceNet在LFW数据集上十折平均精度达到99.63%,这也是迄今为止正式发表的论文中的最好结果,几乎宣告了LFW上从2008年到2015年长达8年之久的性能竞赛的结束。