首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对物体检测中分类和定位的重新思考

导读

这篇文章对物体检测器的head进行深入的研究,提出了Double-Head-Ext 的方法,效果对比基线模型有明显的提升。

论文链接:https://arxiv.org/pdf/1904.06493.pdf

Rethinking Classification and Localization for Object Detection

摘要:2个head的结构(fc-head和conv-head),一个用于分类,一个用于定位,在基于RCNN的检测器中已经被广泛使用了。但是,缺乏对这两个head的工作原理的理解。为了解决这个问题,我们深入分析并发现了一个有趣的事实,2个head的结构在2个任务上具有相反的特点。具体来说,fc-head更适合分类,conv-head更适合定位。更进一步,我们研究了2种head的特征图,发现fc-head相比conv-head更具备空间敏感性。fc-head具有更好的区分目标的能力。基于这些发现,我们提出了Double-Head的方法,一个fc-head用来分类,一个conv-head回归定位。我们的方法在MS COCO数据集上,使用ResNet-50和ResNet-101主干,分别提升了3.5AP和2.8AP。

1. 介绍

大部分的两阶段的物体检测器都是共享分类和回归head的。本文对fc-head和conv-head进行了对比分析,发现这两种head是互补的。fc-head更适合分类,conv-head更适合回归。我们认为,fc-head具有空间敏感性,而conv-head对于所有的空间位置是共享的。

本文为了充分利用两种head的优点,提出了Double-Head的方法,超越了单独的fc-head和conv-head,见图1,另外,我们还对Double-Head进行了扩展,每种head都不去聚焦一个任务,而是两种任务同时进行,如图1(d)。

2. 分析

2.1 数据处理

为了公平对比,我们在预先定义好的proposals上分析两种head,这些预先定义好的proposals包括在GT框周围不同尺寸的滑动窗口。对于每个GT目标,我们生成了14000个proposals。这些proposals和GT框的IoU从0到1逐渐变化。对于每个proposals,两种head都会给出分类得分和回归的框。对验证集中的每个目标都是这种操作。

我们把这些proposals和GT的IoU值分为20个bin,每个bin是一组。对于每个组,我们计算得分的均值和方差,以及回归框的IoU,图2显示了大中小三种物体的结果。

2.2 分类任务上的对比

图2的第一行显示了fc-head和conv-head在分类任务上的得分,相比于conv-head,fc-head在更高IoU的proposals上的得分更高。这表示,在分类任务上,fc-head更能够区分高IoU的框和低IoU的框。为了验证这个结论,我们计算了IoU和得分之间的皮尔逊系数,见图3,结果表明,fc-head的分类得分和IoU的相关性更高。我们还计算了由RPN产生的proposals和最终NMS之后的检测框之间的皮尔逊系数,也得到了相似的结论。

2.3 回归任务的对比

图2的第二行显示了两种head得到的回归框和GT的IoU的值。相比于fc-head,conv-head在IoU>0.4的时候更加准确。这表明,conv-head具有比fc-head更好的回归能力。

2.4 讨论

为什么fc-head的分类得分和IoU的值相关性更高呢?我们认为这是因为fc-head更具空间敏感性。fc-head做的是非共享权值的变换,而conv-head在每个点上是共享权值的。对于输出特征是7x7的网格,我们使用余弦距离计算了所有位置之间的相关性,见图4。从图上可以明显的看出,fc-head的空间相关性要更小。换句话说,就是fc-head对于不同的位置,特征间的差异较大,即空间敏感性高。

3. 我们提出的方法:Double-Head

3.1 网络结构

主干:我们使用FPN作为主干,从不同level的特征图上用RoIAlign来提取物体特征。每个proposal的特征图尺寸是256x7x7,然后通过fc-head和conv-head变换为2个特征向量,维度为1024,然后各自进行分类和回归。

fc-head:具有2个全连接层,见图1(c),输出维度为1024,参数量为13.25M。

conv-head:堆叠了K个残差块,第一个block将通道数由256增加到1024,最后使用average pooling生成1024维的向量。每个残差块是1.06M参数,我们还介绍了一种变体,在每个残差块之前加入了non-local块,每个non-local块参数为2M。

损失函数:两个head联合训练,总的损失函数计算如下:

3.2 使用非聚焦的任务

在原始的Double-Head中,每个head聚焦于各自的任务,我们发现,非聚焦的任务是有好处的,(a)包围框的回归对于fc-head提供了额外的监督,(b) 两个不同head之间的分类得分是互补的。因此,我们在训练时使用了非聚焦的任务,在推理的时候,融合了2个head的分类得分。见图1(d),这种扩展叫做Double-Head-Ext。

非聚焦任务的监督:fc-head的损失函数如下:

conv-head的损失函数如下:

分类的互补融合:我们认为两种不同的head提取了不同的而且互补的信息,我们提出的融合方案如下:

4. 实验结果

4.1 消融实验

对比了4种不同的结构,如下图,其中Double-Head的效果最好。

图6显示了Single-Conv和Double-Conv的对比,回归的结果基本一致,但是分类得分上Single-Conv更高。

相比之下,在单个fc-head上共享的结果不如两个fc-head,见图7

conv-head的深度:我们研究了conv-head中残差块的数量,以及不同的类型,见图5,为了权衡性能和速度,最后使用了3个残差块和2个non-local块的结构。相对于基线,AP提升了3个点。评估结果见表2。第一个group有K个block,第二个group有(K + 1)/2个残差块和(K - 1)/2个non-local块,随着K增大,performance会略有提升。最后权衡速度和性能,选择了K=5。

更多的训练迭代数量:把训练迭代数增加一倍,在Double-Head上提高了0.6AP。

平衡两个loss,图8显示了不同的loss权重下的表现。

总结一下:1、双head比单head好,2、分类器融合对performance略有提升。总的来说,Double-Head-Ext 是优于Double-Head的。

分类器融合:我们研究了分类器融合的不同的方式,1、求平均,2、求最大,3、使用下前面的式子(4)融合。结果见表3:

4.2 主要的结果

VOC07的结果:

COCO的结果:

和其他方法在COCO上的对比:

—END—

喜欢的话,请给我个在看吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211231A02TBY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券