Detection论文总结(3)FA-RPN: Floating Region Proposals for Face Detection

文章链接:arxiv

FA-RPN: Floating Region Proposals for Face Detection

本文提出了一个新的方法在人脸检测任务中生成候选区域。相比于利用特征图上的一个像素来对anchor分类,我们采用了一种基于池化的方法。然而,池化成百上千的anchor在推断时需要很大的计算量,因此我们提出了一种高校的anchor设置策略来减少anchor的数量。我们发现FA-RPN产生的候选区域比原来的RPN要好,它有一些好的特性包括迭代修正分数anchor以及不改变训练模型来改变anchor。用ResNet50的主干网络我们在WIDER数据集上得到了89.4%的mAP。

引言

人脸检测是重要的应用,同时它需要算法能评估图片中的每一个小角落。像Faster-RCNN的结构将不同大小的anchor密铺在图片上、对它们分类生成候选区域。然而,RPN只用了特征图中的一个像素来评估一个物体,而与其大小无关,因此完全依赖于高层特征空间所包含的上下文信息。它并没有从物体的整个区域中池化所有特征,因此可能会对物体的位置区域不敏感。同时,anchor的位置是固定的不能被修正,如果需要学习不同尺寸、长宽比的物体或者是用比像素更精细的anchor,那么这种anchor必须在训练中自始至终地使用。

而对RoI进行最终分类有两种基于池化的方法,一种是Fast-RCNN另一种是R-FCN。前者将特征图里的RoI部分池化到一个特定大小(7x7)然后再后面加两个FC层进行分类与回归。由于计算限制,这个方案对于生成候选区域其实是不可行的,因为我们要将这个网络分别应用到每一个被选出的RoI上面。

为了减少对FC层的依赖,R-FCN在RoI中做一个局部卷积来获取物体里的空间信息。每个卷积核是用于检测不同的空间特征,所以我们只需要将每张特征图上对应区域的响应进行池化即可。它可以高效地应用到大量的RoI上。然而,在高分辨率的图像中,RPN通常需要对百万个anchor进行评估,不可能都对它们采用pooling操作。幸而许多anchor都不是必须的,本文我们将说明好好地设置anchor可以有效减少proposals数量,从而可以用基于池化的方法来生成候选区域。从而有比RPN好的效果。

这种基于R-FCN、考虑到针对位置信息滤波的池化proposal算法对人脸检测非常合适。普通物体可能会变形、相对位置信息缺失,而人脸却是有严格的结构。同时,我们也可以在不加新的卷积核而放置其他大小的anchor,我们也可以在分数位置上旋转anchor并在pool时使用双线性插值。推断时我们还可以在生成的RoI的基础上迭代以提高定位的精确性。我们的网络称为FA-RPN,在WIDER和PascalFaces上都有卓越的结果。

相关工作

生成无类别RoI在CV领域研究很久了,早期用的都不是DL方法(如RCNN的selective search),在Faster-RCNN后,卷积网络就成为了默认的候选区域算法。

改进RPN。许多检测器试图一步找到物体,如SSH、SSD、RetinaNet等生成多个不同尺度的特征图并分类和回归其上的anchor。这些一步法网络思想与RPN网络类似,用特设的anchor去识别不同大小和长宽的物体,但是它们也综合了不同层的特征图。然而,网络得到最初的偏移之后没有进一步的修正。另一类别是迭代式的检测器,在这种网络中第一步也是类似RPN来去除大部分的背景。FA-RPN和这种比较类似,相反的是,它提供RPN阶段的迭代修正

人脸检测领域,anchor的选择与放置十分地重要,比如XXX。一些修正需要整个重训RPN网络。我们的框架中,可以在推断过程中选择不同尺寸的anchor、改变anchor的步长或者是加入分数anchor——因为我们的卷积核是为所有大小物体准备的。另外,一种基于pooling的设计也给了精确的空间特征。

背景

详见R-FCN相关论文。

FA-RPN网络

FA-RPN框架

放置Anchor

首先,分类不应该仅仅依靠一个高维特征而应该在对整个RoI里面的特征进行池化。因此,在训练和推断时我们对RoI都没有放置限制。只要卷积核还能学习,我们就可以在模型上用不同大小的RoI,即便没有显性用这些大小来训练。

FA-RPN在网格上有不同大小的anchor,并将超出图片范围的anchor裁剪掉。同时,当我们的anchor变大时变长也变大, s t r i d e = m a x ( c , s / d ) stride=max(c,s/d) stride=max(c,s/d)其中s是anchor面积的平方根,d是缩放因子(5),c是常数(16),以保证没有太多重叠,但是有足够的重叠保证所有物体被cover。简单放置法用三种长宽比、五种大小、相同16步长在处理800x1280时会慢上2~3倍。利用我们这种方法,在1280x1280的图片上我们将RoI数量从400,000降到100,000。增大图片这个数字也会成比例增加。只要用在pool上的时间相比于conv很少,我们就不会在表现上看出明显区别。

并不要求anchor的步长和卷积特征图一致,我们甚至可以把RoI放到两个像素之间而网络不用任何改动。这样我们可以对GT box进行数据扩增,不像RPN没有达到阈值的话就让最大重叠设置为正例。

采样

一张图片上可以放N多anchor,我们会在训练时对anchor进行采样。在RPN上使用focal loss会降低召回率,所以我们就不用了。使用了处理类别不均衡的通用方法来采样。重叠超过0.5为正,小于0.4为负样例。一个batch最多128个正/负样例。由于太容易得到简单的样本,所以我们会采集32个hard negative,它们的重叠至少是0.1。训练FA-RPN时其他的RoI都可以忽略,然而如果训练端到端的检测器,我们还需要给其他RoI打分,所以一张图片我们最多选择50,000个RoI(优先那些至少0.1重叠的RoI)。

迭代修正

最初放置的anchor期望能覆盖到所有的GT box。然而,不是所有的物体都能与一个anchor产生0.5以上的重叠,这就导致这个物体在检测器分类时所有anchor都会给出很低的分数,尤其对于小物体更容易出现这个问题,所以这个GT可能不会在top 500或1000的候选区域中出现。在FA-RPN中我们生成20000个修行区域,然后在这20000个区域中再次用相同的特征图pooling。我们认为修正后anchor会更好地定位,从而在得到的得分会更加可靠。在修正后,前1000排名的候选区域可能会变。

由于这个过程中我们只需要pooling,所以非常高效,当RoIs数接近时也极易实现。由于是纯pooling没有FC,所以迭代修正会很有效率。

速度与复杂性

非常高效,800x1280图片,在P6000GPU上只要50ms我们的网络就可以前后传播。如果用R-FCN进行完全的end to end检测,我们pool部分的运算量是随着类别数增加成比例增加的,比如100类的话就要慢100倍。但对于人脸检测来说这不成问题,即使要计算成千上万个anchor也问题不大。

尺度标准化训练

当RoI区域太小时,R-FCN就会失去其对于位置的敏感性。因为局部卷积local convolution是让RoI中每一个bin对应特征图中一片不同的区域,从而每个卷积核可以针对不同的部分。这里面隐含了前一层特征的分辨率与PSRoIPooling之后的分辨率类似的假定。否则,针对不同位置的卷积核会或多或少地从相同位置做pooling。因此,我们采用了scale normalized training,只选择性地对分辨率接近224x224的RoI进行梯度传播,并排除训练时能在其他分辨率特征上更好观察的RoI。这样,卷积核的位置敏感性得以保留,可以提升FA-RPN的性能。

数据集

我们在三个基准数据集上进行实验:WIDER、AFW和Pascal Faces。WIDER是最有挑战性的人脸公开数据集,因为其人脸尺寸多样性和遮挡问题。我们的模型均在WIDER数据集上训练,预训练时ImageNet或COCO的模型。而后两个数据集我们只用了其测试集。

实验

我们训练了一个基于ResNet-50的Faster-RCNN,并包括deformable conv和SNIP结构。FA-RPN则从conv4和conv5连接起来的特征上生成。在WIDER上我们用了三种训练分辨率(1800,2800),(1024,1440),(512,800)。SNIP范围则分别对应 [ 0 , 200 ) [0,200) [0,200) [ 32 , 300 ) [32,300) [32,300) [ 80 , ∞ ) [80,\infty) [80,),原图的短边大约为1024。我们训练了8个epoch,并在5.33个epoch处有一个stepdown。在所有实验中我们用同一学习速率以及0.0005权值衰减在8块GPU上训练,同样的学习速率与训练计划在4块GPU上。在实验中,我们用了OHEM(online hard example mining)来训练检测器中的2个FC层。对于检测器,我们在900个proposal上用了OHEM。

暂略XXX

结论

我们介绍了人脸检测的一种新的基于pooling的候选区域生成方法。并给出了anchor放置、label赋值等算法细节。FA-RPN有许多优点,比如高效迭代修正、灵活选择尺度与anchor步长、次像素anchor放置等等。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值