FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)

2019年的CVPR

论文:《FA-RPN: Floating Region Proposals for Face Detection》

论文链接:https://arxiv.org/abs/1812.05586

 

摘要

    本文提出了一种新的人脸检测region proposals生成方法。我们没有使用卷积特征图中的像素特征对anchor boxes进行分类,而是采用基于池化的方法生成Regina proposals。然而,在推理过程中,池pooling千上万个anchors并生成proposals成为计算瓶颈。为此,提出了一种有效的anchor置换策略来减小anchor boxes的数量。然后,我们证明了我们的网络(Floating Anchor Region Proposal Network,FA-RPN)生成的人脸检测region proposals比RPN生成的人脸检测region  proposals更好。我们讨论了FA-RPN proposals的几个有益特性,如迭代细化、部分acnhors的放置和更改acnhors的位置,这些都可以在不改变训练模型的情况下启用。基于FA-RPN的人脸检测器在Wider Face数据集上采用ResNet-50的Backbone获得了89.4%的mAP。

 

1 引言

1 引言
    人脸检测是一个重要的计算机视觉问题,在监控、跟踪、iphone等面向消费者的设备中有着广泛的应用。因此,提出了各种办法来解决这个问题[39、41、16、43、17、34、42、27、23],并在实践中部署了成功的解决办法。因此,对人脸检测算法的期望要高得多,而如今的错误率相当低。算法需要检测小到5到500像素大小的人脸。由于定位是检测的关键,因此对图像的每个小区域进行评估是非常重要的。人脸检测数据集可以在一张图像中包含多达1000个人脸,这在一般的对象检测中并不常见。

    像faster - rcnn[28]这样的检测器使用区域建议网络(RPN),将不同大小和长宽比的acnhor boxes均匀地放置在图像上,并对它们进行分类,以生成类似目标的区域。然而,RPN在卷积特征图中只使用一个像素来评估proposals的假设,与目标的大小无关。因此,RPN中的特征表示完全依赖于像素处生成的高维特征表示中编码的上下文信息。在生成特征表示时,它不会从目标的整个范围中pool特征,见图1。因此,它可能会遗漏目标区域或生成定位不好的proposals。此外,作为proposal网络的一部分,不可能迭代和细化anchor boxes的位置。如果要学习不同比例/宽高比的目标,或者我们想在亚像素分辨率上放置anchors,那么在训练期间需要添加针对每种情况的过滤器。使用基于pooling算法生成的proposals可以很容易地缓解这类问题。

FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)_第1张图片

            图1:RPN和FA-RPN在权重配置方面的差别。为了简单起见,我们展示了FA-RPN的2*2 pooling 

    图像中roi的最终分类主要有两种基于pooling的方法- Fast-RCNN[12])和R-FCN[9]。Fast-RCNN将region proposals投射到卷积特征图中,并将感兴趣区域(ROI)内的特征pooling到一个固定大小的网格中(通常为7*7),并应用两个全连接层进行分类和回归。由于计算上的限制,这种方法在生成proposals时实际上是不可行的,因为需要将它应用到数十万个区域——这是通常由区域提案算法评估的候选区域的数量。

    为了减少对全连接层的依赖,RFCN在RoI中执行局部卷积(local convolutions)(7*7)来捕获每个目标的空间范围。由于每个本地滤波器(local fielts)都可以应用于前面的feature map,所以我们只需要将对应于每个本地过滤器的适当区域的响应pool起来。这使得它成为基于pooling proposals方法的一个很好的候选方法,因为它可以有效地应用于大量roi。然而,在高分辨率图像中,像RPN这样的proposals算法会在推理过程中评估成千上万个anchors。在那么多区域上执行pooling操作在计算上是不可行的。幸运的是,很多anchors是不必要的(例如,大anchor彼此非常接近)。在本文中,我们证明了careful anchor放置策略可以显著减少proposals的数量,使基于pooling的算法成为可行的proposal生成。这就产生了一个高效的、有效的目标检测器,它不会受到上述RPN设计中出现的问题。

    一种基于R-FCN的基于位置敏感滤波器的pooling算法特别适合于人脸检测。虽然物体变形和不同部位之间的位置对应经常丢失,但人脸是精确的,有结构的,部分有位置语义对应(例如鼻子,眼睛,嘴唇)。此外,在不添加更多过滤器的情况下,可以放置不同大小和长宽比的anchor。我们还可以放置部分anchor boxes,并执行双线性插值,同时pool 特征以计算目标。我们可以通过从生成的roi集中再次迭代地进行pooling来进一步提高候选proposal的定位性能,并且所有这些设计变化都可以在推理过程中进行!由于这些原因,我们将我们的proposal网络称为浮动anchor区提案网络(FA-RPN)。我们在图1和图2中强调了这些优点。在WIDER数据集[40]上,我们证明FA-RPN方案优于RPN方案。此外,FA-RPN还在Wider Face和Pascal Faces上获得了state of  the art的结果,证明了它对人脸检测的有效性。

FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)_第2张图片

图2:我们强调RPN和(a)FA-RPN proposals之间的主要区别。RPN在高维特征图上的单个像素上执行分类并对不同size/aspect ratio 的anchor-boxes的分类采用不同的权重。另一方面,FA-RPN proposal 从图像中多个bins中pool特征并对不同size和aspect ratio的目标共享权重。 

2 相关工作

    在计算机视觉领域,生成类无关的region proposals已经研究了十多年。初始方法包括多尺度组合分组[2]、约束参数最小割[36]、选择性搜索[7]等。这些方法生成region proposals,以一种不确定类别的方式为目标获得高召回率。他们在深度学习之前的时代也非常成功,即使使用词袋模型[36],他们也获得了最先进的性能。R-CNN[13]采用基于选择性搜索[36]的region proposal,是第一个基于深度学习的检测器。无监督region proposal也被用于后来的检测器,如Fast-RCNN[12],但由于Fast-RCNN检测器[28]使用卷积神经网络生成region proposal,它已经成为事实上的生成region proposal的算法。

    为了改进为了改进RPN,提出了几个修改版本。最先进的探测器也可以在一个单一的步骤中检测物体。SSH[23]、SSD[20]、RetinaNet[19]、MS-CNN[5]等检测器生成多尺度特征图,对这些特征图上的anchor进行分类和回归。这些single shot检测器与region proposal网络密切相关,因为它们有特定的过滤器来检测不同大小和长宽比的目标,而且还结合了来自深度神经网络多层的特征图。在应用网络生成的初始偏移量之后,不会执行进一步的细化。另一类检测器是迭代的,如G-CNN[22]、Cascade-RCNN[6]、LocNet[11]、FPN[18]、RFCN-3000[32]、Faster- RCNN[28]。这些检测器对一组预先定义的anchor boxes进行了多阶段的细化,并具有更多的层来进一步改进回归anchor分类和定位。应该指出,即使在这些网络中,第一阶段也包括区域建议网络(RPN),它消除了主要的背景区域。FA-RPN更接近于这条工作线,但相反,它支持在推理过程中对region proposals进行迭代细化。

    我们简要回顾了近年来人脸检测方面的研究进展。随着像Wider Face[40]这样的大尺度数据集在高分辨率图像中包含许多小人脸的可用性,提出了多种新的人脸检测技术[39,41,16,43,17,34,42,27,3]。许多焦点都集中在尺度(scale)上,结合不同层的特性[16,42,23,41],并改进区域建议网络(RPN)的配置[42,41]。例如,在寻找微小的人脸[16]时,我们提出对一个图像金字塔进行检测,并对不同大小的目标使用不同的尺度滤波器。SSH[23]和S3FD[41]有效地利用了网络的所有中间层。PyramidBox[35]通过更深更广的子网络代替SSH中的上下文模块,更好地捕捉上下文信息进行人脸检测。最近,甚至GANs[14]也被用于改善小人脸[3]的性能。

    在人脸检测中,anchors的选择及其在图像上的位置非常重要[42,41]。例如,使用额外的步进anchor被证明是有益的[42]。场景的几何约束也被用来修剪区域建议[1]。其中一些变化需要重新训练RPN。在我们的框架中,可以简单地在推理过程中做出设计决策,比如评估不同的anchor尺度、更改anchor的步长以及添加额外的anchor,因为我们对所有目标尺寸共享所有过滤器,并且只对它们执行pooling操作。此外,基于pooling的设计还提供了精确的空间特性。

3 背景

    在本节中,我们将简要概述R-FCN检测器。该检测器使用RPN生成region proposal。它使用R-FCN检测器对排名前2000的proposal进行分类。对所有前景类和背景类执行分类。R-FCN中的关键组件是局部卷积。它在RoI的不同子区域应用不同的过滤器来推断目标的空间范围。这些子区域可能对应于目标的某些部分。为了在数千个roi上加速这个过程,在最后一层中对每个目标类中的每个部分执行卷积。例如,如果有21个类,那么最后一个feature-map将包含21*49个通道。然后,给定一个RoI,对该特征图执行位置敏感的RoIPooling,以获得局部卷积[9]的效果。我们请读者参阅RFCN[9]论文,以获得关于PSRoIPooling的更多细节。最后,将响应平均池化并用作目标的分类分数。在deformable - rfcn[10]中,每个执行池的bin的区域也根据输入特征映射进行调整,这称为deformable PSRoIPooling。

4 FA-PRN-浮动Anchor RPN

    在本节中,我们讨论FA-RPN的训练,它对放置在图像上的anchors进行迭代分类和回归,以生成准确的region proposal。我们的方法概述如图3所示。

4.1 anchor 放置

    在该体构中,分类不是使用单一的高维特征向量,而是通过在RoI中pooling 特征来执行的。因此,在训练和推理过程中,roi的放置没有任何限制。只要卷积滤波器能够学习目标,我们就可以将模型应用于不同大小和长宽比的roi上,即使网络没有针对这些特定的尺度和长宽比进行显式训练。

    FA-RPN将不同尺度和长宽比的anchors按区域建议网络(RPN)生成的方式放置在网格上,并对超出图像范围的anchors进行裁剪。在放置anchors的时候,随着anchors的大小的增加,我们改变空间步长。由于在较大尺度附近的anchors有很高的重叠,包括他们是不必要的。将anchor-boxes步长改为max(c,s/d),其中s为anchor-boxes面积的平方根,c为常数,d为缩放因子,如图3所示。实际上,我们把c设为16,d设为5。这确保在图像上不会有太多重叠的anchor-boxes,同时确保相邻anchors之间有显著的重叠,以覆盖所有目标。单纯地在800*1280的图像时放置aspect ratio为3,尺度为5,步长为16像素的anchor boxes在执行推理时会慢2~3倍。使用所提出的放置方法,在1280*1280的图像采用上述anchor配置方法,我们将每张图像的roi从40万减少到10万。当我们增大图像尺寸时,卷积的计算量也成比例增加,所以只要池化所需的时间与卷积相比不显著,我们就不会在性能上看到明显的差异。

FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)_第3张图片

 图3:FA-RPN框架。FA-RPN采用多尺度训练。在每次训练迭代中,随机选择一个图像尺度,并在图像上放置合适的anchor尺度。这组初始anchors用于从位置敏感过滤器(为了简单起见,图中只描述了定位分支)中pooling 目标评分和定位化信息。为了改善定位,顶部得分anchors用后续poolings进一步细化。最后,使用一个Faster- RCNN头进行最后的分类和回归。

   

    anchor的步长不受卷积特征图步长相同的限制。我们甚至可以在卷积特征图的两个像素之间放置roi,而不需要对网络进行任何架构更改。这使得我们可以在训练中增加ground truth的边界框为正的rois。这与RPN不同,在RPN中,当没有anchor匹配重叠阈值准则时,将最大重叠anchor赋值为正。在图3中,我们给出了FA-RPN中不同尺度和长宽比下anchor放置的定性例子。

4.2 采样

    由于一个图像上可以放置成千上万个anchor,我们在训练过程中对anchor进行了采样。我们观察到使用focal loss[19]可以减少对rpn的召回(超参数调优可能是一个原因),因此我们没有将其用于FA-RPN。我们使用常用的抽样roi技术来处理类不平衡。在FA-RPN中,如果anchor-boxes与groundtruth boxes重叠大于0.5,则anchor boxes被标记为正。如果anchor的重叠小于0.4,则将其标记为负。每个batch最多抽取128个正anchor和负anchor。由于随机anchor作为简单样本的概率很高,我们还对32个anchor boxes进行了抽样,它们与ground truth boxes的重叠至少为0.1,为硬负值。仅仅是训练FA-RPN proposals,其他所有roi都可以忽略。然而,为了训练端到端检测器,我们还需要对图像中的其他roi进行评分。在训练端到端检测器时,我们在图像中选择最多50000个roi(优先考虑那些与地面真相框重叠至少0.1个的roi)。

4.3 迭代细化

    最初放置的一组anchor预计将覆盖图像中出现的ground truth目标。但是,这些anchor并不总是与所有目标的重叠大于0.5,因此分类器会给出较低的分数。对于几个方法中提到的小目标实例,这个问题被放大了[41,16]。在这种情况下,对于一些ground-truth框,没有anchor-boxes可能具有高的得分。因此,ground-truth-boxes可能不包括在图像中生成的前500到1000个proposals中。在FA-RPN中,我们不是选择前1000个proposals,而是在推理过程中生成20000个proposal,然后从相同的feature-map中再次对这20000个proposals进行池化(我们还可以使用另一个卷积层来细化第一阶段的region proposal)。我们的假设是,经过改进后,anchor将更好地定位,因此我们在RoI中pooling特征图后得到的评分将更加可靠。因此,经过改进后,前1000个proposals的排序将会有所不同,因为评分是由改进后的anchor boxes pooling而成,而不是均匀地放置在网格上的anchor boxes。因为我们只需要为这个操作执行pooling,所以当roi的数量接近100000时,它是有效的,并且可以很容易地实现。注意,我们的方法完全基于pooling,没有任何全连接层,如cascade-RCNN[6]或G-CNN[22]。因此,迭代细化的效率要高得多。

4.4 复杂性和速度

    FA-RPN非常有效。对于800*1280大小的图像,在P6000 GPU上为我们的网络执行forward传播需要50毫秒。我们还讨论了使用R-FCN进行端到端检测需要多少时间。对于通用目标检测,当类的数量增加时,比如100,池化层的贡献也会增加。这是因为池化的复杂性在类的数量上是线性的。因此,如果我们将类的数量增加到100个,这个操作将会慢100倍,在这个阶段,池化将占据前向传播中相当大的一部分时间。例如,在没有anchor放置策略的情况下,在V100 GPU上的单个图像中执行100个类的推断需要100秒。然而,对于人脸检测,我们只需要对2个类执行池化,并使用不同的anchor放置方案,我们不需要面对这个问题,即使使用成千上万个anchor boxes,也可以有效地计算出客观性。

4.5 尺度归一化训练

    当RoI bins太小时,R-FCN的位置对应关系就会丢失。当每个箱子(bin)对应卷积特征图中一个唯一的区域时,局部卷积或具有特定于目标不同部分的滤波器的想法是相关的。位置敏感过滤器隐式地假设前一层中的特性具有与PSRoIPooling之后类似的分辨率。否则,如果RoI太小,那么所有位置敏感的过滤器将或多或少地从相同的位置pooling到一起,从而否定了这些过滤器位置敏感的假设。因此,我们进行尺度归一化训练[31],它对分辨率接近224*224的roi进行选择性梯度传播,排除了训练中分辨率较高的roi。该方法在一定程度上保留了滤波器的位置敏感特性,有助于提高FA-RPN的性能。

5 数据集

    我们在三个基准数据集上进行了实验,分别是WIDER[40]、AFW[44]和Pascal Faces[38]。WIDER数据集包含32203张图片和393703带注释的面孔,其中158989在训练集,验证集39496,其余的为测试集。验证和测试集分为“easy”、“medium”、“hard”子集(即“hard”集包含所有人脸和“medium”包含“easy”和“medium”)。这是最具挑战性的公共人脸数据集,主要是由于人脸的尺度和遮挡的显著变化。我们在WIDER数据集的训练集上训练所有模型,并在验证集上进行评估。我们在实验中提到,预训练模型的初始化来自ImageNet或COCO时。消融研究也在验证集(即包含整个数据集的“hard”子集)上进行。Pascal Face和AFW分别有1335和473个人脸。我们只使用Pascal人脸和AFW作为测试集来评估我们训练的模型的泛化能力。在对这些数据集进行实验时,我们将模型应用于开WIDER 训练集的box。

6 实验 

    我们训练了一个基于ResNet-50[15]的Faster-rcnn检测器,它具有可变形的卷积[10]和SNIP[31]。FA-RPN proposal是在conv4和conv5的级联(concatenate)上生成的。在WIDER上,我们训练以下图像分辨率(1800,2800),(1024,1440)和(512,800)。当图像较短的一边的大小在1024左右时,我们对WIDER的SNIP使用范围如下:[0,200]for (1800, 2800), [32,300) for(1024, 1440)和[80,无穷)。我们训练了8个阶段,在5.33个epoches阶段时下降。在所有的实验中,我们使用一个学习率和0.0005的重量衰减,并在8个gpu上进行训练。即使在4个gpu上进行训练,我们也使用相同的学习速度和训练机制。在我们所有的实验中,我们使用在线硬样本挖掘(OHEM)[30]来训练检测器中的两个全连接层。对于检测器,我们对batch size为256的900个proposal进行硬样本挖掘。与ground truth边界框大于0.5的rois的重叠被标记为正,小于0.5的则标记为负。对于训练fast - rcnn头部,没有进行硬样本挖掘。在执行推理时,我们使用带delta= 0:35的soft-nms[4]。由于Pascal Face和AFW包含低分辨率图像,而且也不包含像WIDER数据集那么小的人脸,所以我们不执行1800*2800分辨率的推理。所有其他参数保持与在WIDER数据集上的实验相同。

    在WIDER数据集上,我们删除了不同长宽比的anchor(即每个尺度只有一个anchor,长宽比为1),并添加了一个16*16大小的anchor,以提高小人脸的召回率。注意,在使用SNIP进行训练的过程中,使用与训练fast - rcnn相同的规则删除了超大尺寸的anchor。通过这些设置,我们在WIDER数据集上取得了比最先进的结果更好的结果,证明了FA-RPN的有效性。然而,本文的目的并不是证明FA-RPN对于获得最先进的性能是必要的。FA-RPN是一种优雅高效的RPN替代方案,可以与多阶段人脸检测方法相结合,提高性能。

6.1 FA-RPN中多次迭代的影响

    当我们在推理过程中执行多个迭代时,我们在WIDER数据集上评估FA-RPN。由于FA-RPN是对roi进行操作,而不是像RPN那样对单像素特征图进行分类,因此我们可以进一步细化回归偏移量后生成的roi。由于初始anchor boxes集比较粗糙,第一步之后生成的roi并没有很好地定位。对生成的roi执行另一个级别的池化有助于改进proposal 的召回率。从表1和图5左侧的图中可以看出,这个细化步骤有助于提高精度和召回率。我们还生成了不同步长(16像素和32像素)的anchor,并展示了在细化proposals时最终的检测性能如何改进。

表1:在WIDER数据集的hard-set(hard-set包含数据集中的所有图像)上使用我们的人脸检测器的不同核心组件进行消融分析。

FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)_第4张图片

FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)_第5张图片

                                                                                               图5 消融分析 

 

6.2 推理阶段评估不同anchor和步长

    在本节中,我们展示了FA-RPN在生成region proposals方面的灵活性。我们以32像素的步长训练我们的网络在推理过程中,我们在WIDER数据集中以16像素的步长生成anchor。结果如图5右侧的图所示。我们注意到,密集anchor提高了3.8%的性能。在图的左侧,我们展示了FA-RPN proposal的迭代细化效果。在更密集的anchor之上,这进一步提供了1.4%的提升。这表明我们的网络对anchor配置的变化具有很强的鲁棒性,甚至可以在训练中没有提供anchor size的情况下检测人脸。要使用RPN实现这一点,需要重新对其进行训练,而在FA-RPN中,它是一个简单的推理时间超参数,即使在训练阶段之后,也可以在验证集上对其进行调优。

6.3 尺度和COCO 预训练模型对人脸检测的影响

    尺度变化是检测数据集面临的主要挑战之一。像WIDER这样的数据集由许多小人脸组成,在原始图像尺度下很难被CNN检测到。因此,对图像进行上采样是获得良好性能的关键。然而,正如[31]所示,当我们向上采样图像时,大目标变得难以分类,当我们向下采样图像来检测大目标时,小目标变得更难分类。因此,在进行极限分辨率训练时,标准的多尺度训练是无效的。在表1中,我们展示了在基于FA-RPN的fast - rcnn检测器中执行基于SNIP的多尺度训练的效果。当对相同的分辨率执行推断时,我们观察到在WIDER数据集上检测性能提高了1%。注意,这种改进是基于多尺度推理的。我们还初始化了ResNet-50模型,该模型是在COCO检测数据集上进行预训练的。我们发现,即使是对目标检测进行预处理,也能在很大程度上提高人脸检测器的性能,如表1所示。

6.4 WIDER 数据上的而比较

    我们将我们的方法与MSCNN[5]、HR[16]、SSH[23]、S3FD[41]、MSO[42]和PyramidBox[35]进行了比较,这些方法都是在WIDER数据集上发布的最新方法。我们的简单检测器在这个数据集上的性能优于所有现有的方法。在“hard-set”上,包括WIDER数据集中的所有注释,我们的性能(平均精度)是89:4%,这是所有方法中最好的。我们也表现良好,在easy和medium设置。每一种情况的precision-recall图如图6所示。注意,我们没有使用conv2和conv3的低层特征金字塔[23,41,16],而是使用上下文[16]或更深层次的网络(如ResNext-152 [37]/ Xception[8])来增强预测,以获得这些结果。这一结果表明,FA-RPN与现有的方案技术是有竞争力的,因为它可以导致最先进的探测器。我们也不使用最近提出的技术,如随机人脸提升[42],对不同大小的目标[16]或maxout背景损失[41]有不同的滤波器。如果对我们的网络进行上述架构更改,或者使用更好的训练方法包括:使用微调batch-normalize,我们的性能可以进一步提高[25,33]。

FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)_第6张图片

                                                                     图6 WIDER 数据集上不同方法的比较 

6.5 PascalFace 和AFW数据集的上的比较

    为了显示我们训练过的检测器的泛化能力,我们还将应用于Pascal Faces[38]和AFW[44]数据集,而无需进行微调。并与SSH[23]、Face-Magnet[29]、HyperFace[27]、HeadHunter[21]、DPM[26]检测器进行了性能比较。结果如图7所示。与WIDER相比,PASCAL图像的分辨率较低,且不包含很多小图像,因此将FA-RPN应用于金字塔中较低的两个分辨率就足够了。这也导致更快的推断。可以看到,FA-RPN很好地泛化这些数据集。FA-RPN在PascalFaces上取得了最先进的结果,并将错误率降低到0.68%

6.6 有效性

    我们的基于FA-RPN的检测器是有效的,对大小为800*1280的图像执行推理所需时间不到0:05秒。随着GPU在过去几年的进步,即使在非常高的分辨率(1800 2800)下执行推断也是有效的,并且在1080Ti GPU上只需要不到0.4秒。通过改进的GPU架构(如2080Ti)和使用更低的精度(如16位或8位),速度可以在相同的成本下进一步提高2到4倍(取决于推理中使用的精度)。利用AutoFocus[24]可以进一步加速多尺度推理。

6.7 定性结果

    图8(见论文原文)显示了WIDER的验证子集上的定性结果。我们选取了20幅不同的图像来突出FA-RPN生成的结果。检测用绿色矩形表示,亮度对置信度进行编码。可以看出,我们的人脸检测器在拥挤的场景中工作得非常好,可以在各种各样的图像中找到数百张小面孔。这说明FA-RPN具有很高的召回率,能够准确地检测人脸。它在室内和室外场景以及不同的光照条件下都有很好的通用性。在没有使用来自网络不同层的不同特性的情况下,我们在广泛范围内的性能也很好。它也很健壮的改变姿势,遮挡,模糊,甚至在老照片上工作!

你可能感兴趣的:(算法,人脸检测,FA-RPN,人脸检测,RPN)