一种活体人脸检测头部姿态回归器的获取方法及检测方法
技术领域
本发明涉及图像识别技术,特别涉及一种活体人脸检测头部姿态回归器的获取方法及检测方法。
背景技术
随着大数据时代的到来,个人信息安全问题日益严峻,基于图像处理的人脸识别和检测技术得到了广泛的应用。然而,目前人脸检测技术都是针对数量较小的人脸图像,随着大数据概念的深入,图像大数据处理将对人脸检测技术提出更高要求。而且,大多数人脸检测方案都是基于对人脸图像信息的直接提取,无交互性,抗攻击能力差,例如照片、视频、模型伪装,这就对人脸活体检测提出了要求,目前尚未有成熟的人脸活体检测方法,且尚未公开在人脸识别中进行姿态回归的回归器。
发明内容
有鉴于此,本发明的主要目的在于提供一种活体人脸检测头部姿态回归器的获取方法及检测方法,以提高人脸识别的有效性。
本发明实施例提供一种人脸识别头部姿态回归器的获取方法,包括以下步骤:
A、获取人脸三维模型数据作为训练样本集;
B、选择所述人脸三维模型数据中的人脸特征点;并通过相机成像模型将所述人脸特征点在空间内做任意的随机旋转和随机平移交换时投影到相机成像平面上,以获取由特征点二维坐标构成的二维坐标平面集合、所述二维坐标平面集合中的各个二维坐标平面对应的欧拉角、以及包含所述各个二维坐标平面与其对应的欧拉角之间的对应关系的旋转矩阵;
C、根据所述获取的二维坐标和所述旋转矩阵;或者根据所述获取的二维坐标和所述欧拉角,通过最小二乘法获取头部姿态回归器。
优选地,当所述头部姿态回归器为旋转矩阵回归器时,所述步骤C包括:
根据所述特征点二维坐标及所述旋转矩阵,通过最小二乘法获取旋转矩阵回归器。
优选地,当所述头部姿态回归器为欧拉角回归器时,所述步骤C包括:
根据所述特征点二维坐标及所述欧拉角,通过最小二乘法获取欧拉角回归器。
优选地,所述旋转矩阵回归器的计算公式为:
W=(STS+λE)-1STR
其中,S表示特征点的二维坐标矩阵,ST表示矩阵转置后的特征点的二维坐标矩阵,λ表示仿真参数,E表示单位矩阵,λE表示保证可逆性的松弛项,R表示所述旋转矩阵。
优选地,所述欧拉角回归器的计算公式为:
W'=(STS+λE)-1STθ
其中,S表示特征点的二维坐标矩阵,ST表示矩阵转置后的特征点的二维坐标矩阵,λ表示仿真参数,E表示单位矩阵,λE表示保证可逆性的松弛项,θ表示欧拉角角度值。
本申请还提供了一种基于前述的头部姿态回归器的活体人脸检测方法,所述方法包括:
D、获取用户根据终端发出的指令做出的头部姿态的图像;
E、根据所述图像,通过adaboost算法获取人脸框;
F、通过有监督梯度下降法定位所述人脸框中的人脸特征点坐标;
G、将所述人脸特征点进行中心化和归一化处理;
H、根据处理后的特征点数据,通过所述的头部姿态回归器获取头部角度;当判断获取的头部角度值在预设阈值之内时,识别成功。
优选地,当所述头部姿态回归器包括旋转矩阵回归器时,步骤H所述获取头部角度的步骤包括:
根据处理后的特征点数据,根据所述旋转矩阵回归器获取回归的旋转矩阵;
根据所述回归的旋转矩阵,通过数学解析的方式得到头部空间姿态的三个欧拉角。
优选地,通过所述旋转矩阵回归器计算回归的旋转矩阵的计算公式为:
hW(Si(x,y))=W·Si(x,y)+ξ
其中,hW(Si(x,y))表示回归后的旋转矩阵,W表示旋转矩阵回归器,ξ表示误差项,Si(x,y)表示特征点的二维坐标矩阵。
优选地,所述头部姿态回归器包括欧拉角回归器时,步骤H所述获取头部角度的步骤包括根据处理后的特征点数据,根据所述欧拉角回归器获取头部空间姿态的三个欧拉角。
优选地,通过所述欧拉角回归器计算回归后的欧拉角的计算公式为:
θ=W'·Si(x,y)+ξ
其中,W'表示欧拉角回归器,ξ表示误差项,Si(x,y)表示特征点坐标矩阵,ξ表示误差项。
本申请还提供了一种活体人脸检测方法,所述方法包括:
I、获取用户根据终端指令做出的面部表情的图像;
J、根据所述图像,通过adaboost算法获取人脸框;
K、通过有监督梯度下降法定位所述人脸框中的人脸特征点坐标;
L、将定位的特征点进行线性变换;当判断线性变换后的特征点的特征信息值在预设特征阈值范围之内时,则识别成功。
由上可以看出,本发明提供了一种活体人脸检测头部姿态回归器的获取方法及人脸识别方法,通过构建出高精度的头部姿态回归器,以及通过采用交互方式,用户根据终端发出的指令做出相应的人脸姿态,终端的摄像头获取用户图像数据,并进一步进行人脸特征点定位以及数据处理,若该处理后的数据值在预设数据阈值内,则人脸识别成功。该方法有利于有效的进行人脸识别。该方法大幅度提高了人脸特征点定位的速度和精度,增加了人脸活体检测的成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种活体人脸检测头部姿态回归器获取方法流程示意图;
图2为本发明实施例提供的一种人脸三维模型随机旋转投影示意图;
图3为本发明实施例提供的一种相机小孔成像模型示意图;
图4为本发明实施例提供的一种活体人脸检测方法流程示意图;
图5为本发明实施例提供的一种SDM算法效果示意图;
图6为本发明实施例提供的一种活体人脸检测方法流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,为本发明实施例中提供的一种活体人脸检测头部姿态回归器的获取方法,本实施例中假定每幅人脸图像的特征向量、坐标向量都为2N维(N为特征点数),以下为具体的实施步骤:
训练数据的获取
为了获得合适的头部姿态回归器,需要良好的训练数据,由于回归器最终直接影响头部姿态估计的准确性,而训练数据的质量直接影响回归器的精度,为此,本申请通过如下方法获得高质量的图像回归器训练数据。由于实际实现过程中,很难获取一个彩色RGB图像中人脸的实际姿态,所以本申请使用了人脸三维模型作为训练样本,从经过对齐配准的500个三维模型样本中,随机选出100个三维模型,取这100个模型的平均模型,进行10次这样的操作,获得10个这样的平均模型。然后,对于每个平均模型,我们标定左右眼睛的四个眼角点,鼻尖点,两个嘴角点,一共7个特征点,对于每个模型,随机的移动和旋转300次。图2为三维模型随机旋转投影示意图。
如图3所示,为相机小孔成像模型示意图。在人工标定特征点之后,通过相机成像模型将所述人脸特征点在空间内做任意的随机旋转和随机平移交换后投影到相机成像平面上,以获取由特征点二维坐标构成的二维坐标平面集合、所述二维坐标平面集合中的各个二维坐标平面对应的欧拉角、以及包含所述各个二维坐标平面与其对应的欧拉角之间的对应关系的旋转矩阵;在这里我们可以得到3000个二维坐标平面。
例如,我们假设忽略畸变的从世界坐标系到图像像素坐标系的成像模型如式1所示
式1中,K称为相机的内部参数,u与v为图像的像素坐标,X、Y、Z为世界坐标系,R、t分别代表旋转和平移,m是指图像像素坐标,M是指世界坐标,λ是指缩放系数,f和c是相机内部参数,对于不同的相机,内部参数K一般是不同的,本申请通过实验标定获得内部参数K,然后对于随机旋转平移得到的三维模型通过外部参数K投影,能够得到一系列对应的平面点集。有了这些平面点集以及它们对应的角度和旋转矩阵,我们就可以得到良好的头部姿态回归器。
姿态回归
我们假设从二维相机成像模型中的一系列平面点集到空间姿态的映射为
{Si(x,y)→θi→Ri,i=1~3000}
这里Si(x,y)为每个二维坐标平面上的特征点的二维坐标矩阵,θi为姿态的欧拉角,Ri为旋转矩阵。
本申请的目标是对一个这样的S(x,y),我们估计出其对应的姿态。
其中,对于前述映射产生的特征点二维坐标,需要经过去中心化和归一化,以消除空间位置和尺度对回归的影响。
由于我们的目标是回归出头部姿态,并不需要头部的空间位置,为了去除空间位置对回归头部姿态的影响,我们需要对数据做中心化处理,即统一减去各自的均值。
由于摄像头在采集图像的时候,摄像头的远近,以及用户本身头部尺寸的不同,会导致最后的成像大小也不一样,所以要对数据尺度做归一化,我们统一除以bounding box,即人脸边界框的高,也即除以x方向的最大距离。
以下举例说明中心化和归一化的方法:
如式2所示,
式2μ、ν分别代表特征点在图像中的像素坐标,mμ、mν分别代表特征点两个方向的均值,我们令α=μmax-μmin,则表达如下:
需要注意的是,在数据做中心化的时候,u与v分别各自减去自己的平均值,目的是将头部中心移到原点,再做归一化的时候,u与v统一除以u方向的最大的距离,这么做的目的是保证尺度缩放是一样的,不会出现某一个方向被压缩或者拉伸的情况。这两步预处理对最后的姿态回归准确性至关重要。
通过以下证明过程证明预处理并不影响最后头部姿态回归的误差。考虑数据的归一化是否会对最后我们回归出来的头部姿态误差有影响,从相机成像模型入手,忽略畸变的从世界坐标系到图像像素坐标系的成像模型如前述的式1所示
式1中,K称为相机的内部参数,u与v为图像的像素坐标,X、Y、Z为世界坐标系,R、t分别代表旋转和平移,我们对图像像素坐标的归一化处理如式3所示,由式1和式3可知:
由式4可知,对坐标数据做了归一化的预处理,相当于改变了相机的内参数,并不改变世界坐标系下的三维物体的实际姿态,故这样的数据归一化不会影响到最后回归头部姿态的误差。
本申请共提出了两种方法来进行头部姿态回归(对应两种头部姿态回归器W),分别得到的是旋转矩阵和欧拉角向量。一种方法是利用旋转矩阵回归器先回归出旋转矩阵再通过解析运算得到欧拉角,另一种方法是利用角度回归器直接求解出欧拉角。
方法一:旋转矩阵回归器
本申请尝试了两种方法,其中一种是回归出空间姿态对应的旋转矩阵,要使得均方误差最小,我们定义代价函数为
其中
hW(Si(x,y))=W·Si(x,y)+ξ 式6
其中,J(W)为均方误差,hw为我们回归估计的旋转矩阵,W旋转矩阵回归器,R为训练数据中已知的旋转矩阵,ξ表示误差项,Si(x,y)表示特征点的二维坐标矩阵,N表示平面数。代价函数使得估计矩阵与标定矩阵的均方误差最小。
其中,在极大似然估计意义下,要使得J(W)最小,最优解为:
W=(STS)-1STR 式7
为了保证绝对可逆,在实际中,所述旋转矩阵回归器W的计算公式为:
W=(STS+λE)-1STR 式8
其中,S表示特征点的二维坐标矩阵,ST表示矩阵转置后的特征点的二维坐标矩阵,λ表示仿真参数,E表示单位矩阵,λE表示保证可逆性的松弛项,θ表示欧拉角角度值。
根据该旋转回归器,以及基于SDM算法得到的二维空间的特征点坐标数据,可以回归出头部姿态的旋转矩阵,然后通过数学解析的方式(例如通过最小二乘法)得到估计的头部空间姿态的三个欧拉角。
方法二:欧拉角回归器
与方法一不同,我们直接通过最小二乘回归头部空间姿态的三个欧拉角,即将旋转矩阵R换成对应的欧拉角即可,此时我们的代价函数变为我们回归估计的欧拉角与标定的欧拉角的均分误差,
{Si(x,y)→θi,i=3000}
同样的,对于这样的映射,用最小二乘法做线性回归,能够得出姿态角度。同理,这种情况下最小二乘意义下的最优参数解(即欧拉角回归器)为
W'=(STS+λE)-1STθ 式9
其中,S表示特征点的二维坐标矩阵,ST表示矩阵转置后的特征点的二维坐标矩阵,λ表示仿真参数,E表示单位矩阵,λE表示保证可逆性的松弛项,θ表示欧拉角角度值。
通过该欧拉角回归器,根据SDM算法得到的二维空间的特征点坐标数据,我们通过最小二乘法可以回归出三个欧拉角。
在拿到最优拟合参数之后,用于在iPhone上的实时预测估计头部姿态,首先通过adaboost算法检测出人脸,然后SDM算法跟踪人脸特征点位置,然后对其中7个关键点坐标进行尺度归一化处理,最后对处理之后的坐标数据通过我们训练出来的回归器进行头部姿态的获取。
实施例二
如图4所示,为本发明实施例中提供的一种基于权利要求1所述回归器的人脸识别方法,本实施例中假定每幅人脸图像的特征向量、坐标向量都为2N维(N为特征点数),以下为具体的实施步骤:
S401,获取用户根据终端发出的指令做出的人脸姿态的图像。
终端发出指令,该指令可以是要求用户张张嘴、眨眨眼、抬头,低头,向左转头或向右转头等,该指令可以是单个指令或者上述指令的任意组合。用户根据终端的指令做出相应的姿态。终端通过摄像头采集用户做出的人脸姿态的图像。摄像头连续拍摄多帧图像。目前已有的人脸检测设备采用红外线技术等,成本较高且使用不便,因此本申请将拍照摄像头应用在人脸检测中。
S401,利用Adaboost算法检测人脸图像。
Adaboost人脸检测算法是一种弱分类器级联成强分类器的算法,选取图像中的多个haar特征,haar特征的一个优点是,只需要遍历一次图像,得到图像的积分图,可以计算每个像素点的haar特征,然后每个haar特征都可能作为一个人脸的弱分类器,只要能够大于0.5的概率区分一张图像是否是人脸图像就称为一个弱分类器,多个这样的弱分类器级联,就能够判别一张图像是否是人脸图像。
S402,通过有监督梯度下降方法(supervised descent methods,SDM)进行人脸特征点定位。
通过有监督下降法找出人脸关键特征点的位置信息,其本质是多个级联回归算法,每次回归出目标特征点与当前特征点的差,也即当前特征点的前进梯度,然后不断修正当前特征点,经过一次这样的回归可能跟目标特征点仍然有较大偏差,故经过几个这样的级联的分类器,认为最后的特征点位置与目标特征点的偏差可接受。最后根据得到脸部特征点的位置信息,经过中心化与尺度归一化处理后,通过线性回归的方式,得到头部姿态。相比较于其他方法,本申请方法能够在移动设备上实时回归得到头部姿态,且在精度上有所提升,不需要复杂的迭代处理,只需要一次回归,得益于SDM算法特征点的鲁棒性,本申请在低分辨率图像上表现良好。
有监督梯度下降(SDM)方法在解决非线性的计算机视觉问题时往往表现出优异的性能,SDM方法是一种学习的方法,学习的是自变量到梯度的变化,学习的目标不是f(x),而是f(x)的梯度。如图5所示,为SDM算法效果示意图。
给定一个训练图像集合对于每一幅图像Ii,事先已经人工标定出特征点坐标为Si,本文先用adaboost算法检测人脸,获得人脸的bounding box,然后在boundingbox内初始化人脸特征点的位置对于每个这样的特征点,我们计算它的特征描述子,特征描述子可选的较多,有SIFT,SURF,LBP等描述子,通过这样的特征回归出特征点应该移动的方向,回归表述如下,每经过一次回归学习,我们都能够获得这样一个回归器rt,使得初始点叠加上回归出来的偏移量之后,与目标特征点Si之间在最小二乘意义上的距离最小
上式中,为回归目标,代表的是当前特征点与目标特征点位置的偏差,也即特征点的移动梯度方向。
对于这样一次回归学习,最后与目标特征点Si之间还有较大偏差,需要经过连续几次这样的回归,即级联回归的思想,经过几次这样的回归,需要注意的是,完成每次回归,更新一个特征点之后,需要重新计算这个特征点在图像Ii的特征描述子,用最新的特征描述子去回归下一次梯度方向,最终经过T次回归的特征点可以表述为
一般的T取3到5次,即可得到比较好的结果,每经过一次回归迭代,都向Si靠近一点,所以称为有监督梯度下降方法。
几次迭代之后,人脸特征点坐标就被确定了。如图5所示,本文实现的SDM算法能够实时的跟踪出68个特征点的坐标信息。
S403,选择关键特征点,进行中心化和归一化处理。
为了减少在移动端iPhone上的处理时间,我们将68个点缩减为32个,然后选择这32个点中的7个点,实时回归出头部姿态。之所以选择这7个点,是因为这7个点已经足够描述头部空间姿态了,同时,这7个点的特征明显,在特征点定位过程中,这7个点一般较为准确。
在通过SDM算法得到人脸特征点之后,我们对特征点坐标数据进行规范化处理,由于我们的目标是回归出头部姿态,并不需要头部的空间位置,为了去除空间位置对回归头部姿态的影响,我们需要对数据做中心化处理,即统一减去各自的均值。
由于摄像头在采集图像的时候,摄像头的远近,以及用户本身头部尺寸的不同,会导致最后的成像大小也不一样,所以要对数据尺度做归一化。
此处的中心化和归一化的具体处理方式与实施例一中的相同,此处不再赘述。
S404,基于特征点信息,获取头部角度信息。当判断获取的角度值在设定的阈值之内时,则人脸识别成功。反之,则人脸识别失败。
通过实施例一中获取的头部姿态回归器进行角度预测。估计得到人脸的偏航角Yaw,俯仰角Pitch,翻滚角Roll这三个欧拉角。
其中,可以设定摄像头连续拍摄多帧图像中的一帧图像满足阈值要求,则判断动作完成,即人脸识别成功。
实验结果及分析
将本申请提出的方法在Biwi Kinect数据库上进行测试。Biwi Kinect数据库包括20个人(14个男性,6个女性)头部转动不同方向的RGBD图像。数据库中有24段视频序列数据,这20个人中少数人录制了两次。所有的图像中的头部位置和旋转角度都进行了标定。数据库平移和旋转标定误差在1mm和1°之间。本申请列举了其他5种头部姿态估计方法,与本申请提出的两种回归方法在该数据集上进行了比较,如表1所示。
表1 在Biwi Kinect库上对比不同头部姿态方法的结果
上述表格的误差均为绝对误差。从表格中可以看出,本申请提出的方法在精度上有明显提高,同时对比我们可以发现本申请中第二种直接回归角度的方法,在精度上略有优势。从上述实验可以看出,本申请方法在Biwi数据集上效果表现良好,估计精度相比较于现有方法有所提高,同时在移动端能够实时处理。
实施例三
如图6所示,为本发明实施例中提供的一种人脸识别方法,具体的实施步骤包括:
S601,S602分别与实施例二中的S401,S402相同,在此不再赘述。进一步的还包括:
S603,将S602定位的目标人脸图像上的特征点做线性变换并与固定阈值作比较,继而判断动作是否完成。
其中,当线性变换后获取的值在预设阈值内时,则判断动作完成,则人脸识别成功,反之,则人脸识别失败。
例如,通过测量目标人脸图像嘴角两侧特征点距离与上下特征点距离差是否小于某个阈值来判断是否做出张嘴动作。可以设定摄像头连续拍摄多帧图像中的一帧图像满足阈值要求,则判断动作完成,即人脸识别成功。
实施例四
基于实施例一的头部姿态回归器的获取方法,本申请还提供了一种用于活体人脸检测姿态回归的回归器的获取装置,所述装置包括:
训练样本获取模块,用于获取人脸三维模型数据作为训练样本集;
映射模块,用于选择所述人脸三维模型数据中的人脸特征点;并通过相机成像模型将所述人脸特征点在空间内做任意的随机旋转和随机平移交换时投影到相机成像平面上,以获取由特征点二维坐标构成的二维坐标平面集合、所述各个二维坐标平面对应的欧拉角、以及包含所述各个二维坐标平面与其对应的欧拉角之间的对应关系的旋转矩阵;
姿态回归模块,用于根据所述映射,通过最小二乘法回归头部空间姿态以获取用于姿态回归的回归器。
实施例五
基于实施例二的活体人脸检测方法,本申请还提供了一种人脸识别装置,所述装置包括:
图像获取模块,用于获取用户根据终端指令做出的人脸姿态的图像;
人脸框获取模块,用于根据所述图像,通过adaboost算法获取人脸框;
特征点定位模块,用于通过有监督梯度下降法定位所述人脸框中的人脸特征点;
归一化处理模块,用于将所述人脸特征点进行中心化和归一化处理;
角度预测模块,用于根据处理后的数据,通过实施例一所述的回归器预测头部姿态;
判断模块,用于当判断预测得到的头部姿态的角度值在预设的角度阈值范围内时,人脸识别成功。
实施例六
基于实施例三的活体人脸检测方法,本申请还提供了一种人脸识别装置,所述装置包括:
图像获取模块,用于获取用户根据终端指令做出的面部表情的图像;
人脸框获取模块,用于根据所述图像,通过adaboost算法获取人脸框;
特征点定位模块,用于通过有监督梯度下降法定位所述人脸框中的人脸特征点坐标;
判断模块,用于将定位的特征点进行线性变换;当判断线性变换后的特征点的特征信息值在预设特征阈值范围之内时,则识别成功。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。