前言
论文地址:https://arxiv.org/pdf/1708.05234.pdf.
有效的人脸检测模型往往在计算上是令人望而却步的。为了在CPU上实现实时速度,同时保持高性能应对这一挑战,FaceBox,在速度和准确性方面都具有优越的性能。它由快速消化卷积层(RDCL)和多尺度卷积层(MSCL)组成。RDCL的设计目的是让FaceBox在CPU上实现实时速度。MSCL的目标是丰富接受场,并将锚分散在不同的层上,以处理不同尺度的面孔。此外,我们还提出了一种新的锚点加密策略,使得不同类型的锚点在图像上具有相同的密度,显著提高了小人脸的召回率。
一、Introduction
- 杂乱背景中人脸的大视觉变化要求人脸检测器准确地解决复杂的人脸和非人脸分类问题;
- 对可能的人脸位置和人脸大小的大搜索空间进一步对时间效率提出了要求。
这两个要求是相互冲突的,因为高精度的人脸检测器往往计算昂贵。因此,如何在保证实时性的同时保持较高的性能,是CPU设备上实用化的人脸检测器尚待解决的问题之一。
基于级联CNN的方法存在三个问题:
- 其速度与图像上的人脸数量呈负相关。随着人脸数目的增加,速度会急剧下降;
- 基于级联的检测器分别对每个分量进行优化,使得训练过程极其复杂,最终的模型不是最优的;
- 对于VGA分辨率的图像,它们在CPU上的运行效率约为14FPS,不足以达到实时速度。
本文的主要贡献可以概括为四个方面:·
- 设计了快速消化的卷积层(RDCL),使人脸检测能够在CPU上实现实时速度;·
- 引入了多尺度卷积层(MSCL),通过丰富感受场和分层离散化锚点来处理不同尺度的人脸。·
- 提出了一种新的锚点增密策略来提高小人脸的召回率;·
- 进一步提高了在AFW、Pascal Face和FDDB数据集上的性能。
二、FaceBoxes
1.快速消化卷积层(RDCL)
大多数基于CNN的人脸检测方法通常都受到时间开销的限制,特别是在CPU设备上。更确切地说,当输入、内核和输出较大时,CPU的卷积运算非常耗时。我们的RDCL旨在以适当的内核大小快速缩小输入空间大小,同时减少输出通道的数量,使FaceBox在CPU设备上达到实时速度,如下所示:
- 缩小输入的空间大小:为了快速缩小输入的空间大小,我们的RDCL为其卷积和汇聚层设置了一系列大跨度。如图1所示,Conv1、Pool1、Conv2和Pool2的步长分别为4、2、2和2。RDCL的总步长为32,这意味着输入空间大小减少了32倍。
- 选择合适的核大小:一个网络中前几层的核大小既要小,以加快速度,又要足够大,以减轻空间尺寸减小带来的信息损失。如图1所示,为了保持高效和有效,我们分别为Conv1、Conv2和所有Pool层设置7×7、5×5和3×3的内核大小。
- 减少输出通道数:我们利用C.ReLU激活功能(如图2(A)所示)来减少输出通道数。C.ReLU的动机来自CNN的观察,即较低层中的滤波器形成对(即具有相反相位的滤波器)。根据这一观察结果,C.ReLU只需在应用REU之前将负输出连接起来,就可以将输出通道数增加一倍。使用C.ReLU可以显著提高速度,而精确度几乎没有下降。
2.多尺度卷积层(MSCL)
该方法基于RPN,它是在多类别目标检测场景中提出的一种与类别无关的算法。对于单类别检测任务(例如,面部检测),RPN自然是针对所涉及的唯一类别的检测器。然而,作为一种独立的人脸检测器,RPN并不能获得具有竞争力的性能。我们认为,这种不令人满意的表现来自两个方面。首先,RPN中的锚点只与最后一卷积层相关联,该卷积层的特征和分辨率太弱,无法处理各种大小的面片。其次,锚定关联层负责检测相应尺度范围内的人脸,但它只有一个感受域,不能匹配不同尺度的人脸。为了解决上述两个问题,我们的MSCL从以下两个维度进行了设计:
- 沿着网络深度维度进行多尺度设计。如图1所示,我们设计的MSCL由几层组成。这些图层的大小逐渐减小,形成了多比例尺的要素地图。与[21]类似,我们的默认锚点与多尺度特征地图(即Inception3、Conv3 2和Conv4 2)相关联。这些层作为沿网络深度维度的多尺度设计,将锚以不同的分辨率离散在多个层上,以自然地处理不同大小的面。
- 沿着网络宽度维度进行多尺度设计。为了学习不同尺度脸部的视觉模式,锚定关联层的输出特征应该对应于各种大小的接受场,这可以通过Inception模块容易地实现。Inception模块由多个具有不同内核的卷积分支组成。这些分支作为网络宽度维度上的多尺度设计,能够丰富接受领域。如图1所示,MSCL中的前三层是基于Inception模块的。图2(B)说明了我们的Inception实现,这是一个经济高效的模块,可以捕获不同规模的面孔。
3.Anchor densification strategy
如图1所示,我们对默认锚点(即正方形锚点)施加1:1的纵横比,因为面部框近似为正方形。Inception3层的锚定比例为32、64和128像素,Conv32层和Conv4 2层的锚定比例分别为256和512像素。
图像上锚点的平铺间隔等于相应锚点关联层的步幅大小。例如,Conv3 2的步幅大小为64像素,其锚点为256×256,表示输入图像上每64个像素就有256×256个锚点。我们定义锚的平铺密度(即密度)如下:
A
d
e
n
s
i
t
y
=
A
s
c
a
l
e
/
A
i
n
t
e
r
v
a
l
(
1
)
A_{density}= A_{scale}/A_{interval} \qquad\qquad \qquad\qquad(1)
Adensity=Ascale/Ainterval(1)
这里,
A
s
c
a
l
e
A_{scale}
Ascale是锚的大小,
A
i
n
t
e
r
v
a
l
A_{interval}
Ainterval是锚的平铺间隔。默认锚点的平铺间隔分别为32、32、32、64和128。根据
E
Q
U
(
1
)
EQU(1)
EQU(1)的说法。对应的密度为1、2、4、4、4,不同尺度的锚杆之间存在明显的拼贴密度不平衡问题。与大锚点(128×128、256×256和512×512)相比,小锚点(32×32和64×64)太稀疏,导致小人脸召回率较低。
为了消除这种不平衡,我们提出了一种新的锚固增密策略。具体地说,为了将一种类型的锚致密n次,我们在一个接受场的中心周围均匀地平铺一个数目=
n
2
n^{2}
n2个锚,而不是只在该接受场的中心平铺一个锚来预测。图4给出了一些例子。在本文中,为了提高小锚点的平铺密度,我们的策略是将32×32个锚点加密4倍,将64×64个锚点加密2倍,从而保证不同尺度的锚点在图像上具有相同的密度(即4),使得不同尺度的人脸可以匹配几乎相同数量的锚点。
总结
快速消化卷积层(RDCL) 目的是为了加速网络。
多尺度卷积层(MSCL)感觉没啥用啊,inception结构更像是通过多分支结构来补充快速消化卷积层(RDCL) 丢失的信息。RDCL快速下采样丢失了大量信息。inception结构通过多分支扩充频域信息,增加neck部分的信息量。
核心个人认为是Anchor densification strategy效果显著。