人脸识别问题宏观上分为两类:1. 人脸验证(又叫人脸比对)2. 人脸识别。
人脸验证做的是 1 比 1 的比对,即判断两张图片里的人是否为同一人。最常见的应用场景便是人脸解锁,终端设备(如手机)只需将用户事先注册的照片与临场采集的照片做对比,判断是否为同一人,即可完成身份验证。比如 FaceID 人脸解锁,iPhone 事先存了一张用户的照片(需要用户注册),这张照片变成了转换成了一连串特征数值(即特征空间里的一个点),用户解锁时,手机只需要对比当前采集到的脸和事先注册的脸在特征空间里的几何距离,如果距离足够近,则判断为同一人,如果距离不够近,则解锁失败。距离阈值的设定,则是算法工程师通过大量实验得到的。
人脸识别做的是 1 比 N 的比对,即判断系统当前见到的人,为事先见过的众多人中的哪一个。比如疑犯追踪,小区门禁,会场签到,以及新零售概念里的客户识别。同样考虑一个场景,人脸考勤。公司 X 有员工 A,B,C,公司会要求三名员工在入职的时候各提供一张个人照片用于注册在公司系统里,静静地躺在特征空间中。第二天早上员工 A 上班打卡时,将脸对准考勤机器,系统会把当前员工 A 的脸放到特征空间里,与之前特征空间里注册好的脸一一对比,发现注册的脸中距离当前采集到的脸最近的特征脸是员工 A,打卡完毕。
这些应用场景的共同特点是:人脸识别系统都事先存储了大量的不同人脸和身份信息,系统运行时需要将见到的人脸与之前存储的大量人脸做比对,找出匹配的人脸。
知道了人脸识别的基本原理,便能看清它的技术局限。下图展示了一些容易识别失败的案例:
[图片及描述来源:如何走近深度学习人脸识别?你需要这篇超长综述 | 附开源代码|机器之心]
[描述来源:人脸识别的简要介绍(附实例、Python代码)|机器之心]
在光照较差,遮挡,形变(大笑),侧脸等诸多条件下,算法很难提取出与“标准脸”相似的特征,异常脸在特征空间里落到错误的位置,导致识别和验证失败。
早期流行的识别算法包括使用特征脸的主成分分析(principal component analysis ),线性判别分析( linear discriminant analysis),使用Fisherface算法的弹性束图匹配(elastic bunch graph matching),隐马尔可夫模型( hidden Markov model),使用张量表示的多线性子空间学习(multilinear subspace learning)以及受神经元启发的动态链接匹配(dynamic link matching)。
随着深度学习的流行,深度神经网络又一次被用于人脸识别,如DeepID,FaceNet等。
[描述来源:维基百科]
发展历史
=======描述=======
自动人脸识别的先驱包括Woody Bledsoe,Helen Chan Wolf和Charles Bisson。
在1964年和1965年期间,Bledsoe与Helen Chan和Charles Bisson一起致力于使用计算机识别人脸。但由于这笔资金是由一家不具备大量宣传力的无名情报机构提供的,因此很少有工作发表。根据现有的参考文献,Bledsoe的初始方法涉及手工确定脸部各种标志,如眼睛中心,嘴巴等,并通过计算机数学旋转,以补偿姿势变化。标志之间的距离也是自动计算的,并将各种标志在图像之间进行比较以确定图像身份。
1987年,L. Sirovich and M. Kirby提出了eigenface,他们认为任何面部图像都可以通过每个面部的一小部分权重和标准面部图像(本征图)近似重建。 通过将面部图像投影到本征图上可以获得描述每个面部的权重。1991年,Turk M和Pentland A.在实际应用中使用了eigenface,大大推动了这项技术的流行。
在此期间,M. Lades等人于1993年提出了使用动态链接匹配进行人脸识别的想法,可以看作是神经网络的一种扩展。1994年,由于此前学者在连续密度隐马尔可夫模型(HMM)上的工作表明,随机建模可以成功地用于编码特征信息。 F. Samaria and A.C. Harter提出了一组实验结果,分析了各种HMM参数。
1997年,S. Lawrence等人提出了一种用于人脸识别的混合神经网络。该系统结合了局部图像采样,自组织映射(SOM)神经网络和卷积神经网络。 SOM将图像样本量化为拓扑空间,其中原始空间中的附近的输入也在输出空间附近,从而为图像样本中的微小变化提供降维和不变性,并且卷积神经网络提供平移,旋转,缩放和变形的部分不变性。卷积网络在分层的层集中连续提取更大的特征。他们使用Karhunen-Loeve变换代替SOM呈现结果,并使用多层感知器(MLP)代替卷积网络进行比较。
使用面部幻觉可以增强面部的低分辨率图像。
SVM也是人脸识别领域流行的算法之一,2001年,B. Heisele等人在他们的文章中首先定位面部特征,提取它们并将它们组合成单个特征向量,该向量由支持向量机(SVM)分类。 两个全局系统通过对由整个面部图像的灰度值组成的单个特征向量进行分类来识别面部。 在第一个全局系统中,他们为数据库中的每个人训练了一个SVM分类器。 第二个系统由一组特定于视点的SVM分类器组成,在训练期间的学习聚类算法。
2014年,Sun, Y等人提出了DeepID2, 是人脸领域非常有影响力的工作,也掀起了在人脸领域引进 Metric Learning 的浪潮。在此基础上,2015年Google 提出了FaceNet。他们抛弃了分类层即 Classification Loss,将 Contrastive Loss 改进为 Triplet Loss。同年,Parkhi, O. M.等人为了加速 Triplet Loss 的训练,对FaceNet进行了一系列修改,提出了Deep Face Recognition。
=======主要事件=======
年份 | 事件 | 相关论文/Reference |
1987 | L. Sirovich and M. Kirby提出了eigenface | Sirovich,L.; Kirby, M. (1987). Low-Dimensional procedure for the characterisation of human faces. J. Optical Soc. of Am. 4: 519-524. |
1991 | Turk M和Pentland A.在实际应用中使用了eigenface | Turk, M.; Pentland, A. (1991). Eigenfaces for recognition. J. Cognitive Neuroscience. 3: 71-86. |
1993 | M. Lades等人提出了使用动态链接匹配进行人脸识别的想法 | Lades, M.; Vorbruggen, J. C.; Buhmann, J.; Lange, J.; Von Der Malsburg, C.; Wurtz, R. P.; Konen, M. (1993). Distortion Invariant object recognition in the dynamic link architecture. IEEE Trans. Computers. 42: 300-311. |
1994 | F. Samaria and A.C. Harter提出了一组实验结果,分析了各种HMM参数 | Samaria, F.; Harter, A. C. (1994). Parameterisation of a stochastic model for human face identification. Proc. Second IEEE Workshop Applications of Computer Vision. |
1997 | S. Lawrence等人提出了一种用于人脸识别的混合神经网络 | Lawrence, S.; Giles, C. L.; Tsoi, A. C.; Back, A. D. (1997). Face recognition: A convolutional neural-network approach. IEEE Trans. Neural Networks. 8: 98-113. |
2001 | B. Heisele等人在他们的文章中使用SVM | Heisele, B.; Ho, P.; Poggio, T. (2001). Face recognition with support vector machines: Global versus component-based approach. International Conference on Computer Vision (ICCV'01). |
2014 | DeepID2基于深度学习的人脸识别领域是最先应用 Metric Learning 思想的模型之一 | Sun, Y.; Wang, X.; Tang, X. (2014). Deep learning face representation by joint identification-verification. CoRR. |
2015 | Google 提出了FaceNet,同样是人脸识别领域的分水岭性工作 | Schroff, F.; Kalenichenko, D.; Philbin, J. (2015). FaceNet: A Unified Embedding for Face Recognition and Clustering. arXiv:1503.03832v3 |
2015 | Parkhi, O. M.等人提出了Deep Face Recognition | Parkhi, O. M.; Vedaldi, A. and Zisserman, A. (2015). Deep face recognition. BMVC. |
发展分析
=======瓶颈=======
上文已经提到,在光照较差,遮挡,形变(大笑),侧脸等诸多条件下,算法很难准确识别和验证,即目前的算法表现还不够稳健。
=======未来发展方向=======
面对这种局限,通常采取三种应对措施,使人脸识别系统能正常运作:
1. 工程角度:研发质量模型,对检测到人脸质量进行评价,质量较差则不识别/检验。
2. 应用角度:施加场景限制,比如刷脸解锁,人脸闸机,会场签到时,都要求用户在良好的光照条件下正对摄像头,以避免采集到质量差的图片。
3. 算法角度:提升人脸识别模型性能,在训练数据里添加更多复杂场景和质量的照片,以增强模型的抗干扰能力。