人脸检测模型FaceBoxes原理

FaceBoxes介绍

论文:FaceBoxes: A CPU Real-time Face Detector with High Accuracy
论文地址:https://arxiv.org/pdf/1708.05234.pdf
代码地址:https://github.com/sfzhang15/FaceBoxes caffee版;https://github.com/zisianw/FaceBoxes.PyTorch PyTorch版。

人脸识别是计算机视觉和模式识别的基础问题,在过去几十年取得了长足进步。但是由于计算量较大,在CPU上的实时检测一直没有很好的被解决。挑战主要来自于人脸探测器的两个要求:杂乱背景中人脸的大视觉变化要求人脸探测器准确地解决复杂的人脸和非人脸分类问题; 可能的面部位置和面部尺寸的大搜索空间进一步提出了时间效率要求。为了满足这两个相互矛盾的要求,人脸检测主要以两种方式进行了深入的研究。早期的方法是基于手动构建的特征,这种方法在CPU上的速度尚可,但是面对种类繁多的图像变体精确度不足。另一种是基于CNN的方法,它们的性能很好,但是在CPU上过于耗时,很难达到实时效果。 这两种方式各有优势。前者速度快,后者具有高精度。为了在速度和准确度上表现良好,一个自然的想法是结合这两种方法的优点。
因此,提出了基于CNN的级联方法,将CNN学习的特性放入级联框架中,以提高性能并保持高效。然而,在基于CNN的级联方法中存在三个问题:它们的速度与图像上的面部数量负相关。随着面部数量的增加,速度会急剧下降;基于级联的探测器分别优化每个组件,使训练过程极其复杂,最终模型次优;对于VGA分辨率图像,它们在CPU上的运行时效率约为14FPS,这不足以达到实时速度。
在本文中,受到Fast R-CNN中的RPN以及SSD中的多尺度机制的启发,我们开发了一种具有CPU实时速度的最先进的人脸检测器。具体来说,我们提出了一种名为FaceBoxes的新型人脸检测器,它只包含一个完全卷积的神经网络,并且可以进行端到端的训练。所提出的方法具有轻量且强大的网络结构,其由快速消化的卷积层(RDCL)和多尺度卷积层(MSCL)组成。 RDCL旨在使FaceBoxes能够在CPU上实现实时速度,而MSCL旨在丰富不同层上的感知域和离散锚点,以处理各种面部比例。此外,我们提出了一种新的锚点致密化策略,使输入图像上不同类型的锚点具有相同的密度,从而显着提高了小脸部的召回率。
因此,对于VGA分辨率图像,我们的人脸检测器在单个CPU内核上运行速度为20FPS,使用GPU运行速率为125FPS。更重要的是,FaceBoxes的速度在图像上的人脸数变化时是不变的。我们全面评估了这种方法,并在几个面部检测基准数据集上展示了最先进的检测性能,包括AFW,PASCAL面和FDDB。

RDCL:Rapidly Digested Convolutional Layers(快速消化的卷积层)

大多数基于CNN的面部检测方法通常受到时间成本的限制,特别是在CPU设备上。 更准确地说,当输入,内核和输出的大小很大时,CPU的卷积操作非常耗时。 我们的RDCL(Rapidly Digested Convolutional LayersRDCL)旨在通过适当的内核大小快速缩小输入空间大小,同时减少输出通道的数量,使FaceBox在CPU设备上达到实时速度。
具体措施如下:

  • 缩小输入的空间大小:为了快速缩小输入的空间大小,我们的RDCL为其卷积和池化层设置了一系列大步幅。Conv1、Pool1、Conv2和Pool2的步幅分别为4、2、2和2。 RDCL的总步幅大小为32,这意味着输入空间大小快速减少了32倍;
  • 选择合适的内核大小:一个网络中前几个层的内核大小应该很小以便加速,同时它也应该足够大以减轻空间大小减小带来的信息损失。为了保持高效和有效,我们分别为Conv1,Conv2和所有Pool层选择7×7、5×5和3×3内核大小。
  • 减少输出通道的数量:我们利用CReLU激活功能来减少输出通道的数量。 CReLU的动机来自CNN中的观察,即较低层中的滤波器形成对(即,具有相反相位的滤波器)。 根据这一观察,CReLU可以通过在应用ReLU之前简单地连接否定输出来使输出通道的数量加倍。 使用CReLU可显着提高速度,精度下降可忽略不计。

MSCL:Multiple Scale Convolutional Layers(多尺度卷积层)

Faster R-CNN网络中的RPN中的锚点仅与最后的卷积层相关联,其最终卷积层的特征和分辨率太弱而不能处理各种大小的特征图。 其次,anchor相应的层使用一系列不同的尺度来检测人脸,但只有单一的感受野,不能匹配不同尺度的人脸。
为解决上述两个问题,我们的MSCL(Multiple Scale Convolutional Layers)作了以下改进:

  • 沿网络深度维度的多尺度设计。我们设计的MSCL由几层组成。 这些层逐渐减小尺寸并形成多尺度特征图。我们的默认锚点与多尺度特征图(即Inception3、Conv3 2和Conv4 2)相关联。我们设置不同尺度的anchor,分别与不同层级的layer关联,在不同尺度分别检测。
  • 沿网络宽度维度的多尺度设计。 为了学习不同比例的面部的视觉模式,锚相关层的输出特征应该对应于各种尺寸的感受野,这可以通过初始模块轻松实现。 Inception模块由具有不同内核的多个卷积分支组成。 这些分支作为沿网络宽度维度的多尺度设计,能够丰富感受野。MSCL中的前三层基于Inception模块。使用inception模块,内部使用不同大小的卷积核,可以捕获到更多的尺度信息。

Anchor densification strategy(anchor密度策略)

本文使用了一些小技巧使得anchor在不同层特征图上密度相同,有效提高了小型人脸的召回率。在人脸识别中,我们一般把anchor的长宽比置为1,因为一般方框可以正好框住一张人脸。anchor的间隔对应的就是stride size,比如某一层的stride size为64,anchor是256x256,意味着每64个像素就有一个256x256的anchor。Inception3层的锚点比例为32、64和128像素,Conv3 2层和Conv4 2层分别为256和512像素。定义anchor密度为:
$$
A_{\text {density}}=A_{\text {scale}} / A_{\text {interval}}
$$
这里,Ascale是锚的尺度,Ainterval是锚的平铺间隔。 默认锚点的平铺间隔分别为32、32、32、64和128。 根据上式,相应的密度为1、2、4、4和4,显然在不同尺度上anchor的密度不均衡。相比大的anchor(128-512),小的anchor(32和64)过于稀疏,将会导致在小脸检测中低的召回率。
为消除这种不平衡,我们提出了一种新的锚点密度化策略。 具体来说,为了使一种类型的锚点密集n次,我们在一个感受野的中心周围均匀地平铺n的平方个(本来是1个)锚点。在论文中,为了提高小锚的平铺密度,我们的策略用于将32×32锚4次和64×64锚2次加密,这样就可以保证不同尺度的anchor有相同的密度。

训练

本小节介绍了训练数据集,数据增强,匹配策略,损失函数,难负样本挖掘和其他实现细节。 训练数据集。 我们的模型训练WIDER FACE训练子集的880张图像。
数据增强策略。每个训练图像按以下数据增强策略顺序处理:

  • 颜色失真:应用一些照片度量失真。
  • 随机裁剪:我们从原始图像中随机裁剪五个方形补丁:一个是最大的方形补丁,其他的大小介于原始图像尺寸的[0.3,1]之间。 然后我们随意选择一个补丁用于后续操作。
  • 缩放变换:随机裁剪后,所选方形拼贴的大小调整为1024×1024。
  • 水平翻转:调整大小的图像以0.5的概率水平翻转。
  • 人脸bbox过滤器:如果人脸bbox的中心位于上面处理的图像中,我们会保留bbox的重叠部分,然后过滤掉这些高度或宽度小于20像素的bbox。

匹配策略:
在训练时需要判断哪个anchor是和哪个face bounding box相关的。首先使用jaccard overlap将每个脸和anchor对应起来,然后对anchor和任意脸jaccard overlap高于阈值(0.35)的匹配起来。
损失函数:
和Faster R-CNN中的RPN用同样的loss,一个2分类的softmax loss用来做分类,smooth L1用来做回归。
难负样本挖掘:
在anchor匹配后,大多数anchor都是负样本,导致正样本和负样本严重不均衡。为了更快更稳定的训练,将他们按照loss值排序并选取最高的几个,保证正样本和负样本的比例最高不超过3:1。
其他实施细节:
使用Xavier随机初始化。优化器SGD,momentum:0.9,weight decay:5e-4,batch size:32,迭代最大次数:120k,初始80k迭代learning rate:1e-3,80-100k迭代用1e-4,,100-120k迭代用1e-5,使用caffe实现。我们的方法在Caffe库中实现。

结论

在这项工作中,我们提出了一种新颖的人脸检测器,它在速度和准确性方面都具有卓越的性能。 所提出的方法具有轻量且强大的网络结构,其由RDCL和MSCL组成。 前者使FaceBoxes能够实现实时速度,后者旨在丰富感知领域和不同层次上的锚点以处理各种尺度的人脸。 此外,提出了一种新的锚点密集化策略,以提高小脸的召回率。 实验表明,我们的贡献使Face Boxes在常见的人脸检测基准测试中具有最先进的性能。 所提出的探测器非常快,在CPU上实现了VGA分辨率图像的20FPS,并且可以在GPU上加速到125FPS。


 上一篇
八度卷积Octave Convolution原理 八度卷积Octave Convolution原理
Octave Convolution介绍论文:Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolut
下一篇 
基于关键点的Anchor Free目标检测算法:CornerNet、CornerNet-Lite、两种CenterNet、FCOS原理 基于关键点的Anchor Free目标检测算法:CornerNet、CornerNet-Lite、两种CenterNet、FCOS原理
基于关键点的Anchor Free目标检测算法2018到2019年间,出现了许多基于关键点的one stage目标检测算法。这类算法的特点是不使用Anchor boxes作为先验框,所以又叫做Anchor-Free目标检测算法。本文主要介
2019-05-31
  目录