1. 背景
当前主流的目标检测方法往往存在dense的属性,这里有两个例子。
- one-stage/Dense:没有proposal的提取过程,一次完成识别与回归
- two-stage/Dense-to-sparse:第一级专注于proposal的提取(速度up精度down);第二级对提取的proposal进行分类回归(精度up速度down)
但是麻烦在于:
1.prior candidates 的设计
2.one-to-many的正负样本标签分配策略
3.nms后处理,对冗余和重复的结果
于是,作者很自然的想到是否有一种完全sparse的框架,既能够mAP↑也能v↑;在这里DETR给了作者启发。
但是DETR要求每个对象查询与上下文的全局feature图像进行交互。从这一点而言他爷是dense性质的,会在训练时造成慢速收敛的情况,消耗比较大。
于是,在作者的不懈努力下,他达成了自己双sparse的目标。这两个目标分别是:
- 尽可能少的预测目标
- 每个特征都不是与整个图的特征交互
2. 主要内容
网络首先会选取n个可学习的候选框,他有四个参数分别表示归一化的中心坐标、高度、宽度,这组参数和整个网络中其他参数一起被训练优化。
但是由于太过粗糙,想表现例如头的姿态的详细特征,增加了feature的细节参数。
这组features与boxes提取出的ROI feature做了一对一的交互,组成了动态实例交互头。右下角是这个部分的一个简单结构图。
3. 图表
-
Comparisons with different object detectors on COCO 2017 val set.
作者提供了几个对比表,显示这种新方法的性能。Sparse R-CNN与RetinaNet,Faster R-CNN和DETR在ResNet50和ResNet100的两个变体上的比较。在这里我们可以看到稀疏的R-CNN在R50和R100上都比RetinaNet和Faster R-CNN更好,但是它的性能与基于DETR非常相似。
-
对于各个部件的优化性的测试
表2从faster R-CNN开始,我们逐渐在稀疏R-CNN中添加可学习的建议框、迭代架构和动态头部。所有模型均采用集合预测损失进行训练。
表4 动态头部中实例交互的影响。
从表5我们可以看出,稀疏R-CNN的最终性能对提议框的初始化是相对稳健的。
表6是选框数量对他的影响
表7显示了迭代体系结构中阶段数的影响。
4.代码阅读
- 设置proposal boxes&features
- RoiPoolingAlign统一池化
- 卷积头
- 级联Rcnn,6个stage
- loss计算