论文地址: BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs
1. 简介
本文提出了一种高效的轻量级人脸检测框架BlazeFace应用于移动端实时人脸检测,在旗舰设备上FPS达到了200~1000,这种亚毫秒级别的检测方法能够应用在诸多需要快速准确的识别出人脸区域的任务中,例如2D/3D面部关键点识别与几何评估,面部特征和表情分类以及面部区域分割等。论文的主要贡献有两方面,一是推断速度:
-
紧凑轻量的卷积神经网络用作特征提取器
-
GPU友好型的anchor机制(对GPU的高效利用)
二是预测质量:
- 一种能够替换非极大值抑制策略的有效方法
2. 模型的架构和设计
BlazeFace的设计主要有下面四个衡量的因素
增加感受野
尽管包括MobileNet在内的诸多网络都编好 3 × 3 3 \times 3 3×3卷积,但是观察到深度可分离卷积的计算量主要集中在点卷积部分,也就是说通过采用核尺寸更大的卷积操作扩大感受野,计算成本相对较低。
在 s × s × c s \times s \times c s×s×c的输入张量上,应用可分离卷积操作,其中, k × k k \times k k×k的depthwise卷积包括 s 2 c k 2 s^2ck^2 s2ck2次乘加运算,后续的 1 × 1 1 \times 1 1×1的pointwise卷积用进行 s 2 c d s^2cd s2cd次乘加运算(d是通道数),是depthwise阶段的 d k 2 \frac{d}{k^2} k2d倍。
实践中,在iPhone X上,一个16位浮点运算的 3 × 3 3\times3 3×3深度卷积处理 56 × 56 × 128 56\times56\times128 56×56×128的张量,需要花费0.07ms,后续的点卷积操作需要0.3ms(不是理论值,是因为内存读取等因素的影响)。
基于这个观察论文采用 5 × 5 5\times5 5×5的卷积,这样使得感受野达到指定大小所需的bottleneck数量大大减少,得到的BlazeBlock有下图所示的两种结构:
特征提取器
特征提取器结构如下图所示:
Anchor机制
基于Anchor的目标见测器需要固定的先验框或者是提议机制,为此,有一系列的参数需要预测,用于调整先验框的位置。
捕获不同尺度的目标的常用方式是设定不同分辨率的anchors的方式,典型的SSD模型会使用 1 × 1 , 2 × 2 , 4 × 4 和 8 × 8 1\times1,2\times2,4\times4和8\times8 1×1,2×2,4×4和8×8的特征图。然而金字塔池化网络PPN架构的成功表明。在特征图到达某一个分辨率的时候,会有大量的冗余计算。
并且相对于CPU,GPU一个明显的特点就是进行每一层运算的时候会有一个显著的固定成本,对于特征图分辨率较小的层来说这个成本相对较大。
基于此,论文特征提取器只下采样至
8
×
8
8\times8
8×8的特征图尺寸,采用包含
8
×
8
8\times8
8×8特征图上每个像素6个Anchor方式替换包含2个Anchor的
2
×
2
,
4
×
4
和
8
×
8
2\times2,4\times4和8\times8
2×2,4×4和8×8的特征图。基于人脸的特征,使用1:1的Anchor,如下图所示:
后处理机制
由于论文只下采样至 8 × 8 8\times8 8×8,给定目标的重叠Anchor显著增加,典型的非极大值抑制策略中,只有一个Anchor被选中作为算法的输出。这样的模型用在视频人脸预测时,预测倾向于在不同的Anchor之间波动,导致时间序列上检测框一直在抖动。
为了减弱这一问题的影响,论文采用了一种混合策略,以重叠框的加权平均值来估计边界框的回归参数。
论文通过连续输入目标轻微偏移的图像来统计框抖动的数量以观察模型输出是如何被影响的。在应用这一策略后,抖动的数量大幅下降。
3.实验
a.前置摄像头人脸检测效果
b.推断速度
c.回归参数预测质量
4.总结
该论文提出的方法应用于特定目标的检测(不是识别),提出几处针对性的修改,能够及其快速的检测出人脸区域,应用在其他一些任务的预处理中,比如分割,表情识别等等。论文改进基于的几个观察都有很好的借鉴意义。
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]