来源: arXiv 2020
代码: https://github.com/PeizeSun/SparseR-CNN
本文章针对的是传统基于深度学习的目标检测方法中,采用dense candidate或者dense points策略导致的dense操作问题,提出使用sparse方法进行替代。
abstract
本文提出一种纯粹的用于目标检测的稀疏方法,称之为Sparse R-CNN. 当前目标检测已存的方法严重依赖于密集的目标候选,比如在HxW的特征图所有格点上预先定义的k个锚框等。但是,在本文方法中, 仅利用学习得到的固定大小N的proposals的稀疏集合用于目标识别和目标分类及定位。通过将HWk预先定义的目标候选降到N个可学习的候选,Sparse R-CNN完全避免了目标候选的设计困难以及分配标签是many-to-one的问题。更重要的是,最终的输出可以直接得到,而不用使用NMS等后处理的手段。Sparse R-CNN证明了在精度,运行时间,训练收敛性上虞密集方法的可比性。
Introduction
基于密集候选的检测方法虽然获得了较好的性能,但依然存在一些限制:
- 这类方法一般会产生大量的冗余结果,需采用NMS后处理的方式获得好的结果。
- 标签分配是一种many-to-one的方式,导致网络训练对于分配策略比较敏感。
- 最终的性能受制于size,长宽比,anchor box的个数,或参考点的密度或者proposal的生成算法。
DETR将目标检测问题重新表述成稀疏集合的预测问题,输入时100个学习的查询目标,最终的预测集合不经过后处理直接输出。虽然该结构简单出色,但其需要计算每一个query与全局context的相关性(有点类似non-local attention).这个过程不仅降低了训练收敛速度还使其难以称之为彻底的sparse目标检测流程。
这篇文章直接输入4维可学习的proposal固定集合和固定feature的集合进行训练,然后将这两个集合送入推理环境进行目标检测。
Sparse RCNN
Sparse RCNN的核心思路是使用小集合的proposal boxes取代来自于RPN的数以万计的候选。 Sparse R-CNN的结构如下图所示,包含backbone、dynamic instance interactive head和两个指定任务的预测层。结构的输入包括整幅图像、可学习的proposal boxes和features集合。
Learnable proposal box
区间在0-1之间的4d可学习参数集合作为proposal boxes,表示每个box归一化之后的中心点和宽、高。作者实验发现初始化对性能影响不大。
概念上讲,这些学习出的proposals其实是训练集上的目标位置的统计结果,作为推理集合的初始猜测,能够较好的猜测哪些部位最有可能有目标。而RPN的方式则和图像内容相关。作者认为使用RPN为第二阶段产生粗滤的结果有点高射炮打蚊子过于奢侈了,而简单的统计特性就能有较好的结果(我觉得这种想法不靠谱,比如训练集如果是个十字路口,那么有行人的位置统计肯定集中在中心,换做测试集是个环路场景,行人都在周围,训练集的统计还有意义吗??但是RPN无惧)
Learnable proposal feature
作者认为proposal box的维度太小,嵌入的信息过于粗糙,必须使用更高的特征嵌入细节特征,于是提出了proposal feature(也是一种依赖于训练集的统计数据)
Dynamic instance interactive head
给定N个proposal boxes, Sparse R-CNN首先使用ROIAlign抽取每个box的特征,每个特征通过prediction head生成最终的预测。
Dynamic instance interactive head的结构如下图所示:
对于每个一proposal来说,box通过ROIAlign获得SxSxC的ROI特征,然后使用对应的proposal feature 进行内积操作刻画每个bin的特征的重要性程度,加权之后得到长度为C的向量,然后送入3层感知机中进行回归,一个线性映射层进行分类。
dynamic instance interactive head还可以采用迭代的方式进行处理:以获得的predicted box和特征作为下一阶段的proposal boxes和features。
Our proposal feature is irrelevant to position and we demonstrate that our framework can work well without positional encoding. We provide further comparisons in the experimental section.
这句话我觉得有些瞎扯,虽然没有显示的编码位置信息,但是统计特性就包含了位置信息。。。
Set prediction loss.
集合的预测损失包括匹配损失。匹配损失是指无法确定proposal box与gt的对应关系时使用(iou?)二值匹配获得最相似的计算损失:
其中分别对应分类和回归损失。
Experiments
关于检测的细节就不说了。
Number of proposals这个对比实验中,proposal个数越多AP性能越高,没有分析原因,那岂不是稀疏proposal还是牺牲了精度??
总结
这篇文章其实是提出了一种从训练集学习box分布位置和特征统计特性的一种方法,将该统计特性应用到推理中,并使用可迭代的dynamic instance interactive head不断地细化前景目标与候选框中特征的相似度,从而最终获得较好的检测结果。
个人感觉即使在常用的COCO这种数据库上效果不错,但实际场景中估计效果一般,因为这些统计特性是基于训练集中目标分布位置决定的,而极限条件下一张图片中任何位置和任何大小的目标概率都应该是相同的。