1. 简介
随着iphoneX的刷脸解锁,支付宝的刷脸支付,刷脸的时代已经到来。在通过人脸识别进行一系列的后续操作中,其中一个关键环节为活体检测。但是目前市场上活体检测算法不够完善,并且开源方面没有很好的实现,我们针对目前用户的需求,开源了一个活体检测的sdk。
我们采用基于人脸landmark的活体配合活体检测。这其中涉及到多个人脸相关的知识,包括:1.人脸检测;2.计算人脸landmark;3.根据landmark的人脸姿态估计;4.人脸表情识别(眨眼,张嘴等);5.合理的配合指令设计。
2. 开发步骤
2.1. 人脸检测
- 大部分人脸识别中,只针对一张人脸,这里我们优化的mtcnn完成人脸检测。原始的mtcnn算法不够高效,参考mtcnn优化提供的方式,用卷积替代pooling,进一步优化人脸检测的速度。
2.2. 人脸landmark计算
- 开源的算法已经有很多,包括3000fps,ert,SDM,TCDCN等,但是这些算法在精度、速度上或者模型体积上不能满足我们的需求,我们设计了一个人脸关键点拟合的网络,完成人脸68个关键点的计算,相关网络可参考:face-landmark
2.3. 人脸姿态估计
- 人脸姿态估计,顾名思义,给定一张人脸图像,确定其姿态,姿态由什么构成呢?很简单(pitch,yaw,roll)三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度。
目前,人脸姿态估计有多种方法,可以分为基于模型的方法,基于表观的方法,基于分类的方法。我之前做过 这方面的调研,调研的结果很明显,基于模型的方法得到的效果最好,因为其得到的人脸姿态是连续的,而另外两种,是离散的,并且很耗时间。基于模型的估计方法的前提是,手头必须具备两样东西,一个是人脸特征点(眼镜,嘴巴,鼻子等处的像素位置),另外一个,是需要自己制作一个3维的,正面的“标准模型”。算法最重要的还是思想,其余诸如流程什么的,都是实现思想的手段而已。人脸姿态估计的思想:旋转三维标准模型一定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽量重合。这时候我们脑海中就应该浮现出一种诡异的场景:在幽暗的灯光中,一个发着淡蓝色光芒的人皮面具一点点的“自我调整”,突然一下子“完美无缺”的“扣在了你的脸上”。这就是人脸姿态估计的思想。参考:人脸姿态估计
2.4. 表情估计
- 眨眼以及张嘴等,相关研究可参考,我们基于landmark提供的五官位置,训练一个表情分类器,完成表情估计。
2.5. 合理的指令设计
- 基于我们已经提供的角度、表情的估计算法,我们设计几种合理的配合指令,并且随机下发,进一步防止被视频人脸欺骗。
3.后记
- 活体检测一直以来都是人脸识别的关键步骤,也是一直困扰科研工作者的一个问题,尽管经过了复杂的算法设计,但是在活体检测方面,同样存在着被欺骗的可能,需要进一步研究。
- 开源实现
- 北京智云视图科技有限公司