【论文笔记】Rethinking Classification and Localization for Object Detection

【论文笔记】Rethinking Classification and Localization for Object Detection

简述

  这是一篇发表在CVPR2020的目标检测方面的文章。文章主要研究的是R-CNN类目标检测算法中Head部分的设计,也就是在RoI pooling后,对特征进行classification和bounding box regression的过程,即下图中红框里的部分。
在这里插入图片描述
  Head部分常采用两种设计:(a)全连接方式或(b)卷积方式,然后回归出类别和位置偏移量,如下图所示。作者在论文中通过实验证明,全连接方式的Head(fc-head)更适合分类任务,而卷积方式的Head(conv-head)则更适合定位任务。作者通过验证输出的特征图发现,fc-head相比conv-head更具有空间敏感性(“spatial sentitivity”),fc-head更能将完整物体和部分物体区分开,但是回归出整个物体的能力较弱。
  基于以上思考和验证,作者就设计了一种双分支的Double-Head:用fc-head来做分类,用conv-head来做框的回归。实验结果证明Double-Head的设计能有效提升AP,在COCO数据集上提升了3.5个点(backbone:ResNet-50)和2.8个点(ResNet-101)。
在这里插入图片描述

fc-head和conv-head的实验分析

  作者通过严谨的实验分析对比了fc-head和conv-head在classification和bounding box regression任务的表现。这一部分的实验需要大量的不同位置和交并比(IoU)的RoI作为实验数据,公平起见,作者没有采用训练好的RPN产生RoI,而是通过在ground-truth box 周围滑动窗口来生成大小和交并比都不同的proppsals。然后比较在相同交并比的情况下,fc-head和conv-head在classification任务上的精度和bbx regression任务后的IoU,以及相应的均值和标准差。在这里插入图片描述
  从实验结果就可以看出,在分类任务上,fc-head表现比conv-head更好,尤其是proposal IoU大于0.4是尤为明显,而在bounding box regression任务上,conv-head表现略好于fc-head。
  然后作者继续用数据印证这一点:
(1)计算两种head的分类的精确度和proposal的IoU之间的PPC(Person相关系数),发现fc-head的相关系数比conv-head更高:在这里插入图片描述
(2)可视化对比:前文提到,fc-head相比conv-head更具有空间敏感性(“spatial sentitivity”),fc-head更能将完整物体和部分物体区分开,但是回归出整个物体的能力较弱。作者同样用数据论证了这一点,这里的设计十分巧妙:将head部分的输出调整到77channels大小的特征图(详情看论文), 对于图上每一个点,计算其与包括自身在内的49个点的空间相关度(cosine距离),并将其可视化。这样每个点就形成一个block,每个block展示该点与图上其他位置的相关性,共7*7个block,可视化后如下图所示:
在这里插入图片描述
从图中可以很明显地看出,conv-head比fc-head具有更高的空间相关性,更能完整地“感知”到整个物体,也就更能回归出整个物体。

Doube-Head

  前面作者做了相当多的铺垫工作,论证两种Head的优缺点,下面就是作者提出的Double-Head,虽然原理很简单,但是作者在这一部分的内容和实验设计做的十分完整。首先是作者提出的Double-Head和Double-Head-Ext的示意图,后者将“unfocused tasks”(conv-head的分类和fc-head的回归)也纳入损失函数的计算中。
在这里插入图片描述
Double-head的fc部分使用了两层全连接,而conv部分则使用了ResNet的basic block和bottleneck,也用了non-local block。

损失函数

  对于©,最简单的方式就是把两部分的损失分别计算后加权求和,再加上RPN的损失,如下:
L = w f c L f c + w c o n v L c o n v + L r p n L = w^{fc}L^{fc} + w^{conv}L^{conv} + L^{rpn} L=wfcLfc+wconvLconv+Lrpn
而作者认为,“unfocused tasks”对最后的结果同样有帮助,所以就有了Ext版本:
L f c = λ f c L c l s f c + ( 1 − λ f c ) L r e g f c L^{fc} = \lambda^{fc}L^{fc}_{cls} + (1-\lambda^{fc})L^{fc}_{reg} Lfc=λfcLclsfc+(1λfc)Lregfc
L c o n v = ( 1 − λ c o n v ) L c l s c o n v + λ c o n v L r e g c o n v L^{conv} = (1-\lambda^{conv})L^{conv}_{cls} + \lambda^{conv}L^{conv}_{reg} Lconv=(1λconv)Lclsconv+λconvLregconv
两条分支都输出classification score和bbx regression的偏移值,再对不同分支上的不同loss值做一个加权求和。此外,对于classification score s s s, 作者认为,两条分支会产生互补的信息帮助分类(啊这),于是就有了:
s = s f c + s c o n v ( 1 − s f c ) = s c o n v + s f c ( 1 − s c o n v ) s = s^{fc} + s^{conv}(1-s^{fc})= s^{conv} + s^{fc}(1-s^{conv}) s=sfc+sconv(1sfc)=sconv+sfc(1sconv)

实验

  后续就是大量的消融实验,以及对上述公式中出现的超参的调参实验。贴两张主要实验结果,可以看到,Double-Head效果还是很明显的:在这里插入图片描述

在这里插入图片描述

总结

  本文作者首先对目标检测算法中的两种常用Head结构:fc-head和conv-head进行详细的实验分析比较优劣,得出结论:fc-head更适合分类任务,conv-head更适合回归任务。在有了以上发现的基础上,作者很直接地想到两分支的Double-Head,尝试将两种head的优势互补,经过实验证明确实能够提升目标检测的精度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值