具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的活体人脸检测过程,具体包括以下步骤:
S101:服务器实时采集视频图像,并在所述视频图像中检测人脸图像。
在本申请实施例中,所述的服务器可以是基于人脸匹配,对用户进行身份认证的认证服务器。可以通过服务器自身的摄像头实时采集视频图像,也可以通过终端(如手机、平板电脑、数码相机等)的摄像头实时采集视频图像并上传至服务器。
一般的,在实时采集视频图像的过程中,待认证的用户可将自己的脸部置于摄像头前,使得服务器可在视频图像中检测到人脸图像并执行后续过程。
在实际应用中,服务器可以采用现有的方法在视频图像中检测人脸图像,这些方法包括但不限于:基于级联分类器的人脸检测方法、基于方向梯度直方图(Histogram of Oriented Gradient,HOG)特征和支持向量机(Support VectorMachine,SVM)的人脸检测方法等。
进一步的,服务器当检测到人脸图像时,可发出动作提示,以提示所述人脸图像对应的目标执行所述动作提示对应的动作。
在本申请实施例中,服务器当检测到人脸图像时,可认为摄像头前与该人脸图像对应的目标已经做好接收活体人脸检测的准备,由于该目标既有可能是活体人脸,也有可能是攻击者使用的照片或者蜡像等静态物体,因此,为了阻止攻击者的恶意假冒行为,服务器可以要求目标执行特定的动作,后续则可根据目标执行该特定的动作的过程,确定该目标是否是静态物体。
具体的,服务器在检测到人脸图像时,可以按照预设策略发出动作提示,其中,可以采用语音播报、在屏幕上进行文字、图案提示等方式发出动作提示,在预设策略中可对动作提示的相关信息进行定义,例如,动作提示的类型及解释、动作提示的格式、动作提示的选择方式、动作提示的发出方式、针对不同的应用场景发出哪些动作提示等。
S102:根据所述视频图像中人脸图像的运动姿态,生成所述人脸图像的三维人脸模型。
在本申请实施例中,攻击者除了可能利用合法用户的照片和蜡像,还可能利用预先拍摄的该合法用户的视频作为目标置于摄像头前,以假冒该合法用户,在这种情况下,由于视频中的合法用户可能执行过所述的动作提示对应的动作,为了防止攻击者利用这种视频通过服务器发出的动作提示的验证,服务器还可进一步地验证目标是否为诸如视频之类的二维物体,一种可行的验证方法是:由于视频是二维物体,而活体人脸则是三维物体,因此,服务器在发出动作提示后,可以根据实时采集的视频图像中人脸图像的运动姿态,生成该人脸图像的三维人脸模型,一般的,若目标为二维物体,则无法生成合理的三维人脸模型,因此,后续可以通过对生成的三维人脸模型进行检测,判断该三维人脸模型是否为合理的三维人脸模型,从而,可以确定目标是三维物体还是二维物体。
S103:判断所述运动姿态和所述三维人脸模型是否符合预设结果,若是,则执行步骤S104,否则,执行步骤S105。
根据上述的说明,服务器在发出动作提示后,当视频图像中人脸图像的运动姿态和生成的三维人脸模型都符合预设结果时,则可确定目标为活体人脸,而当视频图像中人脸图像的运动姿态或生成的三维人脸模型不符合预设结果时,则可确定目标不为活体人脸。
在实际应用中,为了增强本申请实施例提供的活体人脸检测方法的容错性,服务器在发出动作提示后,也可以允许目标在规定时间内执行完成动作提示对应的动作即可,也即,可以在规定时间内,给予目标多次机会重试和纠正自己的动作。
S104:确定所述人脸图像对应的目标为活体人脸。
S105:确定所述人脸图像对应的目标不为活体人脸。
通过上述方法,服务器在执行基于人脸匹配的身份认证过程之前,可先对目标进行活体人脸检测,仅当目标被确定为活体人脸时才执行身份认证过程,这样的话,即使攻击者想利用合法用户的照片、录制视频或是蜡像冒充该合法用户,由于照片或蜡像并不能执行服务器发出的动作提示对应的动作,且根据录制视频无法生成合理的三维人脸模型,因此,攻击者使用的冒充方式并不能通过的上述活体人脸检测方法的验证,进而,攻击者也无法通过身份认证,提高了身份认证结果的可靠性。
在本申请实施例中,服务器可以预先定义各种动作以及对应的动作提示。一般的,与人脸相关的动作主要有头部动作和面部动作,其中,头部动作可以包括诸如向左摇头动作、向右摇头动作、抬头动作、低头动作等中的至少一种,面部动作可以包括诸如眨眼动作、张嘴动作、皱眉动作等中的至少一种。相应的,对于上述步骤S101,服务器发出动作提示,具体可包括:服务器在上述的头部动作和面部动作中,按照预设策略选择n个动作,并发出与选择n个动作对应的动作提示,其中,n为正整数。例如,当n=2时,服务器可选择两个动作,假定服务器在头部动作中选择了向左摇头动作,在面部动作中选择了张嘴动作,则发出的与这两个动作对应的动作提示可以是“向左摇头并张嘴”。
需要说明的是,预设策略中可以包括服务器从预先定义的各种动作中选择动作的选择方式,例如,随机选择方式,顺序选择方式等。当然,以上仅是列出了子步骤“服务器发出动作提示”的一种具体执行过程,显然,服务器还可以针对该子步骤,还可以采用其他的具体执行过程,例如,服务器也可以不选择多个动作,而是只在所有的预定义的动作中,随机选择一个动作,并发出与该动作对应的动作提示即可,这样的话,可以加快服务器对后续过程的处理速度。
在本申请实施例中,对于上述步骤S102,根据所述视频图像中人脸图像的运动姿态,生成所述人脸图像的三维人脸模型,具体包括:对所述人脸图像中的关键像素进行定位,其中,所述关键像素包括所述人脸图像中的眼睛、鼻子、嘴、眉毛部位的像素,并根据所述视频图像中人脸图像的运动姿态,跟踪所述关键像素的图像坐标,再根据在跟踪过程中,所述关键像素的图像坐标的变化状态,生成所述人脸图像的三维人脸模型。其中,上述每个部位的关键像素可以有一个或多个。
具体的,可以采用现有的方法对人脸图像中的关键像素进行定位,以及跟踪关键像素的图像坐标。例如,可以利用大量的人脸图片样本,预先训练出多个分类器,然后,使用这些分类器对人脸图像中的关键像素进行定位和跟踪,所述的分类器可以包括左眼分类器、右眼分类器、左眉毛分类器、右眉毛分类器、鼻子分类器、嘴分类器、下巴分类器等。另外,在对服务器的处理速度要求较高的应用场景下,则可以采用基于级联回归器的方法对人脸图像中的关键像素进行定位和跟踪。
进一步的,根据在跟踪过程中,所述关键像素的图像坐标的变化状态,生成所述人脸图像的三维人脸模型,具体包括:根据在跟踪过程中,所述关键像素的图像坐标的变化状态,实时确定所述人脸图像中的各像素的光流值,并实时确定各关键像素的光流值之和,在指定时间内,当所述光流值之和不增大时,根据各关键像素的光流值,生成所述人脸图像的三维人脸模型。
需要说明的是,光流是一种具有大小和方向的矢量,反映了在连续图像中,对应的像素的运动状态,光流值表示光流的大小,当像素静止时,该像素的光流值不变,当像素在持续运动时,该像素的光流值会相应地持续增大。当在指定时间内,当所述光流值之和不增大时,可以认为目标已经按照服务器发出的动作提示,执行完该动作提示对应的动作,人脸图像中的各像素的光流值相对稳定并已积累了足够的信息,可用于生成人脸图像的三维人脸模型。
更进一步的,根据各关键像素的光流值,生成所述人脸图像的三维人脸模型,具体包括:将各关键像素的光流值转换为深度坐标值,根据各关键像素的深度坐标值和图像坐标,生成所述人脸图像的三维人脸模型。
在执行所述的动作提示时,一般的,目标距离摄像头越近的部分,其对应与人脸图像上的像素的光流值越大,且两者之间为线性比例关系。因此,可以根据该线性比例关系,将各关键像素的光流值转换为深度坐标值,进而,可以按照某一关键像素的图像坐标和深度坐标值对各关键像素进行坐标归一化后,即可生成人脸图像的三维人脸模型。
以上是使用普通摄像头或者单目相机采集视频图像时,生成所述人脸图像的三维人脸模型的一种可行的方法。在实际应用中,也可以使用双目相机采集视频图像,直接获得目标的三维图像,作为生成的三维人脸模型,从而,可以提高服务器的处理速度。
在本申请实施例中,判断所述运动姿态是否符合预设结果,具体包括:确定与发出的动作提示对应的关键像素,判断确定出的关键像素在指定时间内的位移值是否在预设取值区间内,若是,则确定所述运动姿态符合预设结果,否则,确定所述运动姿态不符合预设结果。下面针对某些具体的动作提示,对验证运动姿态的方法进行举例说明。
当发出的动作提示对应的动作为眨眼动作时,服务器可在发出该动作提示后的指定时间内,确定人脸图像中眼部的关键像素(如上下眼皮部位的关键像素)的位移值,当该位移值大于第一设定阈值时,即可认为人脸图像对应的目标已睁眼,当该位移值小于第二设定阈值时,可认为人脸图像对应的目标已闭眼,若在指定时间内的视频图像中检测到睁眼和闭眼动作的交替变化,则确定眨眼的运动姿态符合预设结果。
当发出的动作提示对应的动作为张嘴动作时,服务器可在发出该动作提示后的指定时间内,确定人脸图像中嘴部的关键像素(如上下嘴唇部位的关键像素)的位移值,当该位移值大于第三设定阈值时,即可认为人脸图像对应的目标已张嘴,则确定张嘴的运动姿态符合预设结果。
当发出的动作提示对应的动作为皱眉动作时,服务器可在发出该动作提示后的指定时间内,确定人脸图像中眉部的关键像素的位移值,当该位移值大于第四设定阈值时,即可认为人脸图像对应的目标已皱眉,则确定皱眉的运动姿态符合预设结果。或者,还可以判定左右眉毛的关键像素之间的距离,当该距离小于第五设定阈值时,即可认为人脸图像对应的目标已皱眉,则确定皱眉的运动姿态符合预设结果。
在本申请实施例中,判断所述三维人脸模型是否符合预设结果,具体包括:确定所述三维人脸模型与预设三维模型之间的欧氏距离,判断所述欧氏距离是否小于预设距离阈值,若是,则确定所述三维人脸模型符合预设结果,否则,确定所述三维人脸模型不符合预设结果。
确定所述欧氏距离,具体的,可以将三维人脸模型和预设三维模型置于同一个三维坐标系中,并为三维人脸模型与预设三维模型确定多个关键像素对,其中,每一个关键像素对中的两个关键像素分别属于三维人脸模型和预设三维模型,且两个关键像素表示的是相似的部位。例如,三维人脸模型上鼻子部位的一个关键像素,和预设三维模型上鼻子部位的一个关键像素就可以构成一个关键像素对。然后,针对确定出的每个关键像素对,计算该关键像素对中两个关键像素的欧氏距离,再将计算出的各欧氏距离的均值,确定为三维人脸模型与预设三维模型之间的欧氏距离。
可以采用如下公式计算两个关键像素之间的欧式距离:
其中,d(R,S)表示关键像素R与关键像素S之间的欧氏距离;
关键像素R和关键像素S位于三维坐标系(x-y-z坐标系)中,Rx、Ry、Rz表示关键像素R的坐标值,Sx、Sy、Sz表示关键像素S的坐标值。
在本申请实施例中,对于被确定为活体人脸的目标,服务器可对该目标进行后续的身份认证过程,而对于被确定不为活体人脸的目标,服务器可直接将该目标判定为非法用户,从而,不仅提高了服务器的处理效率,也提高了后续获得的身份认证结果的可靠性。
在实际应用中,服务器在检测到人脸图像后,可以提示该人脸图像对应的目标在活体人脸检测和身份认证的过程中,始终保持在摄像头前,否则,可直接判定活体人脸检测结果或身份认证结果无效。从而可以防止攻击者使用自己的活体人脸骗过活体人脸检测,再利用合法用户的照片、录制视频或是蜡像通过后续的身份认证。
根据上述的说明,在图2中示出了本申请实施例提供的活体人脸检测的详细过程,具体包括以下步骤:
S201:实时采集视频图像,并在视频图像中检测人脸图像。
S202:当检测到人脸图像时,发出动作提示,以提示人脸图像对应的目标执行该动作提示对应的动作。
S203:对人脸图像中的关键像素进行定位。
其中,所述关键像素包括人脸图像中的眼睛、鼻子、嘴、眉毛部位的像素。
S204:根据视频图像中人脸图像的运动姿态,跟踪关键像素的图像坐标。
S205:根据在跟踪过程中,关键像素的图像坐标的变化状态,实时确定人脸图像中的各像素的光流值,并实时确定各关键像素的光流值之和。
S206:在指定时间内,当所述光流值之和不增大时,将各关键像素的光流值转换为深度坐标值。
S207:根据各关键像素的深度坐标值和图像坐标,生成人脸图像的三维人脸模型。
S208:对所述运动姿态和所述三维人脸模型进行验证。
S209:当运动姿态和三维人脸模型均符合预设结果时,确定该目标为活体人脸,当运动姿态或三维人脸模型不符合预设结果时,确定该目标不为活体人脸。
当然,基于本申请实施例提供的活体人脸检测方法,还可以检测其他生物的脸部,在此不再赘述。
以上为本申请实施例提供的活体人脸检测方法,基于同样的思路,本申请实施例还提供相应的活体人脸检测装置,如图3所示。
图3为本申请实施例提供的活体人脸检测装置结构示意图,具体包括:
检测模块301,用于实时采集视频图像,并在所述视频图像中检测人脸图像;
生成模块302,用于根据所述视频图像中人脸图像的运动姿态,生成所述人脸图像的三维人脸模型;
判断模块303,用于判断所述运动姿态和所述三维人脸模型是否符合预设结果,若是,则确定所述人脸图像对应的目标为活体人脸,否则,确定所述人脸图像对应的目标不为活体人脸。
所述装置还包括:
提示模块304,用于在所述生成模块302根据所述视频图像中人脸图像的运动姿态,生成所述人脸图像的三维人脸模型之前,当所述检测模块301检测到人脸图像时,发出动作提示,以提示所述人脸图像对应的目标执行所述动作提示对应的动作。
所述动作包括头部动作和面部动作,所述头部动作包括向左摇头动作、向右摇头动作、抬头动作、低头动作中的至少一种,所述面部动作包括眨眼动作、张嘴动作、皱眉动作中的至少一种;
所述提示模块304具体用于,在所述头部动作和所述面部动作中,按照预设策略选择n个动作,并发出与选择的n个动作对应的动作提示,其中,n为正整数。
所述生成模块302具体用于,对所述人脸图像中的关键像素进行定位,其中,所述关键像素包括所述人脸图像中的眼睛、鼻子、嘴、眉毛部位的像素,根据所述视频图像中人脸图像的运动姿态,跟踪所述关键像素的图像坐标,根据在跟踪过程中,所述关键像素的图像坐标的变化状态,生成所述人脸图像的三维人脸模型。
所述生成模块302具体用于,根据在跟踪过程中,所述关键像素的图像坐标的变化状态,实时确定所述人脸图像中的各像素的光流值,并实时确定各关键像素的光流值之和,在指定时间内,当所述光流值之和不增大时,根据各关键像素的光流值,生成所述人脸图像的三维人脸模型。
所述生成模块302具体用于,将各关键像素的光流值转换为深度坐标值,根据各关键像素的深度坐标值和图像坐标,生成所述人脸图像的三维人脸模型。
所述判断模块303具体用于,确定与发出的动作提示对应的关键像素,判断确定出的关键像素在指定时间内的位移值是否在预设取值区间内,若是,则确定所述运动姿态符合预设结果,否则,确定所述运动姿态不符合预设结果。
所述判断模块303具体用于,确定所述三维人脸模型与预设三维模型之间的欧氏距离,判断所述欧氏距离是否小于预设距离阈值,若是,则确定所述三维人脸模型符合预设结果,否则,确定所述三维人脸模型不符合预设结果。
具体的上述如图3所示的装置可以位于服务器上。
本申请实施例提供一种活体人脸检测方法及装置,该方法服务器实时采集视频图像,并在视频图像中检测人脸图像,然后,根据视频图像中人脸图像的运动姿态,生成该人脸图像的三维人脸模型,再判断该运动姿态和生成的三维人脸模型是否符合预设结果,若是,则确定该人脸图像对应的目标为活体人脸,否则,确定该人脸图像对应的目标不为活体人脸。通过上述方法,服务器在执行基于人脸匹配的身份认证过程之前,可先对目标进行活体人脸检测,仅当目标被确定为活体人脸时才执行身份认证过程,这样的话,即使攻击者想利用合法用户的照片、录制视频或是蜡像冒充该合法用户,由于照片或蜡像并不能执行服务器发出的动作提示对应的动作,且根据录制视频无法生成合理的三维人脸模型,因此,攻击者使用的冒充方式并不能通过的上述活体人脸检测方法的验证,进而,攻击者也无法通过身份认证,提高了身份认证结果的可靠性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。