人脸检测: FaceBoxes

《FaceBoxes: A CPU Real-time Face Detector with High A ccuracy》

原文链接:https://arxiv.org/abs/1708.05234

Caffe 框架实现: https://github.com/lippman1125/faceboxes_lqy
Pytorch 框架实现:https://github.com/zisianw/FaceBoxes.PyTorch

本文从题目可以看出主要是进行一个快速的人脸检测,最终文中给的速度是: CPU 上可以达到 20 帧/秒, GPU 上可以达到 125 帧/秒。

文中的主要要点是提出了 RDCL (Rapidly Digestes Convolutional Layers) 以及 MSCL(Multiple Scale Convolutional Layers),还有 anchor 致密化。

  • RDCL 通过快速降输入图片的分辨率,实现在 CPU 上的实时速度。
  • MSCL 通过利用来自不同层的 anchor 来增加感受视野,解决不同尺寸的人脸问题。
  • anchor 致密化则是来增加小脸的召回率。

下面对以上特点分别稍加展开介绍。

人脸检测: FaceBoxes_第1张图片

Rapidly Digested Convolutional Layers

在 CPU 上,当卷积层的输入,输出,卷积核尺寸都很大时,是很耗时的,所以这里本文的 RDCL 就是将输出的图片尺寸通过合适的卷积核尺寸快速收缩,以达到在 CPU 实时的速度。

主要设计思路如下:

    1. 如上图1,通过 7x7-s-4(Conv1)3x3-s-2(Pool1)5x5-s-2(Conv2)3x3-s-2(Pool2) 四层,快速将分辨率降到了原来的 1/32。
    1. 这里对前面 RDCL 部分卷积核尺寸的选择,首先应该尽可能的小来减少计算量,但是应为输入图片的尺寸会快速下降,卷积核又应该足够大学习足够的特征来减轻因为分辨率快速下降带来的影响,所以综合考虑,本文使用了 Conv1,Conv2 卷积核依次是 7x7,5x5, Pool 尺寸是 3x3 。
    1. 降低输出通道数。 这里文中用了 C.ReLU 激活函数来降低图片的输出通道。这里我的理解是如果是想最后输出 256 个通道, 使用 C.ReLU 的特性,卷积层的输出为 128个通道,经过 C.ReLU 以后输出的通道会自动翻倍,达到 256 个通道的输出效果,但是参数远比直接输出 256 个通道,或者通过额外的 1x1卷积层将 128 改变为 256 的少。 C.ReLU 结构如下。
人脸检测: FaceBoxes_第2张图片

Multiple Scale Convolutional Layers

这里主要是对 RPN 网络的思考与改进,首先 RPN 网络只采用了整个特征提取器的最后一层输出,这样对于不同尺寸的人脸特征是不够的,第二点就是用一系列的 anchor 一般都是去检测单一尺寸的人脸,对多尺寸的人脸就不使用了,因此文中做了下面两部分改进:

    1. 如图1,类似于 SSD 的思想,检测人脸使用了来自多层的特征, Inception3Conv3_2Conv4_2,这样不同分辨率的 anchor 就可以处理不同尺寸的人脸了。
    1. 网络结构中使用了 Inception 模块来增加网络的宽度,即同一层使用不同分辨率的卷积核,增加网络学习的感受野,也是为了更有效的学习同一张图片中不同尺寸的人脸。 Inception 模块如下图所示:
人脸检测: FaceBoxes_第3张图片

Anchor densification strategy

这里的致密化,主要是如图1左下角所示,Inception3 中使用的 anchor 尺寸是 32,64,128。 Conv3_2,Conv4_2 则分别是 256,512。 在网络学习过程中,32,64,这类的小尺寸 anchor 相较于较大的 128,256,512 更少,这样就会造成在小脸上的低召回率。为了消除这一现象,本文提出了 anchor 致密化的方法,围绕着每一个 anchor 的中心,将 32 的扩展成原来的 4 倍,64 的扩展为原先的 2 倍。

人脸检测: FaceBoxes_第4张图片

Experiment

主要是对不同方法在 CPU 上的运行速度做了对比,并且对文中的 3 大特点做了对比实验:

人脸检测: FaceBoxes_第5张图片

RDCL 主要就是将 C.ReLU 换成 ReLU; MSCL 主要是将 Inception 转成传统的 3x3 卷积层; anchor 致密 主要是用不用这个方法做了对比,可以看到致密性可以提高 1.1% 的性能。 Inception 也是增加了 1% 左右的 mAP。 RDCL 则更有效,虽然对网络性能降低了2%,但大大增加了网络的速度。

文中的结果图,还是很强的:

人脸检测: FaceBoxes_第6张图片

你可能感兴趣的:(论文,目标检测)