原作者:ke
 
1.优图:人脸检测与跟踪解决方案

  取景框中的人脸跟踪在传统相机行业算是比较成熟的技术,利用简单的眼睛定位和硬件加速可以快速的定位人脸并进行跟踪,虽然准确度有限,在那个时代也算是一个亮点,如今进入手机时代,卡片机几近消亡,取而代之的是各种拍照类的app,但这些app似乎专注于其他方面,并没有将这个非常好的用户体验继承下来,即使是以自拍为卖点的相机也仅仅只有人脸检测,而没有跟踪功能,用户体验大打折扣。优图团队此前推出了自己的人脸检测器,对于静态图已经有了很好的效果,但对于视频类的应用来说速度仍然不够理想,针对这些缺憾,也为了使用户体验更好,优图团队结合了人脸检测和人脸跟踪技术,推出了人脸检测+跟踪的解决方案,可以实时的在视频中检测和跟踪人脸,并运用到最新的水印相机中,在取景器窗口中进行人脸检测和跟踪并展示给用户。

2. 主创团队--QQ空间优图团队

3.产品创意

  美图秀秀的美颜相机,百度的百度魔拍以及POCO的美人相机都是人气很高的相机类产品,也是以自拍和美化为主打的APP,他们仅仅带有简单的人脸检测器,采用逐帧检测的方法来寻找人脸然后展示。

 
  根据不同的运行参数和设备,普通的人脸检测在手机端运行会耗时50ms到3s不等,一般在400ms左右,使用人脸检测的方法跟踪仅能达到2.5fps,跟踪到的人脸也是几百毫秒之前的位置,如果在这过程中人脸有移动,则画出的框并没有框到人脸;另外,由于检测速度太慢,框无法平滑过渡,会出现明显的跳跃,用户体验很差。针对这些问题,优图团队在水印相机中使用了最新的人脸检测和跟踪技术,达到实时跟踪的效果。

4. 创新点具体描述

  为了在取景框中能标记用户的人脸,给用户更好的体验,水印相机在取景框中加入了人脸跟踪功能,可以实时的跟踪人脸,效果远超竞品,体验地址:xiangji.qq.com。在使用水印相机的美容模块时,可以认为取景框中一定会有人脸,这时如果能在取景框中给出用户人脸的位置,给用户一个积极的响应,用户会有更好的体验。人脸跟踪功能就是在用户自拍时在取景框中持续的使用框来提示用户人脸的位置。
 

图1 不带跟踪的取景框和带跟踪的取景框对比


  人脸跟踪的基础是人脸检测,必须先检测到人脸才谈得上跟踪,为此我们开发了自己的人脸检测器,在和系统自带的人脸检测器效果相当的情况下,速度有大幅提高。

  由于人脸检测在移动端仍然无法达到30fps的效果,所以在动态图中结合了人脸检测和人脸跟踪,以达到实时的效果。针对不同的使用场景(自拍or非自拍),我们使用不同的人脸检测策略,以提升检测的质量。对于自拍,一个合理的假设是场景中只有一个人,所以可以使用最大脸检测方案,在保证效果的前提下提高检测速度。对于非自拍,使用加速过的人脸检测器配合人脸跟踪,同样达到了实时跟踪的效果。


5.技术介绍


  物体跟踪是计算机视觉的一个基本问题,设计一个准确度高,速度快,对于光照、大小、旋转不变的方法一直是一个难点,对于长时间的跟踪,“漂移”也是一个大的问题。基于压缩感知的跟踪是最近比较流行的一种方法,下图是一个流程图

图2 人脸跟踪流程


  首先对正样本和负样本进行采样,并提取泛化的haar特征,由于haar特征能够非常好的表达人脸,所以这个方法特别适合跟踪人脸;然后利用随机投影矩阵对haar特征进行压缩,基于Johnson-Lindenstrauss定理和压缩感知理论,满足一定规则的随机矩阵能够在保留主要信息的情况下对特征进行降维,更为关键的是这个矩阵是目标无关的,所以可以预先定义好。然后训练贝叶斯分类器并用来分类下一帧,如此循环往复。

6.工程化


  跟踪需要一个初始化的位置,显然这个初始化的位置需要由人脸检测提供;同时,为了解决“漂移”问题,新人脸的进入和旧人脸的消失问题,需要周期性的进行人脸检测并重新初始化跟踪器,所以我们使用了双线程,一个线程周期性的做人脸检测,并初始化跟踪器,另一个线程则持续跟踪人脸。


  虽然跟踪模块速度已经比检测快不少,但是速度仍然无法满足要求,尤其是CPU还要处理其他任务的情况下,可以看到跟踪仍然有延迟,所以我们对其进行了SIMD指令集的优化,达到了实时的效果。