0. 前言
- 相关资料:
- arxiv
- github
- 论文解读(作者本人介绍),知乎讨论
- 论文基本信息
- 领域:目标检测
- 作者单位:香港大学&同济大学&字节跳动
- 发表时间:2020.11
- 一句话总结:使用固定数量的 learnable box/feature(与backbone无关) 替代anchors,从而将原始one/two-stage检测方法转换为set prediction形式
1. 要解决什么问题
- 目前目标检测成熟的算法都是基于Dense prior(密集的先验,比如anchors、reference points)
- 但密集的先验存在很多问题
- 会检测出很多相似的结果,需要后处理(比如NMS)来过滤。
- many-to-one label assignment 问题(作者描述为 many-to-one 正负样本分配),猜测意思是我们在设置pred和gt时,一般不是一对一的关系,可能是有多个preds,看看哪个与gt更符合。
- 检测结果与先验的关系非常密切(anchors的数量、大小,reference points的密级程度、proposal生成的数量)
- DETR 分析
- 属于sparse detector。
- 存在的问题:每个 object query 都与图像全局信息相互影响,训练时收敛速度慢,整体流程也比较复杂。
2. 用了什么方法
-
方法比较
- 认为 one-stage的方法就是Dense的方法,比如retinanet/yolo/ssd 这些。
- 之前two-stage的方法属于 dense-to-sparse,即RPN是Dense,过滤后的rois是sparse。
- 我们希望提出的是sparse方法,即通过获取 learned proposals。
-
Sparse R-CNN 总体结构
- 数据输入包括 an image, a set of proposal boxes and proposal features。
- 使用FPN作为Backbone,处理图像
- 下图中的
Proposal Boxes: N*4
是一组参数,跟backbone没啥关系 - 下图中的 proposals features和backbone也没啥关系
-
Learnable porposal box
- 跟backbone没有什么关系
- 可以看成是物体潜在位置的统计概率
- 训练的时候可以更新参数
- 这个结构能用,从这儿可以看出,之前one-stage方法使用dense prior比较浪费。
-
Learnable proposal feature
- 跟backbone没有什么关系
- 之前的 proposal box 是一个比较简洁、却的方法来描述物体,但缺少了很多信息,比如物体的形状与姿态。
- proposal feature 就是用来表示更多的物体信息。
-
Dynamic instance interactive head
- 通过 proposal boxes以及ROI方法获取每个物体的特征,然后与 proposal feature 结合得到最终预测结果。
- Head的数量与learnable box的数量相同,即head/learnable proposal box/learnable proposal feature一一对应。
3. 效果如何
4. 还存在什么问题&可借鉴之处
- 感觉就是在DETR的基础上,把整个transformer去掉了,挺有意思。
- 还有一种感觉,就是 retinanet 的anchor去掉,换成了 learnable proposal box/featue,也有这么好的效果。