通过对目前可以找到的开源活体检测项目进行调研后,找到一个合适的工程,该工程使用的是caffe进行建模,主要使用的是opencv来进行活体检测。目前有许多活体检测方法,包括:
- 纹理分析(Texture analysis),包括计算面部区域上的局部二进制模式(LBP)并使用SVM将面部分类为真脸或假脸;
- 频率分析(Frequency analysis),例如检查面部的傅里叶域;
- 可变聚焦分析(ariable focusing analysis),例如检查两个连续帧之间的像素值的变化;
- 基于启发式的算法(Heuristic-based algorithms),包括眼球运动、嘴唇运动和眨眼检测;
- 光流算法(Optical Flow algorithms),即检查从3D对象和2D平面生成的光流的差异和属性;
- 3D脸部形状,类似于Apple的iPhone脸部识别系统所使用的脸部形状,使脸部识别系统能够区分真人脸部和其他人的打印输出的照片图像;
--------------------------------------------------------------------------------------------------------------------------------------
我们目前所找到的工程采用图像处理中常用方法——卷积神经网络(CNN)来构建一个能够区分真实面部和假面部的深度神经网络(称之为“LivenessNet”网络),将活体检测视为二元分类问题。侧重于区分真实面孔与屏幕上的欺骗面孔。且该算法可以很容易地扩展到其他类型的欺骗面孔,包括打印输出、高分辨率打印等。
目前在跑通该项目的过程中已经可以很熟练的进行数据采集,数据训练,以及效果展示,该模型的特点是轻便,对数据的要求不高,很容易采集到测试训练数据,很轻便易与粘合,适合后续开发。