发明内容
有鉴于此,本发明旨在提供一种人脸活体检测方法及***,不仅对姿态适应性强,安全性高,而且无需用户配合,速度快,用户体验好。
具体而言,所述人脸活体检测方法包括步骤:
S1、同时通过两个摄像头分别获取识别对象的两幅图像;
S2、采用人脸分类器定位出两幅图像中的人脸区域,获得分别与两幅图像对应的人脸图像;
S3、对两幅人脸图像进行特征点定位;
S4、对特征点定位后的人脸图像进行特征点快速立体匹配;
S5、计算两幅人脸图像在匹配特征点的视差,获取匹配特征点的深度信息值;
S6、根据多个匹配特征点的深度信息值,判断所述识别对象的人脸是否为活体。
优选的,在本发明实施例中,所述两个摄像头通过左右布置或上下布置组成双目立体视觉***。
优选的,在本发明实施例中,所述人脸分类器基于如下至少一种方式:肤色和几何特性、积分投影、模板匹配、线连通。
优选的,在本发明实施例中,所述特征点包括位于如下至少一个区域中的全部或部分关键点:人脸轮廓、眉毛、眼睛、鼻子和嘴巴。
优选的,在本发明实施例中,在步骤S3中,特征点的定位方式采用如下至少一种算法:深度学习相关算法、主动形状模型相关算法、主动外观模型相关算法以及级联形状回归相关算法。
优选的,在本发明实施例中,步骤S4具体为:以一个人脸图像中的特征点为参考特征点,通过绝对误差累计SAD方式在另一人脸图像对应特征点周围获取与该参考特征点对应的匹配特征点。
优选的,在本发明实施例中,所述参考特征点与所述匹配特征点的纵坐标相同;或者,当参考特征点与对应的匹配特征点的纵坐标不相同时,将所述匹配特征点的纵坐标强制等于与其对应的参考特征点的纵坐标,得到匹配点,并在匹配点周围各取两个像素点,将匹配点及各像素点作为匹配特征点的候选点,并分别计算以候选点为中心的误差累计值,选取误差累计值最小的候选点为匹配特征点。
优选的,在本发明实施例中,步骤S6采用如下方式的至少一种:支持向量机SVM算法、基于主成分分析PCA的特征提取算法、线性判别式分析LDA算法;或者,步骤S6包括:
S61、确定深度信息值最小的匹配特征点为最小匹配特征点,获取所述最小匹配特征点的深度信息值;
S62、分别将各匹配特征点的深度信息值减去所述最小匹配特征点的深度信息值,得到各匹配特征点的相对深度信息值;
S63、计算各匹配特征点的相对深度信息值的和或者平方和并作为比较值,当所述比较值小于预设阈值时判定所述识别对象为非活体,否则判定为活体。
优选的,在本发明实施例中,步骤S63后还包括:
S64、对于经步骤S63判定为活体的识别对象,根据特征点定位结果,估计人脸大小,计算左右两幅人脸图像的人脸高宽比,当左右两幅人脸图像的人脸宽高比均超出预设区间时,判定所述识别对象为非活体。
优选的,在本发明实施例中,所述方法在步骤S1之前还包括步骤:S0、对所述两个摄像头组成的双目立体视觉***进行标定。
优选的,在本发明实施例中,所述方法在步骤S2之前还包括步骤:对两幅图像进行包括立体校正在内的图像预处理操作。
优选的,在本发明实施例中,所述的对图像立体校正包括:根据步骤S 1中的标定结果,对两个摄像头的图像平面重投影,使得两个图像精确落在同一个平面上,并且两个图像的行完全对准到前向平行的结构上。
在本发明实施例的另一面,还提供了一种人脸活体检测***,所述***包括:
两个摄像头,用于分别同时获取识别对象的两幅图像;
人脸分类器,用于在两个摄像头所获取的两幅图像中定位出人脸区域,获得分别与两幅图像对应的人脸图像;
特征点定位单元,用于对两幅人脸图像进行特征点定位;
立体匹配单元,用于对特征点定位后的人脸图像进行特征点快速立体匹配;
计算单元,用于计算两幅人脸图像在匹配特征点的视差,获取匹配特征点的深度信息值;
处理单元,用于根据多个匹配特征点的深度信息值,判断所述识别对象的人脸是否为活体。
在本发明的至少一种方案中,利用双摄像机模拟人的双眼,由两个摄像机从不同角度拍摄用户(识别对象)的两幅或者多幅二维图像,通过一系列技术最后转换成世界坐标系内的三维实物信息,其中通过摄像机的标定来确定摄像机本身的内外参数,然后对所拍摄的二维平面图像进行处理,从而能够使所拍摄的图像位于同一平面上,对左右图像的像素点进行立体匹配,将三维实物中的点分别在两幅二维图像中标记出来,再按照仿生学人眼的视差原理将模型放在仿射空间中进行计算还原以获得物体的深度信息值。
当使用双目立体视觉***拍摄用户时,得到的人脸器官如鼻子、眼睛的深度明显低于人脸轮廓,头部姿势变化时面部器官与某一侧轮廓深度差别更为明显,而图像、视频则无法表现出有区分性的深度差异,大尺寸的图像在弯曲的情况下即使能够表现出明显的深度差异,也必将牺牲正常的人脸比例。通过计算人脸图像中不同特征点的深度信息值和先验知识可以判别用户是否为活体。
由此可知,采用本发明的方案后,在人脸活体检测时,无需用户过多配合,安全性高,隐蔽性强,姿态适应性强,适应范围广,且在在图像匹配中使用特征点定位技术,可以准确找出匹配特征点的位置,只需在小范围内搜索即可达到特征点图像匹配,大大精简了图像匹配过程,提高了匹配速度,用户体验好。
具体实施方式
应当指出,本部分中对具体结构的描述及描述顺序仅是对具体实施例的说明,不应视为对本发明的保护范围有任何限制作用。此外,在不冲突的情形下,本部分中的实施例以及实施例中的特征可以相互组合。
请同时参考图1至图5,下面将结合附图对本发明实施例的人脸活体检测方法及***作详细说明。
结合图1所示,本发明的人脸活动检测方法可以包括:
步骤1:通过两个摄像头分别同时抓取识别对象(以下以用户作举例说明)两幅图像,即左右两幅图像;
步骤2:采用人脸分类器定位两幅图像中的人脸区域,获得分别与两幅图像对应的人脸图像;
步骤3:对两幅人脸图像进行特征点定位;
步骤4:对特征点定位后的人脸图像进行特征点快速立体匹配;
步骤5:计算两幅人脸图像在匹配特征点的视差,获取匹配特征点的深度信息值;
步骤6:根据多个匹配特征点的深度信息值,判断该用户的人脸是否为活体。
其中,在具体实施时,两个摄像头可以采用同型号500万像素网络摄像头,两个摄像头呈左右固定布置,并使两个摄像头组成的双目立体视觉***;在实际应用中,两个摄像头之间的水平距离设定满足两个摄像头处于同一平面上,并能够同时获取用户图像。摄像头与人脸的距离约为0.5米左右,处于一般的室内光照环境下,左右图像照片大小均为640×480,人脸检测、特征点定位、活体检测、识别***等功能可以通过PC机实现。
作为一种优选方式,本发明实施例的方法在步骤1还可以包括步骤:对两个摄像头组成的双目立体视觉***进行标定,其具体实现流程可以为:
步骤11:分别标定两个摄像头,标定内容具体可以包括:左右摄像头内参数矩阵和畸变向量。
步骤12:标定由两个摄像头组成的双目立体视觉***。标定内容具体可以包括:双目立体视觉***的旋转矩阵和平移向量。
步骤13:得到立体校正参数和重投影矩阵。
在该方式中,步骤11可以采用棋盘标定法进行摄像头标定,内参数矩阵可以包括摄像头水平方向焦距、垂直方向焦距、主点位置;畸变向量可以由径向畸变系数和切向畸变系数组成。
在该方式中,对步骤11得到的标定结果,可以利用数学方法消除径向和切线方向的镜头畸变,从而输出无畸变图像,令(xp,yp)为没有畸变的点的位置,(xd,yd)为畸变位置,有:
这样就得到了没有镜头畸变的图像。
在该方式中,步骤12所述的旋转矩阵和平移向量可以用于描述右摄像头相对左摄像头的位置关系,数学表示为XR=R*XL+T,其中,XL,XR是三维空间中任一点P在双目立体视觉***左右摄像头参考坐标系中的三维位置向量,R、T是双目立体视觉***的旋转矩阵和平移向量。
在该方式中,步骤13可以使用Bouguet算法得到双目立体视觉***的立体校正参数,并利用逆向映射法获得左右视图的校正映射表,得到用于将二维图像点重投影到三维中的重投影矩阵。
另外,在步骤2中所述的使用人脸分类器定位两幅图像中的人脸区域之前,本发明实施例的方法还可以包括步骤:对两幅图像进行包括立体校正在内的图像预处理操作。其中,对立体校正的操作可以根据前述标定结果,通过查找左右校正映射表,对两台摄像机的图像平面重投影,使得左右图像精确落在同一个平面上,并且两个图像的行完全对准到前向平行的结构上,即同一点在一台摄像机的像素行与另一台位于同一行上,立体校正前后的左右图像可以参见图2a和图2b所示。
在该方式中,步骤2中所述使用人脸分类器定位两幅图像中的人脸区域,所采用的图像预处理操作可以作为对立体校正后的图像进行灰度变换,滤波处理,获得前向平行对准且质量高的灰度图;所采用的人脸定位方法可以是一种基于模板匹配的方法,即对左右灰度图利用积分快速计算出各自的Haar-Like小波特征值,应用到离线训练好的Adaboost-Cascade分类器,检测出左右图像人脸区域。当然,也可以基于肤色和几何特性、基于积分投影、基于线连通等方法实现定位。
在该方式中,步骤3中所述对定位得到的人脸图像进行特征点定位,特征点是指人脸轮廓、眉毛、眼睛、鼻子和嘴巴的位置坐标;在本实施例中,采用级联形状回归算法进行特征点定位,当然在其他实施例中,也可以采用基于深度学习相关算法、主动形状模型相关算法、主动外观模型相关算法等方式实现。采用级联形状回归算法进行特征点定位,如采用索引特征的双层级联形状回归算法,可以直接学习一个向量回归函数,结合图像本身并最小化训练形状对齐误差来估计人脸形状;结合了两层级联回归、形状索引特征和基于相关的特征选择方法,能够快速精确的训练一个无参回归模型,有着极快的速度,是一种高效、高精度的人脸特征点精确定位算法,其具体步骤为:
步骤31:加载离线训练好的基于索引特征的双层级联形状回归器;
步骤32:从加载回归器中随机选择L个训练样本形状作为待定位人脸区域特征点的初始形状;
步骤33:计算以某一个被选择的训练样本为初始形状时得到的估计用户人脸形状;
步骤34:将L个估计用户人脸形状的平均值作为用户的人脸形状。
其中,形状指人脸特征点位置信息组成的向量,数学表示为S={x1,y1,x2,y2,…,xn,yn},xi,yi是第i个特征点对应的像素坐标。
在该方式中,步骤33的具体包括以下流程:
步骤331:计算F个灰度差值特征;
步骤332:获得当前形状的更新值,更新当前形状;
步骤333:完成规定回归次数的形状更新,得到最终的当前用户人脸估计形状。
其中,步骤331所述灰度差值特征的获取方式可以为:根据回归器中F对特征点索引号和相对位置信息,获取用户人脸图像上对应索引特征的灰度值,计算每对索引特征点灰度差值。
步骤332所述获得当前形状的更新值的方法可以为:将步骤331中获得F个灰度差值与对应的阈值作比较,获得对应的F比特二级制值,即可找出训练器中该二进制值对应的更新形状。
步骤332所述更新当前形状的具体算法可以为:
Si=Si-1+δS
其中,Si-1是当前估计形状的前一次估计形状,6S指的是更新形状。
另外,步骤4中所述对特征点定位后的人脸图像进行特征点快速立体匹配,是指可以使用“绝对误差累计(SAD,Sum of Absolute Difference)”小窗口查找左右两幅立体校正图像之间的匹配特征点。以左图像中的每一个特征点为参考点,在右图像对应特征点周围用SAD滑动窗口进行匹配搜索,绝对误差累计最小的点即为左图像特征点在右图像上的匹配特征点。
在该方式中,所述SAD滑动窗口进行搜索匹配过程中窗口所在位置的绝对误差累计值可以为:
由于步骤3可以先对左右图像进行了精确的人脸特征点定位,且图像大小为640×480,故采用大小预定数目(如5)的SAD滑动窗口,在以右图像特征点为中心预定数目(如5个)像素的小窗口内进行匹配搜索。
在该方式中,步骤4中所述特征点快速立体匹配后的匹配特征点可以要求满足纵坐标相同,当匹配特征点纵坐标不相同时,可以将右图像中匹配特征点纵坐标强制等于左图像对应被参考特征点的纵坐标,得到匹配点M′,并在M′周围左右各取两个像素点,将这5个点作为M′的候选点,分别计算以候选点为中心的误差累计值,选取误差累计值最小的点为匹配点,附图3为右图像中特征点定位结果与匹配特征点位置关系图,由图可以看出,匹配特征点就在定位的特征点附近,节省了匹配时间。
另外,步骤5可以包括:
步骤51:计算左右两幅人脸图像在匹配特征点的视差;
步骤52:根据该特征点的视差得到特征点的深度信息值。
其中,步骤51中所述视差可以是左右匹配特征点横坐标距离。
步骤52中所匹配述特征点的深度信息值可以利用相似三角形原理获得,匹配特征点的深度信息值计算方法为其中,T指两摄像机投影中心的距离,f是同型号两台摄像机的焦距。在本发明中,使用型号相同的两个摄像头,T和f提前标定好,d为左右匹配特征点视差。已知视差d和二维图像点(x,y),可以利用步骤1中的重投影矩阵Q可以计算图像中的二维图像点对应的三维坐标:
即为该点三维坐标,为二维图像点的深度。
另外,步骤6中所述根据不同部位匹配特征点的深度信息值,判断人脸是否为活体,具体步骤可以为:
步骤61:确定深度信息值最小的匹配特征点为最小匹配特征点,获取所述最小匹配特征点的深度信息值;
步骤62:分别将各匹配特征点的深度信息值减去所述最小匹配特征点的深度信息值,得到各匹配特征点的相对深度信息值;
步骤63:计算所述各匹配特征点的相对深度信息值的平方和或深度和,与预设阈值比较,平方和小于阈值判定为非活体,否则判定为活体;
在实施步骤6时,分别以用户本人的真实人脸(活体)和用户的人脸照片为识别对象所得到的匹配特征点深度信息值可以参见图4a和图4b所示,其中,图4a为本发明实施例的人脸活体检测方法中真实人脸的特征点深度信息值的示意图,图4b为本发明实施例的所述人脸活体检测方法中人脸照片特征点深度信息值的示意图。根据图4a和图4b的比较可以看出,通过用户本人的真实人脸为识别对象所得到的不同匹配特征点间的深度信息值的变化明显,而通过用户的人脸照片为识别对象所得到的不同匹配特征点间的深度信息值的变化则相对不明显。
步骤64:根据特征点定位结果,估计人脸大小,计算左右两幅人脸图像的人脸高宽比,当左右两幅人脸图像的人脸宽高比均超出预设区间时,判定所述识别对象为非活体。
步骤64的目的是将已经经过步骤63判定为活体的识别对象进一步的识别,从而提高识别率,避免欺骗认证。
在实际应用中,通过弯曲大照片(与实体人脸大小接近)的方式,有可能通过步骤63的判定,即,步骤63是有可能被进行欺骗认证的。为了避免这种欺骗认证,在本发明实施例中,还包括了人脸高宽比的判断步骤,具体的:
对于已经经过步骤63判定为活体的用户,在本步骤中,分别计算左右两幅人脸图像的人脸高宽比,通过计算人脸高宽比是否超出预设区间的方式来判断识别对象是否为弯曲大照片。
在实际应用中,可以在当第一次和第二次判定人脸高宽超出预设区间后,返回步骤1重新采集图像判断,三次(或其他预定次数)均大于该阈值时判定为非活体,这样通过多次的判断以避免误判。这种约束方法能够防止通过弯曲大照片的方式欺骗认证。接着,若最终判定为活体,则进入人脸识别环节。
另外,在整个过程中,可以通过双目立体视觉***分别拍摄真实用户和人脸照片各200张,拍摄时用户不断变化姿态、表情、相对摄像机的位置,对人脸照片进行平放、远近、弯曲等操作,且人脸照片使用6寸大小和12寸大小照片实验,可以完全正确区分用户是否活体。
需要说明的是,上述实施例的方案不仅适用于摄像头左右固定布置的双目立体视觉***,也适用于上下固定布置的双目立体视觉***(两个摄像头呈上下布置,两个摄像头之间的垂直距离设定满足两个摄像头处于同一平面上,并能够同时获取用户图像)。对于采用上下布置的方案,前述左图像对应于上下放置结构中的上图像、右图像对应下图像、横坐标对应纵坐标、纵坐标对应横坐标。
需要说明的是,步骤6中所述根据不同部位匹配特征点的深度信息值,判断人脸是否为活体的分类方法并不局限上述方案,也可使用支持向量机SVM、基于主成分分析PCA的特征提取、线性判别式分析LDA等方法,只要能够实现相应的功能即可。
需要说明的是,图像的预处理操作可以根据人脸分类器的不同模式选择不同的预处理方法。
本发明实施例的人脸活体检测方法应用后,可以利用双摄像机模拟人的双眼,由两个摄像机从不同角度拍摄用户的两幅或者多幅二维图像,通过一系列技术最后转换成世界坐标系内的三维实物信息,其中通过摄像机的标定来确定摄像机本身的内外参数,然后对所拍摄的二维平面图像进行处理,从而能够使所拍摄的图像位于同一平面上,对左右图像的像素点进行立体匹配,将三维实物中的点分别在两幅二维图像中标记出来,再按照仿生学人眼的视差原理将模型放在仿射空间中进行计算还原以获得物体的深度信息值。
当使用双目立体视觉***拍摄用户时,得到的人脸器官如鼻子、眼睛的深度明显低于人脸轮廓,头部姿势变化时面部器官与某一侧轮廓深度差别更为明显,而图像、视频则无法表现出有区分性的深度差异,大尺寸的图像在弯曲的情况下即使能够表现出明显的深度差异,也必将牺牲正常的人脸比例。通过计算人脸图像中不同匹配特征点的深度信息值和先验知识可以判别用户是否为活体。从上述可知,与现有技术相比,本发明实施例的方案,不仅对姿态适应性强,安全性高,而且无需用户配合,速度快,用户体验好。
此外,结合图5所示,本发明实施例还提供了一种人脸活体检测***,该***可以包括两个摄像头、人脸分类器、特征点定位单元、立体匹配单元、计算单元和处理单元。其中:两个摄像头用于分别获取用户的图像;人脸分类器用于将两个摄像头获取的两幅图像定位出人脸区域;特征点定位单元用于对人脸分类器定位得到的人脸图像进行特征点定位;立体匹配单元用于对特征点定位后的人脸图像进行特征点快速立体匹配;计算单元用于计算人脸图像中匹配特征点的深度信息值;处理单元用于根据不同部位匹配特征点的深度信息值,判断该用户的人脸是否为活体。
在具体实施时,上述各单元及人脸分类器的功能不局限于通过PC机实现,只要能够实现这些部分的相应功能即可。另外,该人脸活体检测***的其他扩展和说明可以参见方法实施例的相关描述,兹不赘述;并且该***也能起到相应的技术效果。
本领域普通技术人员可以理解,实现上述实施例的部分步骤/单元/模块可以通过程序指令相关的硬件来完成,前述程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述实施例各单元中对应的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光碟等各种可以存储程序代码的介质。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。