php活体检测,人脸门禁系统中活体检测的必要性

人脸识别技术日趋成熟,商业化应用愈加广泛。为防止恶意者伪造或窃取他人的人脸特征用于身份认证,人脸识别系统需具备活体检测功能,以判断提交的人脸特征是否来自有生命的真实个体。

php活体检测,人脸门禁系统中活体检测的必要性_第1张图片

人脸识别技术日趋成熟,商业化应用愈加广泛。然而,人脸却极易通过照片、视频,甚至仿真模具等方式进行复制,通过提前准备这些“道具”,恶意者试图在识别过程中进行伪装,以图通过验证,达到非法入侵的目的。为防止恶意者伪造或窃取他人的人脸特征用于身份认证,人脸识别系统需具备活体检测功能,以判断提交的人脸特征是否来自有生命的真实个体。

人脸活体检测的基本原理

人脸门禁的基本功能是人脸验证(Face Verification),而活体检测属于人脸防伪技术(Face Anti-Spoofing)。人脸验证和人脸防伪,两种技术各有侧重。

人脸验证:人脸验证是判断两个人脸图是否为同一个人的算法,即通过人脸比对获得两个人脸特征的相似度,然后与预设的阈值比较,相似度大于阈值,则为同一人,反之则不同。这是近年来一个非常热门的研究方向,也产生了一大批算法模型和损失函数。

人脸防伪:用户刷脸的时候,算法要甄别这张脸是不是真人活体脸,而对于照片、视频和假体面具等攻击行为,算法应该予以拒绝。

1、照片攻击与活体检测

照片是最简单的攻击方式,利用社交媒体,例如微信朋友圈或微博,可以轻而易举地获得相关人员的照片。但照片毕竟是静态的,不能做出眨眼、张嘴、转头等动作。利用这个特点,活体检测系统可以下达几个动作指令,通过对被检测人员的动作符合性判断,就可以实现交互式的动作活体检测。

为了对付动作活体检测,有攻击者改进照片伪装,按真人尺寸打印另外一个人的照片,在照片的眼睛和嘴巴部位镂空,贴在脸上,露出眼睛和嘴巴。按照活体检测系统的指令,执行眨眼、张嘴、转头等动作。但是,这种伪造的效果与真实人脸实际的运动情况相去甚远,很容易被检测算法识别。

2、视频攻击与活体检测

视频攻击则是将另一人的动作录成视频,对着检测系统播放。但是,播放器的屏幕通过摄像头成像,其人脸的画面与真人也存在较大差别,最明显的就是存在摩尔纹、反光、倒影、画质模糊、失真等特点,十分容易甄别。更何况,播放的视频与动作指令也存在不合拍的问题。

3、假体攻击与活体检测

假体攻击就是做一个与真人相似的立体面具,这种方式解决了照片和视频播放的平面性缺陷。假体有很多种,最普通的是塑料或者硬纸做成的面具,成本低廉,但材质相似度极低,用普通纹理特征就可以识别出来。高级一点的有硅胶、乳胶以及3D打印的的立体面具,这类面具的表观与皮肤接近,但材料的表面反射率和真实人脸还是存在差异,因此在成像上仍然有差别。

人脸门禁活体检测的常用方法

动作活体检测的方式具有很高的安全性,但要求用户配合做指定动作,因此实际用户体验较差。为了实现无感通行的效果,人脸门禁很少采用响应指令的动作活体检测,通常基于图像和光学效果的差别实施活体甄别。

1、普通摄像头活体检测

虽然没有配合指令的动作响应,但真实的人脸也不是绝对静止的,总有一些微表情的存在,比如眼皮和眼球的律动、眨眼、嘴唇及其周边面颊的伸缩等。同时,真实人脸与纸片、屏幕、立体面具等攻击媒介的反射特性不同,所以成像也不同。宇视配合基于摩尔纹、反光、倒影、纹理等特征的检测,检测系统可以轻松的对付照片、视频、假体的攻击。

利用特定的某种物理特征,或多种物理特征的融合,我们可以通过深度学习训练神经网络分类器,以区分是活体,还是攻击。活体检测中的物理特征主要分为纹理特征、颜色特征、频谱特征、运动特征、图像质量特征,此外,还包括心跳特征等。纹理特征包括很多,但最主流的是LBP、HOG、LPQ等。

颜色特征除了RGB之外,学术界发现HSV或YCbCr具有更好的区分活体非活体的性能,被广泛用于不同的纹理特征上。

频谱特征的原理是活体、非活体在某些频段具有不同的响应。

运动特征提取目标在不同时间上的变化,是一个有效的办法,但通常耗时较久,达不到实时的要求。

图像质量特征有很多描述方式,比如反射、散射、边缘或形状等。

2、红外摄像头活体检测

红外人脸活体检测主要是基于光流法而实现。光流法是利用图像序列中的像素强度数据的时域变化和相关性来确定各像素位置的“运动”,即从图像序列中得到各个像素点的运行信息,采用高斯差分滤波器、LBP特征和支持向量机进行数据统计分析。

同时,光流场对物体运动比较敏感,利用光流场可以统一检测眼球移动和眨眼。这种活体检测方式可以在用户无配合的情况下实现盲测。

从上述两张图的对比可以看出,活体人脸的光流特征显示为不规则的向量特征,而照片人脸的光流特征则是规则有序的向量特征,以此即可区分活体和照片。

3、3D摄像头活体检测

通过3D摄像头拍摄人脸,获取相应的人脸区域的3D数据,基于这些数据,选择最具有区分度的特征来训练神经网络分类器,最终利用训练好的分类器区分活体和非活体。特征的选择至关重要,我们选择的特征既包含了全局的信息,也包含了局部的信息,这样的选择有利于算法的稳定性和鲁棒性。

3D人脸活体检测分为以下3个步骤:

首先,提取活体和非活体人脸区域的N个(推荐256个)特征点的三维信息,对这些点之间的几何结构关系进行初步的分析处理;

其次,提取整个人脸区域的三维信息,对相应的特征点做进一步的处理,再采用协调训练Co-training的方法训练正负样本数据,利用得到的分类器进行初分类;

最后,利用以上两个步骤所提取的特征点进行曲面的拟合来描述三维模型特征,根据曲面的曲率从深度图像中提取凸起区域,对每个区域提取EGI特征,然后利用其球形相关度进行再分类识别。

你可能感兴趣的:(php活体检测)