基于Google Lens的移动端活体检测实现

目的

自从深度学习及 CNN 神经网络在图像识别技术的广泛应用,再加上 Google 开源深度学习框架 TensorFlow后,人脸识别技术迅速发展,甚至已经超过人眼识别的能力。但是,随之而来出现了安全性问题,照片攻击、视频攻击等各种攻击手段层出不穷。

因此为了更安全的使用人脸识别技术,增加攻击者的破解难度,需要在前端加入安全措施。主要安全措施有:

  • 动作检测,即通过随机动作,判断目标人物"是活的
  • 连续性检测,即通过视频流连续检测,判断目标人物"是活的"
  • 纹理检测,即通过图片本身的纹理判断是否为二次拍摄,从而证明目标人物"是活的"

本文主要借助开源Google Lens,从动作检测和连续性检测两个方面实现活体检测。

Google Lens

基于Google Lens的移动端活体检测实现_第1张图片

2017年5 月17日,Google I/O开发者大会发布Google Lens。它是基于图像识别和OCR技术的人工智能应用,能够让机器学会“看图说话”。在I/O大会放出的视频演示中,拥有Google Lens的智能手机,可以通过对视觉对象的扫描,识别和获得详细信息。

基于Google Lens的移动端活体检测实现

基于Google Lens 的框架Mobile Vision ,https://developers.google.com/vision/
按照实现流程分,主要有人脸检测,特征点提取,动作检测和连续性检测。

人脸检测

基于Google Lens的移动端活体检测实现_第2张图片

通过集成Mobile Vision,调用GMVFaceFeature 接口实现图片中的face detection

特征点提取

基于Google Lens的移动端活体检测实现_第3张图片

调用GMVFaceFeature 接口提取人脸的11个特征点,分别代表眼睛、耳朵、鼻子、脸颊和嘴巴等主要人脸五官

动作检测

主要实现眨眼、微笑、张嘴、左转、右转、抬头、低头、左摆、右摆等9个动作。其中眨眼和微笑Google框架中已经判断,其它动作需要结合11个特征点通过实际场景计算来

连续性检测

通过实时抓取移动端的视频帧数,通过调用GMVFaceFeature 接口实现face detection

实现总结

通过集成Google Lens的图像识别框架,实现了移动端活体检测。

难度

  • 主要在视频流如何转换成Google Lens支持的图片格式
  • 另外通过特征点判断是哪个动作,需要结合实际环境计算阀值,阀值待验证

性能

性能非常好,能实时处理移动端摄像头 60FPS的帧率

大小

集成后App小于10M,基本能满足App集成要求。

下一步计划

通过纹理检测,进一步提高人脸识别的安全性

你可能感兴趣的:(基于Google Lens的移动端活体检测实现)