邓茜文,冯子亮,邱晨鹏
(四川大学计算机学院,成都 610065)
(*通信作者电子邮箱xiwen_deng_cc@163.com)
目前,人脸识别技术已日趋成熟并得到广泛的应用[1],但在无人值守的场合,人脸识别系统很容易受到人脸模型、人脸照片以及人皮面具等方式的攻击,因此需要活体人脸检测[2]。基于运动信息的检测方法是一种常用的活体人脸检测方法,其原理是让用户完成转头、眨眼等动作,通过对这些动作的检测来实现活体人脸检测;但是该类方法耗时较长,且需要用户配合,同时攻击者也可以通过预设动作进行攻击。
基于人脸三维信息的检测方法是一种新型的活体人脸检测方法[3-4],通过计算人脸整体的三维信息来防止诸如人脸照片的攻击;但不仅需要预先建模,识别时也需要重建三维人脸模型,实现时存在较多困难。
基于主动式近红外图像的活体人脸检测方法[5-6],充分利用活体人脸的近红外纹理特征,基本不受外界光照影响,可实现对电子屏或视频人脸、普通人脸照片和人脸模型的检测,但面对高质量的经特殊处理的人脸照片也会由于纹理差异减小而导致检测失败。
针对活体人脸检测技术存在的问题,本文提出了一种在无需用户配合的场景下,采用近红外与可见光双目视觉技术的活体人脸检测方法。其中,利用近红外成像特性可以防止电子屏、视频以及光滑照片人脸的攻击;利用双目视觉获取的深度信息进行特征点三维重建,利用检测到的深度差异防止高质量伪造图的攻击。相较于单纯采用红外特征和建立全脸三维模型的方法,本文方法具有简单、高效、鲁棒性好的特点。
基于可见光的普通双目技术发展已较为成熟,而增加了红外信息后进一步拓展了其在工业、军事、空管[7]等领域的应用前景。近些年可见光与近红外结合的双目视觉技术取得了快速发展。可见光成像包含丰富的颜色形状等信息,能准确测量和监控目标,但是在光线较弱或者烟雾等环境下,红外波段的成像优势更突出[8]。将不同波段的互补性应用于双目视觉可对不同攻击进行抵御,也能实现不同环境下的三维重构。
与普通双目视觉相比,近红外与可见光双目视觉的异源匹配误差可能较大,也是难点所在。本文提出一种根据人脸特征点的位置信息进行异源匹配和校正的方法,虽然较粗略但简单有效地减小了误差。文献[6]的活体人脸检测方法选用普通双目视觉,算法与本文类似,也是利用人脸特征点的深度信息进行判断;但是文献[6]只选取了鼻尖点和鼻根点的深度距离判别真实人脸与伪造人脸照片。本文在此基础上改进为选取人脸68 个特征点进行三维点云重建的方法,并且提出利用人脸特征点的深度信息变化强弱和各特征点的三维坐标之间的相互关系这两种提取特征方案,分别对真实和伪造人脸进行判别,提高了检测的准确度,也增强了算法的鲁棒性。
本文使用的双目装置由一个近红外摄像头、一个可见光摄像头以及一个主动近红外发光模组组成。传统的人脸识别技术大多针对可见光人脸图像,可见光图像是由物体反射自然光所形成的,对自然光照变化比较敏感,而红外光图像则较少受到自然光照变化的影响,也可用于人脸识别[9]。该方法因为红外光对表面光滑的物体如镜面、油纸面的反射微弱,近红外图像几无信息,无法检测出人脸,可防止电子屏及视频中的人脸的伪造攻击。
人脸特征点检测算法在人脸检测中具有良好的应用效果,改进算法包括基于回归分析的人脸特征点检测方法[10]、基于分类搜索窗口的人脸特征点检测方法[11]等。基于回归分析方法中,Valstar等[12]采用支持向量机,对划分后的图像人脸轮廓以及五官的特征点位置进行预测;Cao 等[13]使用人脸的整个区域,进行级联回归预测。基于分类搜索窗口法方法中,将人脸区域划分为不同的区域,输入到分类器中进行训练,得到相应的人脸区域的特征点模型,这些分类器包括Adaboost[11]、支持向量机(Support Vector Machine,SVM)[14]等。其他研究也使用基于神经网络的检测方法,如文献[15]用级联的卷积神经网络对人脸图像的特征点进行预测。
本文的重点是活体人脸判断,因此直接采用DLIB 库进行人脸特征点检测,能够实时且准确地根据人脸姿态和表情的变化检测到人脸及其特征点。考虑到本文的活体人脸检测是个典型的二分类问题,而SVM 对此有较为突出的优点,它没有局部最优,对于非线性、高维度、少样本的情况有着较好的效果[16],因此选择SVM作为活体人脸检测分类器。
本文方法的总体思路是:通过对近红外和可见光人脸图像进行特征点检测和匹配,计算特征点的深度信息,进行特征点三维重建,并基于深度信息构造相应的特征,用SVM 进行分类,其中特征点的匹配和校正以及特征提取最为关键。
具体实现过程为:首先,对近红外和可见光相机进行标定,获取相机的参数;然后,同步采集左右相机的图像,通过立体校正使得两幅图像共面和行对准;其次,对两幅图像进行人脸特征点检测、校正和匹配,通过双目视觉计算获得人脸特征点的深度信息并实现点云重建;最后,利用深度信息中的方差和距离进行特征提取并建立深度样本库,使用SVM 方法进行样本分类,进而实现对活体人脸的判断。
本文采用DLIB 库对近红外图像和可见光图像进行人脸特征点检测。图1 为特征点检测结果,图中分别展示了DLIB检测到的两幅人脸图像的68 个特征点,其中(a)为双目装置中左边的红外相机的成像,(b)为右边的可见光相机的成像。
图1 人脸特征点检测结果Fig.1 Detection results of facial feature points
其中,近红外图像人脸检测时可以防止电子屏人脸和视频人脸的攻击。图2 展示了同一时刻下电子屏幕在双目装置中所呈现的近红外图像与可见光图像。如图2 所示,电子屏幕在近红外摄像机下几乎无法成像,从而无法检测到人脸。因此可知,由于电子设备和表面光滑的照片在近红外相机中成像效果差,若没有检测到近红外图像的人脸特征点,则可直接判定为非活体人脸,所以本方法能够在人脸检测开始时就直接排除电子屏或视频人脸,从而较容易地抵御此类攻击。
图2 电子屏幕在双目装置下的视觉效果对比Fig.2 Comparison of visual effects of electronic screen in binocular device
经立体校正后,近红外与可见光图像已实现共面和行对准,可以按照双目视觉逐点匹配方法进行匹配计算,但是直接匹配会出现两个问题:一是因为异源图像成像原理差异[17]造成匹配不正确而效果差;二是耗时过长。
考虑到活体检测中最重要的是检测出人脸的立体特征,而人脸特征点作为通常人脸检测的依据,如果能直接得到其深度方向的信息,则在活体检测中比用全脸的深度方便很多。因此本文采用了一种简单的对特征点进行匹配并校正的方法,来获取特征点的深度信息。
观察近红外和可见光图像的特征点信息发现,在68 个特征点中,人脸中部的点在两幅图像中是可以对应的,而脸颊部分的点则可能不是一一对应的。为了便于观察,将两幅图像的人脸轮廓点重叠。以近红外图像为基准,并以两图像鼻尖点对准重合的方式,将可见光图像的特征点标记到近红外图像中,结果如图3,其中形状为圆形的点是近红外人脸图像的特征点,形状为三角形的点是可见光人脸图像的特征点。可以看出鼻尖点重合后,人脸的嘴巴、鼻子、眼睛、眉毛部分的轮廓特征点基本重合,而脸颊特征点位置存在一定差异。
图3 人脸轮廓特征点叠加图(鼻尖点重合)Fig.3 Figure of overlapping feature points of face contour(with nasal tip points coincided)
这种差异一方面是双目视觉本身的差异造成的,另一方面是红外图像和可见光图像特征点检测过程造成的。其中,非脸颊部分的特征点遮挡少,可以简单认为是立体匹配的点;而脸颊部分的特征点,因为遮挡的原因,不是一个物理点在两个不同位置相机成像得到的,不是立体匹配的,必须进行校正后才能视为匹配。从图3 可看出,人脸两侧的特征点中,可见光图像中的点(图3中0 到8 号点)在左侧偏外侧,而近红外图像中的点(图3中9到16号点)在右侧也偏外侧。
本文的校正策略是:以脸颊内侧的点为准,将向外侧偏移的点向内靠拢。具体做法为:将图3中左侧编号0 到8 的三角形特征点向内侧移动,右侧9到16的圆形特征点向内侧移动,偏移量为脸颊内侧点和外侧点(0到16号)平均距离。
图4 展示了校正的结果,校正之后两幅图像的68 个特征点可视为立体匹配。注意这种方式也是比较粗略的方式,目的是为了得到人脸特征点的近似深度。
图4 图3校正后的图Fig.4 Corrected image from Fig.3
在对人脸轮廓特征点匹配的基础上,根据双目视觉三维测量原理得到每一个人脸轮廓特征点的三维深度信息和坐标信息。通过对左右摄像机分别进行单目标定,左右摄像机立体标定,以及立体校正,使得左右摄像机平面共面并且行对准[18],校正后的双目立体坐标系如图5所示。
在图5中,Ol与Or表示左右摄像机投影中心,Ol与Or之间的连线T为基线距离,P表示物体点,f表示焦距,xl与xr表示物体点P在左右摄像机图像平面的投影点,即左图像与右图像中同一个特征点,两者互为匹配点,分别表示左右摄像机图像平面的光心,Z表示物体点P到基线T的距离。从图5中,可以直接得到物体点P在左右摄像机的视差:
图5 双目立体坐标系Fig.5 Binocular stereo coordinate system
图6 直观展示了两摄像机平面的关系,以左摄像机坐标系为基准,右摄像机相当于左摄像机平移一个基线距离T。空间物体点P在左图像投影点的坐标为Pleft(Xleft,Yleft),在右图像投影点的坐标为Pright(Xright,Yright)。经过立体校正后,可得到空间物体点P在左右图像中的投影点的Y坐标相同,再由几何中的三角关系可得:
图6 双目成像原理图Fig.6 Schematic diagram of binocular imaging principle
式(1)表示了空间物体点P在左右摄像机图像中的视差,根据此视差值以及式(2),可获得以左摄像机为基准的坐标系下真实场景中物体点P的三维坐标:
获取人脸特征点三维信息后,需要构造相应的特征来实现对真实人脸与伪造人脸的检测。本文的做法是从人脸特征点三维深度信息变化强弱出发,以鼻尖点为参照,分别提取深度值的方差以及空间特征点之间的距离值组成相应的特征向量进行SVM分类。
2.4.1 方差特征提取方案
考虑到真实人脸图像特征点在三维结构上的信息要明显好于以弯曲和扭曲照片的方式模仿真实人脸,本文考虑以获得的人脸68 个特征点的深度信息作为初始的数据,根据人脸的整体分布以及五官的关系计算若干个特征点深度值的方差,并组成特征向量进行SVM分类。
方差是表现数据变化强弱的指标,针对一组一维数据,当数据之间大小变化剧烈,那么这组数据的方差就会相对较大,而当数据之间大小基本相同,那么这组数据的方差就会相对较小。针对本文的人脸68 个特征点的深度值构成的一维数据,由于真实人脸的深度值变化相较于伪造人脸的深度变化强,则前者的深度值的方差要明显大于后者。
方差计算公式为:
式中:zi表示人脸每个特征点的深度值;M表示相应的特征点深度值的均值;s2表示相应的特征点深度值的方差。
图7展示了在二维平面中人脸68个特征点的相对位置关系,考虑到弯曲照片的攻击方式,本文将人脸的68 个特征点划分为4 个部分:第1 部分为大矩形框内的整个人脸,即全部68个特征点;第2部分为图中小的矩形框内的特征点,即为鼻子、嘴巴、两只眼睛的特征点组合;第3 部分为图中上方的椭圆内的特征点;第4 部分为图中下方的椭圆内的特征点。这里用d1、d2、d3、d4依次表示上述的四个部分的特征点对应的深度值构成的一维数据,分别计算这四部分的一维数据的方差并分别记为s1、s2、s3、s4,本文用这四个方差组成四维向量,采用SVM分类器对其进行分类。
图7 按布局划分的(68个)人脸特征点示意图Fig.7 Figure of(68)facial feature points divided by layout
2.4.2 距离特征提取方案
另一方面,真实人脸的五官分布都存在一定的关系,尽管弯曲人脸照片的特征点的三维点云有一定的三维结构,但是与真实人脸还是存在很大的差异。为了更容易辨别真实人脸与照片人脸,考虑以深度差异较大的人脸特征点为参照。由于鼻子是人脸区域中最突出的地方,于是选取鼻尖上的特征点作为参照点,从左右眼睛区域、左右眉毛区域、鼻梁区域(除去鼻尖的点)、左右两侧脸区域、嘴巴区域各选取特征点,分别计算点云中鼻尖上的特征点到其他的特征点的距离。
三维坐标系中点与点之间距离计算公式为:
图8 展示了本文在人脸的不同区域选取的人脸特征点,共计13 个特征点(不包含鼻尖位置的特征点),依次计算鼻尖特征点(图8中31 显示的位置)到其他13 个特征点在重建的点云中的距离记为d1,d2,…,d13,由这13 个距离值组成13 维特征向量,采用SVM分类器对其进行分类。
图8 按区域划分的(68个)人脸特征点示意图Fig.8 Figure of(68)facial feature points divided by region
实验数据为同一时刻拍摄的近红外人脸图像与可见光人脸图像,由于没有相应的公开数据集,本文采用自建的数据集,为了保证实验数据的可靠性、广泛性等,在进行数据集建设时,注重从多角度去构建。对于真实人脸图像,考虑人脸的姿态、表情、是否佩戴眼镜以及相对双目装置的距离等;对于伪造人脸图像,不仅要考虑到用平面的照片图像,也要考虑攻击者用弯曲照片的方式去仿造真实人脸的三维结构。数据库构建源于20 个真实对象,采集每人不同姿态、表情、戴眼镜、不戴眼镜的同一时刻拍摄的近红外与可见光图像100 对,相对应的20 个真实对象的伪造人脸照片,并采集不同方向和弯曲程度的伪造人脸图像100对,共计4 000对图像。
图9 展示了部分的真实人脸图像数据,其中包含了配戴眼镜人脸图像、未佩戴眼镜的左右偏头、仰头、闭眼图像以及这些情况的组合图像。图10 展示了部分的伪造人脸照片图像,采用弯曲照片的方式模拟真实的人脸的三维结构。照片弯曲的方式分为竖直方向与水平方向,并且在弯曲的程度上,对二维平面照片进行逐渐的弯曲,并采集弯曲过程中不同弯曲程度的每帧图像,用来保证数据的多样性,最终组成伪造人脸攻击数据库。
图9 部分真实人脸图像Fig.9 Part real face images
图10 部分伪造人脸图像Fig.10 Part fake face images
本文设计了两组实验:第一组为人脸特征点三维点云重建实验;第二组为人脸特征点深度特征和分类实验。
人脸特征点三维点云重建实验,通过观察点云重建的视觉效果和特点,从定性分析的角度判别真伪人脸。在实验过程中,不仅仅考虑真实人脸与伪造照片的重建结果,也考虑攻击者将人脸照片进行不同方向以及不同程度弯曲来模仿真实人脸的三维结构。
人脸特征点深度特征和分类实验,按照2.4 节中提出的对人脸特征点三维点云的两种评价方案,对提取的深度特征分别进行SVM 训练分类,从定量分析的角度判别真伪人脸,根据实验数据来验证该方法的有效性。定量分析时,采用准确率(Accuracy,Acc),错误接受率(False Acceptance Rate,FAR)即误识率,错误拒绝率(False Rejection Rate,FRR)即拒识率,作为评价本文方法的评价指标。
3.3.1 三维特征点点云重建
近红外图像(左)与可见光图像(右)的人脸68 个特征点的三维重建结果如下所示。其中图11 为真实人脸图像及其特征点三维点云重建结果,图12 为人脸照片及其特征点三维点云重建结果。
图11 真实人脸图像及其三维点云重建结果Fig.11 Real face images and their 3D point cloud reconstruction results
图12 伪造人脸(照片)及其三维点云重建结果Fig.12 Fake face images(photos)and their 3D point cloud reconstruction results
图11(c)~(f)和图12(c)~(f)分别从不同角度展示了重建的真实人脸与照片人脸的三维结构,即人脸三维点云的垂直侧面、30°侧面、60°侧面以及正面。从图11(c)~(f)中可以看出真实人脸轮廓特征点在垂直侧面具有三维深度信息,而图12(c)~(f)表现出照片人脸轮廓特征点的重建结果接近于平面。
由于人脸照片攻击形式的多样性,在真实情况中不仅需要考虑二维平面的人脸照片,还需要考虑攻击者用弯曲照片的方式进行攻击,因为弯曲的人脸照片也能够重建出具有三维深度信息的结果。弯曲的方式一般分为两种:一种是竖直弯曲,另一种是水平弯曲,具体的效果如图13所示。
本文对不同弯曲情况的照片进行了人脸68 个轮廓点的三维结构重建,结果如图14所示。
将图14 与图11(c)~(f)比较发现:真实人脸的三维点云与弯曲的照片人脸的三维点云之间存在较大的差别。虽然弯曲照片的人脸的三维点云存在一定的三维结构,但是只是存在于人脸的局部区域,这些区域集中在人脸周围的轮廓中,这些结果的深度变化与真实人脸的点云的深度变化相比较弱,并且对于鼻子区域来说,由于其位置的特殊性,弯曲照片人脸特征点的三维点云在此区域并不会有明显的深度信息变化。
通过观察分析特征点三维点云重建实验的视觉效果及其特点,在一定程度上可以辨别真实人脸和伪造人脸。但是从重建的结果中可以发现,照片人脸的三维点云并不是完全没有三维结构,尤其是具有一定弯曲程度的照片,直接通过点云重建结果来分辨的话会造成误判且判断结果具有主观性。所以还需要对三维点云进行客观定量的分析,通过提取的深度特征对真实人脸和伪造人脸加以判别。
图13 伪造人脸图像(照片弯曲)Fig.13 Fake face images(curved photo)
图14 伪造人脸图像(照片弯曲)三维点云重建结果Fig.14 3D point cloud reconstruction results of fake face images(curved photo)
3.3.2 三维点云深度特征提取和分类
考虑到实验数据规模有限,而SVM 对于小样本数据有较好的效果,并且有较快的计算速度,因此选择其作为本实验人脸特征分类器。在人脸图像数据库方面,本文采集了20 个对象的100对真实人脸图像,以及相应对象的100对伪造照片图像,在实现人脸特征点的三维点云重建后建立点云样本库。选取15 个对象的三维点云作为训练样本集,剩余的5 个对象的三维点云作为测试样本集。为了保证结果的精确性,实验根据人脸照片是否弯曲对照片样本作划分,并分别进行训练与测试。
在SVM 分类时需要选择核函数,SVM 提供了多种核函数,不同的核函数具有不同的预测特性。在使用交叉验证的方法去测试不同的核函数对初始数据的预测结果后,本文选用速度较快且性能好的高斯核函数,并将核宽设置为1。使用SVM 分类时,首先获取人脸特征点三维数据,然后用方差和距离信息两种方案进行三维特征提取,并建立三维特征样本库,其中包括方差特征构造的4 维特征向量和距离特征构成的13 维特征向量(详见2.4 节三维特征提取方案),最后将深度特征进行训练并实现分类,总体流程如图15所示。
1)方差特征实验。
按照本文2.4.1节中的三维特征提取方案将人脸68个特征点划分为4 个区域,计算相应的区域的特征点的深度信息的方差组成4维特征向量,采用SVM 进行训练分类,用测试样本进行测试。
图15 分类流程Fig.15 Flowchart of classification
实验结果如表1 所示,从表1中可以看出,在使用测试样本进行测试时,本文将弯曲照片与平整照片的样本分别进行了测试。对于平整照片的样本集,此方法完全能够抵御伪造人脸照片的攻击。而对于弯曲照片样本集,会出现真实人脸与伪造人脸相互误判的情况。对比样本集发现,对于真实人脸,当距离装置较远且面部侧向程度较大时,导致相应的人脸特征点的三维点云重建结果误差较大。对于伪造照片人脸,在图像能够检测出人脸的基础上,照片的弯曲程度过大,使得人脸的特征点检测出现较大的误差,进而导致重建出的人脸特征点的三维点云的深度信息变化剧烈而被误检。
表1 方差特征检测实验结果 单位:%Tab.1 Experimental results of variance feature detection unit:%
2)距离特征实验。
按照本文2.4.2 节中的三维特征提取方案选取图8中椭圆标记的14 个特征点,以鼻尖点为参照,在三维坐标系下,计算鼻尖点距离其他13个特征点的距离,以此组成13个距离特征向量,采用SVM进行训练分类,用测试样本进行测试。
同样,本文根据是否弯曲将样本中照片进行了分类并分别进行了测试。实验结果如表2 所示:对于平整照片的样本集,此方法完全能够抵御伪造人脸照片的攻击;对于弯曲照片的样本集,则会出现两者相互误判的情况。与方差特征实验相比,此方案的准确率要略低,其原因在于:此方案是以鼻尖的特征点为参照计算鼻尖特征点与其他特征点的三维距离,因为对鼻尖特征点的检测的准确性要求较高,而当人脸的姿态出现较大范围的变化时,人脸鼻尖的特征点检测的精确程度会有所下降,从而导致误检情况的出现。虽然此方案的精确度低于方差特征提取方案,但从整体的精确度来来看,依然能够抵御绝大部分的伪造人脸攻击形式。
表2 点云距离特征检测实验结果 单位:%Tab.2 Experimental results of point cloud distance feature detection unit:%
文献[6]采用两个可见光摄像机组成的双目系统,同样根据人脸特征点的深度信息进行活体人脸判断,但是其方法只利用了鼻尖和鼻根两个点,而本文在此基础上改为利用人脸68 个特征点的深度信息进行判断。本文方法中的方差特征提取方案的实验结果与文献[6]方法的实验结果的比较如表3所示。从表3中可以看出,在同样使用单帧的近红外图像与可见光图像情况下,本文采用深度值方差的方法准确率更高,且准确率基本达到其采用连续的10 帧图像程度。分析其原因在于:文献[6]采用单帧的图像进行鼻尖点与鼻根点的距离差值计算时,对鼻尖点的准确性要求很高,当真实人脸的面部侧向程度比较大时,鼻尖点的与鼻根点的检测就会出现较大的误差,从而导致两点深度的距离值误差较大,又由于其方法仅仅依赖人脸特征点中的鼻尖与鼻根两个点,局限性较大,致使结果的准确性不够高,而本文方法以鼻尖点为参照,利用了人脸68 个特征点,并从人脸的整体性进行考虑,因此本文方法的准确性更高,且具有较好的鲁棒性。
表3 不同方法的准确率对比 单位:%Tab.3 Accuracy comparison of different methods unit:%
为了验证算法的有效性,本文利用所提算法设计了活体人脸检测系统,在实验室的真实场景下对活体检测系统进行测试,测试过程中,要求每个对象进行偏头、仰头、低头以及表情变化等动作;对于伪造人脸照片,则进行平放、不同方向和不同程度的弯曲。实验的总体结果表明,本系统能够有效地抵御伪造人脸对活体检测系统的攻击。
考虑到人脸在红外条件下的成像特性以及双目视觉系统的优点,提出一种基于近红外和可见光双目系统的活体人脸检测方法,旨在解决无需用户配合场景下的活体人脸检测易受光照影响和伪造攻击的问题。用本文所提方法对近红外和可见光人脸图像进行异源匹配,提取特征点的深度信息并进行点云重建,按本文提出的方差和距离两种深度特征方案对真伪人脸进行判别。实验结果表明本文方法的准确率较高,且相较于同样利用人脸特征点深度信息进行检测的对比算法,本文算法具有更好的鲁棒性和准确性。总的来说,本文所提方法能够实现对活体人脸检测和伪造攻击防御。进一步的研究方向是思考如何更好地融合近红外与可见光的特征,实现更好的异源匹配方法,并且利用深度学习的方法进行特征提取与分类,以及实现算法在智能监控上的应用。