基于人脸特征点位移的生物识别照片仿冒攻击检测方法
技术领域
本发明属于生物识别技术领域,涉及针对人脸识别中的对照片仿冒攻击问题的判别的方法,尤其是一种基于人脸特征点位移的生物识别照片仿冒攻击检测方法。
背景技术
随着科技的发展和近几年生物识别技术领域内一些技术的逐渐成熟,生物识别(认证)技术逐渐被广泛应用。生物识别技术是指基于人体的一些生物特征,包括生理特征和行为特征来识别、判别个体身份的一种技术。目前该技术在应用方面主要依靠识别生理特征,通常包括人脸识别、指(掌)纹识别、虹膜识别等。生物特征的独特性早在唐代就已经被中国学者发现,近代西方学者对此也早有大量的研究。而真正将生物特征用于身份识别的系统出现于上世纪70年代早期。近年来,随着生物特征采集设备价格的下降和各种识别方法的日益成熟,生物识别(认证)技术逐渐融入了我们的日常生活中,在诸多领域,如系统登录、海关安检等领域有大量应用,例如我国已经启动了将公民指纹采集存储在二代身份证中的工作。
生物识别具有有效性及便利性的优势,然而假冒攻击一直是生物识别系统的一个重大威胁。例如,对于人脸识别系统,攻击者可以使用人脸照片来进行身份仿冒;而指纹、掌纹识别系统也可能使用硅胶或类似材质制作的胶模骗过系统。对此类的仿冒攻击,国外有很多学者进行过研究,也发表过一些文献资料,证明使用这些仿冒手段的确可以在一定程度上实现对系统的攻击。
随着生物识别技术的应用愈加广泛,系统安全性问题日益凸显出来,越来越被研究人员广泛关注。其中,一种解决此问题的思路是在获取人体生物样本的时候,同时要对生物样本进行活体检测。活体检测可以保证生物信息的获取对象是生物活体,从而可以抵御各种复制生物样本,例如照片、塑胶指模等对认证系统的攻击。对于活体检测技术的研究已经成为了生物识别领域中的一个重要方向,近年来,国内外在此领域有大量的研究工作和一些重要的学术会议,并且在一些相关领域的权威会议上都有相关的工作和论文发表。目前一些常用的技术包括基于活体的生理行为(例如识别人脸的眨眼动作)、活体的环境特征以及活体的生理信号(诸如皮肤汗液,EEG电平,热红外特性等)。然而这些方法又各有缺陷,有些需要通过大量复杂的运算,有些需要特殊设备支持,还有些方法用户体验不好,难以满足各种复杂场合的实际应用要求,易用性和可靠性方面有待提高。
发明内容
本发明的目地在于克服现有技术的不足,提出一种可靠性高、易于操作使用且成本低廉的基于人脸特征点位移的生物识别照片仿冒攻击检测方法。
本发明解决其技术问题是采取以下技术方案实现的:
一种基于人脸特征点位移的生物识别照片仿冒攻击检测方法,包括以下步骤:
步骤1、通过视频采集设备采集正常光照条件下包含人脸区域的视频信号,从视频信号中获取作为分类依据的特征向量;
步骤2、使用机器学习算法对特征向量进行分类判别,判断是三维立体人脸还是二维照片回放。
进一步,所述步骤1获取特征向量的方法包括以下步骤:
⑴使用视频采集设备采集视频或连贯图像画面序列,采样频率高于4fps;
⑵从视频或图像序列中识别人脸区域、定位人脸特征点,所述人脸特征点的数量在3~68个之间;
⑶选择两个相对比较固定的人脸特征点作为基准点;
⑷以基准点连接线的中心为原点,重新计算所有特征点坐标;
⑸将重新计算的特征点坐标向量化,形成分类依据的特征向量。
进一步,所述视频采集设备为普通摄像机、摄像头或工业摄像机。
进一步,所述视频或连贯图像画面的连续帧或画面长度为5~30。
进一步,所述步骤⑶两个相对比较固定的人脸特征点为双内眼角点、或者为左/右眼特征点群中心、或者左/右眉特征点群中心。
进一步,所述步骤⑸的具体实现方法为:首先将每一帧中所有将特征点坐标按固定顺序形成子向量,然后按照时间顺序将所有连续帧或图像所形成的全部子向量合并为一个向量,并做归一化处理,作为一段视频或连贯图像画面序列的特征。
进一步,所述归一化处理采用线性函数转换或统一减去均值后除以方差的方法;
所述线性函数转换方法采用如下公式实现:
x’=(x-MinValue)/(MaxValue-MinValue),
其中x’为归一化后向量元素的值,x为归一化前元素值,MinValue为向量中元素的最小值,MaxValue为向量中元素的最大值;
所述统一减去均值后除以方差采用如下公式实现:
x’=(x-means)/variance,
其中x’为归一化后向量元素的值,x为归一化前元素值,means为向量中元素的均值,variance为向量中元素的方差。
进一步,所述步骤2的具体实现方法包括以下步骤:
⑴从活动三维的人脸上采集特征向量作为网络训练的正样本,从静止的人脸上采集特征向量作为网络训练的负样本,使用上述正负样本为训练集训练机器学习分类器;
⑵使用训练好的机器学习分类器进行照片仿冒攻击检测,如果分类器最终输出为正样本,则认为相应的特征向量是从三维人脸样本上采集的;如果分类器最终输出为负样本,则认为相应的特征向量是从照片人脸上采集的,即判定为照片仿冒攻击。
进一步,所述活动三维的人脸是指视频中具有垂直轴向运动和水平轴向运动,并且为真实的具有三维特征的人脸;所述静止的人脸是指视频中为印刷照片或播放设备的屏幕播放的人脸照片,该照片或屏幕具有垂直轴向运动和水平轴向运动。
进一步,所述机器学习分类器为Boost分类器或GentleBoost分类器。
本发明的优点和积极效果是:
1、本发明采用图像处理技术和深度学习神经网络对生物样本进行活体检测,解决人脸识别系统中防止照片仿冒攻击问题,其通过对视频中人脸的特征点进行定位和跟踪,以人脸特征点的坐标位移为判别依据,从中提取可分类的特征向量,该特征向量具有明显的信息可以区分运动中的三维人脸和二维人脸照片;利用Boost分类器对特征向量进行分类,从而判别被测试样本是三维人脸还是二维的人脸照片。基于被测试样本在三维空间中运动时体现出的不同几何特征进行检测,具有较高的可靠性。
2、本发明仅使用普通的视频采集设备,即采用生物识别系统中的必需设备,不用对系统额外加入硬件设备,具有成本低廉且算法简单易于实现的特点,能够满足不同场合的实际要求。
附图说明
图1为本发明的检测原理图;
图2为本发明中所使用的人脸特征点模板图;
图3为本发明的三维立体人脸视频与特征点对照示意图;图中上左为三维立体人脸视频中第一帧,图中上右为三维立体人脸视频中第10帧,图中下左为上左对应的人脸特征点图,图中下右为上右对应的人脸特征点图;
图4为本发明的照片回放攻击人脸视频与特征点对照示意图;图中上左为照片回放攻击人脸视频中第一帧,图中上右为照片回放攻击人脸视频中第10帧,图中下左为上左对应的人脸特征点图,图中下右为上右对应的人脸特征点图。
具体实施方式
以下结合附图对本发明实施例做进一步详述。
本发明的设计思想为:三维物体(人脸)与二维物体(人脸照片)在空间中运动时,各特征点的运动轨迹具有很鲜明的区别。例如图2中标注的特征点30,当人脸在做垂直轴向运动时,三维立体人脸的特征点30在人脸轮廓整体区域内的相对坐标会有左右偏移的现象,而打印照片或屏幕显示的静态照片中人脸30号特征点坐标无此特性。实际上人脸中部所有的特征点都有类似30号特征点的特性,本发明就是利用这一特性区分三维立体人脸和二维照片。首先在视频或图像序列的每一幅图像中定位并跟踪图像中的人脸特征点;然后以选定的两个特征点为基准计算中心点坐标;以中心点为坐标原点,重新计算所有特征点坐标;将图像内所有选取的特征点坐标形成子向量,并将视频中所有帧对应的子向量合成为特征向量,最后归一化特征向量;使用上述特征向量训练Boost分类器,得到一个可区分三维立体人脸与照片人脸的分类器,利用该分类器可以判断输入样本是否为照片回放攻击。通过对比分别采自三维立体人脸与照片的视频信号,可以区分出三维立体人脸与非活体。
基于人脸特征点位移的生物识别照片仿冒攻击检测方法,如图1所示,包括以下步骤:
步骤1、以普通视频采集设备采集正常光照条件下包含人脸区域的视频信号,从视频信号中获取作为分类依据的特征向量。
在本步骤中,使用可见光频段的彩色或黑白视频采集设备采集视频或连贯图像画面序列,视频采集设备为普通摄像机、摄像头或工业摄像机。
从待测样本中提取特征向量的具体步骤如下:
a.从不低于4fps的彩色视频或图像序列中截取一定时长的信号,一般取连续5-30帧画面,建议选择10帧。选择过多的帧数能一定程度上提高识别的准确率,但会使运算量大大增加,选择过少的帧数将会对识别的准确率造成一定不良影响。实际上,大多数视频采集设备,如普通摄像头等,采样率一般在15fps-30fps之间。在后面的描述中,不再针对视频采样率进行讨论。
b.从视频或图像序列中,首先定位人脸位置,然后手工标注或采用领域内常用的经典算法,例如ASM(主动轮廓模型)/AAM(主动形状模型)等方法定位并跟踪人脸特征点。特征点模板使用领域内通用的68点模型。可以选择全部的68个特征点,也可根据需要选择其中一部分特征点进行跟踪。
c.选择人脸上相对固定的两个点作为基准点,一般选择左/右内眼角点(特征点39、42)、左/右外眼角点(特征点36、45)、左右鼻根点(特征点31、35)、左/右眉梢点(特征点17/26)、左眼区域(特征点42~47)/右眼区域(特征点36~41)的特征点坐标均值,或者左/右眉特征点群(特征点17~21,22~26)的特征点坐标均值作为基准点。以左右基准点的中点作为新坐标原点重新计算各特征点坐标。
其中,特征点坐标的均值计算方法为:
x’=(x1+x2+…+xn)/n y’=(y1+y2+…+yn)/n (1)
在(1)式中x’,y’为计算出的特征点坐标均值,x1~xn为一组特征点中所有点的x坐标,y1~yn为一组特征点中所有点的y坐标,n为一组特征点所包含的特征点个数。
其中,新坐标原点的计算方法为:
x0=(x1+x2)/2 y0=(y1+y2)/2 (2)
在(2)式中,x0,y0为新坐标原点坐标,x1,y1,x2,y2为上述两个基准点的x坐标和y坐标。
将所有特征点坐标值统一减去x0和y0,完成重新计算特征点坐标工作,这一工作称为基准化。
d.按照一定顺序将每一帧中所有特征点坐标向量化形成子向量,即:
Fi’={x1,y1,x2,y2,…xn,yn} (3)
在(3)式中,Fi’为每i帧图像对应的子向量,x1,y1为第一个特征点基准化后的坐标,xn,yn为第n个特征点基准化后的坐标。
将一段视频中所有的子向量连接为一个向量,即:
F’={F1’,F2’,…Fm’} (4)
在(4)式中,F1’为从第一帧图像中提取的子向量,m为视频的长度,即视频帧的总数。
对F’向量进行归一化处理,可采用线性函数转换或同一间去均值后除以方差。
设向量F’={f1,f2,…,fw},其中w为向量F’的维度,即向量F’中独立的元素个数。
线性函数转换:
fi’=(fi-MinValue)/(MaxValue-MinValue) (5)
在(5)式中fi’为归一化后向量元素的值,fi为归一化前元素值,MinValue
为向量中元素的最小值,MaxValue为向量中元素的最大值。
统一减去均值后除以方差:
fi’=(fi-means)/variance (6)
在(6)式中fi’为归一化后向量元素的值,fi为归一化前元素值,means为向量中所有元素的均值,variance为向量中元素方差。
由fi’重新组成的向量即为最终可以代办视频的特征向量F,即:
F={f1’,f2’,…fw’} (7)
步骤2、使用机器学习算法对特征向量进行分类判别,判断是三维立体人脸还是二维照片回放,具体实现方法为:
a.机器学习算法的训练部分:从活动三维的人脸上采集特征向量作为网络训练的正样本,这里“活动三维”是指视频中的人脸不是静止状态,具有垂直轴向运动和水平轴向运动,并且为真实的具有三维特征的人脸;从静止的人脸上采集特征向量作为网络训练的负样本,这里“静止”是指视频中的人脸为印刷照片或各种播放设备的屏幕中播放的人脸照片,照片或屏幕可具有垂直轴向运动和水平轴向运动,幅度不限;使用上述正负样本为训练集训练机器学习分类器;
b.使用训练好的机器学习分类器进行照片仿冒攻击检测:使用训练好的机器学习分类器进行照片仿冒攻击检测,如果分类器最终输出为正样本,则认为相应的特征向量是从三维人脸样本上采集的;如果分类器最终输出为负样本,则认为相应的特征向量是从照片人脸上采集的,即判定为照片仿冒攻击。
所述的分类器参数为:分类器类型可选择AdaBoost或GentleBoost,弱分类器个数为1000~5000个,训练权重系数为0.99~0.85之间;训练迭代次数大于2000次。
使用前面介绍的方法分别在真正的三维立体人脸和照片仿冒攻击人脸(印刷照片,屏幕播放照片等)上提取特征向量,作为正负样本对Boost分类器进行训练。正负样本按照随机顺序混合在一起形成训练样本,并加样本标签。在这里,正负样本各选用不少于1000个。
训练后分类器的输出即可对分类信号进行三维人脸/照片仿冒的分类判别。
实施例1
以人脸识别系统中照片仿冒攻击检测为例,帧频为15fps,选择连续10帧图像组成原始样本视频。具体检测方法为:
步骤1、特征向量的提取
首先由原始视频中使用相应方法确定样本在视频中的位置,例如复杂背景中的人脸检测等技术。从已经定位了人脸位置的视频中,定位并跟踪人脸特征点,根据定位并跟踪的特征点坐标提取特征向量。
上述提取可分类信号的具体步骤如下:
1、视频中识别对象初定位,如人脸识别中首先要进行复杂背景中人脸检测。
2、使用dlib所提供的方法对全部68个人脸特征点进行定位跟踪。该方法并非本专利的创新内容,具体操作方法可参照:
http://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv- python/。
3、选取特征点39、42作为基准点,根据公式(2)计算中心点坐标,并对所有特征点坐标进行基准化处理,根据(3)式将每一帧中的所有特征点坐标形成子向量,根据(4)式连续10帧的子向量形成一个向量,根据(5)式将该向量归一化,形成特征向量。
4、使用上述方法,从三维立体人脸视频中采集特征向量作为正样本,从照片人脸中采集特征向量作为负样本。采集时,真/伪人脸均不能静止不动,要有一定幅度的水平或垂直轴向转动,运动幅度不限,以能进行正常的特征点跟踪为准。
步骤2、使用Boost分类器对特征向量进行分类判别:
分类器的训练及使用分类器进行三维立体人脸检测:
1、分别采集正负样本各5000个,组成训练集,用此训练集训练Boost分类器。
本发明所选取分类器参数为:分类器类型为AdaBoost,弱分类器个数为2000个,训练权重系数为0.95;训练迭代次数为4000次。Boost分类器的训练方法为领域内通行方法,不属于本专利的保护范围。
上述训练Boost分类器,并用该分类器识别特征向量进而进行。
2、使用训练好的Boost分类器进行活体检测,具体步骤如下:
①视频中识别对象初定位,如人脸识别中首先要进行复杂背景中人脸检测。
②使用dlib所提供的方法对全部68个人脸特征点进行定位跟踪。该方法并非权利要求内容,具体操作方法可参照:
http://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv- python/。
③选取特征点39、42作为基准点,根据公式(2)计算中心点坐标,并对所有特征点坐标进行基准化处理,根据(3)式将每一帧中的所有特征点坐标形成子向量,根据(4)式连续10帧的子向量形成一个向量,根据(5)式将该向量归一化,形成特征向量。
④使用上述方法,从样本视频中采集特征向量作为测试样本。
⑤将测试样本输入训练好的Boost分类器。
在本实施例中,将图3中的样本作为输入,网络最终输出值为0.990,将图4中的样本作为输入,网络最终输出值为-0.911,因此本发明可以精确判别样本是否为三维立体人脸。
实施例2
将实施例1中的样本帧数改为5,将实施例1中Boost分类器类型更改为GentleBoost,弱分类器个数修改为1000,其他使用与实施例1相同的参数及方法,可实现同样的识别效果。
实施例3
使用与实施例1相同的视频采样频率及检测方法,更改实施例1里面的面部特征点个数,选择图2中特征点0~16,30,36~~47共30个特征点进行识别与跟踪,选择特征点36~41以及特征点42~47的坐标均值作为左、右基准点,其他使用与实施例1相同的方法及参数,同样可实现与实施例1相同的识别效果。
需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。