3、图像识别
人脸识别技术经过科学家多年的研究和发展,已经形成了多种研究方向和更多种的研究方法,如果我们梳理一下,
主要包括基于几何特征的方法、基于模板的方法、基于模型的方法以及其他方法。基于几何特征的方法是比较早期、传统的方法了,它主要是研究人脸眼睛、鼻子等器官的形状和结构关系的几何描述,以此作为人脸识别的重要特征。
基于模板的方法基本思想是拿已有的模板和图像中同样大小的区域去比对,包括基于相关匹配的方法、特征脸方法、线性判别分析方法、神经网络方法等。
基于模型的方法的方向是对人脸的显著特征进行特征点定位,然后进行人脸的编码,再利用相应的模型进行处理实现人脸识别,例如隐马尔柯夫模型,主动形状模型和主动外观模型的方法等。
▲不同的人脸识别算法
在人脸识别领域,有一些比较经典的算法,例如特征脸法(Eigenface)、局部二值模式法、Fisherface等,不过IT之家在这里还是还是觉得与时俱进比较好,所以选择一个目前应用比较广泛且流行的方法作为示例,叫做OpenFace。当然,我们不做实际的测试,只是通过它来了解识别的原理。
OpenFace属于基于模型的方法,它是一个开源库,包含了landmark,head pose,Actionunions,eye gaze等功能,以及训练和检测所有源码的开源人脸框架。
在前面的步骤中,IT之家已经为大家介绍如何通过HOG的方法将图像中人脸的特征数据提取出来,也就是成功检测到了人脸。
这时又有一个问题,就是这个人脸的姿势好像不是那么“正”,同样一个人,如果她的姿势,面部的朝向不同,人类仍然能认出她来,而计算机可能就认不出了。
解决这个问题,有一个办法,就是检测人脸主要特征的特征点,然后根据这些特征点对人脸做对齐校准。这是Vahid Kazemi和Josephine Sullivan在2014年发明的方法,
他们给人脸的重要部分选取68个特征点(Landmarks),这68个点的位置是固定的,所以只需要对系统进行一些训练,就能在任何脸部找到这68个点。
图片来源:OpenFace API阅读文档(点此前往)
有了这68个点,就可以对人脸进行校正了,主要是通过仿射变换将原来比较歪的脸摆正,尽量消除误差。这里的仿射变换主要还是进行一些旋转、放大缩小或轻微的变形,而不是夸张的扭曲,那样就不能看了。
▲过程大约是这样,原来的脸被进行了一定程度的校正(图片来源:OpenFace github说明页面)
这样我们把原始的人脸图像以及HOG的特征向量输入,能够得到一张姿势正确的只含有人脸的图像。
注意,到这一步我们还不能直接拿这张人脸图像去进行比对,因为工作量太大,我们要做的是继续提取特征。