目的
自从深度学习及 CNN 神经网络在图像识别技术的广泛应用,再加上 Google 开源深度学习框架 TensorFlow后,人脸识别技术迅速发展,甚至已经超过人眼识别的能力。但是,随之而来出现了安全性问题,照片攻击、视频攻击等各种攻击手段层出不穷。
因此为了更安全的使用人脸识别技术,增加攻击者的破解难度,需要在前端加入安全措施。主要安全措施有:
- 动作检测,即通过随机动作,判断目标人物"是活的
- 连续性检测,即通过视频流连续检测,判断目标人物"是活的"
- 纹理检测,即通过图片本身的纹理判断是否为二次拍摄,从而证明目标人物"是活的"
本文主要借助开源Google Lens,从动作检测和连续性检测两个方面实现活体检测。
Google Lens
2017年5 月17日,Google I/O开发者大会发布Google Lens。它是基于图像识别和OCR技术的人工智能应用,能够让机器学会“看图说话”。在I/O大会放出的视频演示中,拥有Google Lens的智能手机,可以通过对视觉对象的扫描,识别和获得详细信息。
基于Google Lens的移动端活体检测实现
基于Google Lens 的框架Mobile Vision ,https://developers.google.com/vision/
按照实现流程分,主要有人脸检测,特征点提取,动作检测和连续性检测。
人脸检测
通过集成Mobile Vision,调用GMVFaceFeature 接口实现图片中的face detection
特征点提取
调用GMVFaceFeature 接口提取人脸的11个特征点,分别代表眼睛、耳朵、鼻子、脸颊和嘴巴等主要人脸五官
动作检测
主要实现眨眼、微笑、张嘴、左转、右转、抬头、低头、左摆、右摆等9个动作。其中眨眼和微笑Google框架中已经判断,其它动作需要结合11个特征点通过实际场景计算来
连续性检测
通过实时抓取移动端的视频帧数,通过调用GMVFaceFeature 接口实现face detection
实现总结
通过集成Google Lens的图像识别框架,实现了移动端活体检测。
难度
- 主要在视频流如何转换成Google Lens支持的图片格式
- 另外通过特征点判断是哪个动作,需要结合实际环境计算阀值,阀值待验证
性能
性能非常好,能实时处理移动端摄像头 60FPS的帧率
大小
集成后App小于10M,基本能满足App集成要求。
下一步计划
通过纹理检测,进一步提高人脸识别的安全性