Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 论文阅读笔记
- 这篇文章是CVPR2021的,文章提出了一种新的检测框架
- 现有dense-prior的检测框架存在着以下问题:
- 一是产生冗余结果,为此需要nms进行后处理
- 二是训练时many-to-one label alignment问题,这个我理解的意思是,训练的时候每个预测结果要分配到某个GT box上去训练,而可分配的GT-box有多个,选择哪一个的问题,关于这个问题为什么会成为问题,个人觉得 “Learning from Noisy Anchors for One-stage Object Detection” 这篇文章讲得挺清楚的。
- 三是性能受预设的anchor box的密点、大小、形状、数量和区域提议方法的影响大。
- 为此需要一种稀疏的目标检测框架。ECCV2020有一篇用transformer做目标检测的文章(“End-toEnd object detection with transformers”,提出的框架简称为DETR),确实能够产生稀疏的End to End的目标检测结果,然而它太慢了。并且,文章认为真正的稀疏不只是bbox稀疏,特征也应该在特征图上呈现稀疏的状态,某个目标的特征尽可能不受其它特征影响。而DETR的特征不满足稀疏的定义。
- 文章的核心思想在于,将现有的目标检测框架前端的密集候选区域提议方法替换为稀疏的区域提议,也就是最关键的dynamic instance interactive head
proposal
- 首先是预设bbox,即proposal,原先目标检测的proposal基于经过RPN处理的规则分布的HWK个anchor,然而本框架使用的是无规则的,基于统计的N个proposal,一旦训练完成,这N个proposal就是固定的,训练过程中这N个proposal是可训练的4*N个参数——中心的位置和bbox的长宽(全部归一化到0-1之间)
- 对于每个proposal,除了4个表示位置大小的参数外,还有d个参数用来描述这个proposal,称为proposal feature。因此,proposal是N*(4+d)个可训练的参数描述的N个固定的proposal。
- 对于一张图片,输入时首先经过一个backbone提取特征,比如FPN,然后利用N个固定的proposal,从backbone提取的图像特征中经过ROI Align取出这N个proposal的ROI feature。将每个proposal的ROI feature和proposal feature一起送进Dynamic instance interactive head这个两输入一输出的网络,产生每个proposal的用于预测的特征,送进后续预测网络即可产生N个bbox的预测。
dynamic instance interactive head
- 将输入的proposal feature经过一个全连接层产生一个2q的特征,拆成两个1q的特征作为两个1x1的卷积核,所以输入的ROI feature经过两次卷积后展平,产生一个输出特征。对每一个proposal都是如此,每个ROI有对应的卷积核。
- 此外,本框架还利用了iteration structure ( “Cascade R-CNN: Delving into high quality object detection”) 和 self attention module (“Attention is all you need”)这两个trick来提升性能,相比原论文,在本框架上应用这些trick导致的运算负荷更低。
- 对于 iteration structure,本框架可以利用第一次检测的bbox及其在dynamic instance interactive head上输出的特征object feature,作为下一次的输入(bbox作为proposal, object feature作为proposal feature),从而进一步修正结果。
- 对于self attention module,可以在object feature上进行attention来探究object之间的相关性。
set prediction loss
- 原先目标检测算loss总是受one-to-many label alignment困扰,本文利用了"End-toEnd object detection with transformers"中使用的“set prediction
loss ”来进行one-to-one match,具体等我读完"End-toEnd object detection with transformers"这篇论文再来补充。
- 总之,个人评价是:文章确实提出了一种新的end-to-end的检测框架,并且不复杂,听到这个方法的时候忍不住会怀疑固定的proposal是否可行的问题,然而本文给出的结果确实是惊人的好: