如何评价Sparse R-CNN,目标检测未来会如何发展?
https://msc.berkeley.edu/research/autonomous-vehicle/sparse_rcnn.pdf?msc.berkeley.edu
detr最近的进展我都不是很熟,跟做ocr的小伙伴聊了下,他说paper的几个点在这条线上上看会比较顺,我完全不懂,期待有大佬给一些新的视角解读吧。
昨晚看完直接失眠了,躺在床上捋清楚了几个细节,比如学出来的anchor为啥不会很相似,为什么这样能去掉nms之类,越想越觉得太秒了
由于dense的anchor设计加上cnn feature map的平滑性质,导致我们在正负样本划分不得不使用一对多的形式以及使用nms这样的后处理,这两个东西很蛋疼,从而从去年开始导致了一系列做正负样本划分以及设计loss适应nms的工作。
我之前跟mentor讨论,他坚信cnn上也能像detr一样去掉nms,但是我就劝他说不用position encoding 这样的东西,cnn这个平滑性好像必须有这么个设计,之后的尝试也完全走偏了,这个认知在dense anchor的基础上也是对的,但是之后就往怎么增加feature map高频上做了,完全没意识到dense anchor有什么问题,当然也承认,认识到我也一点不敢想能做成sparse的形式。
其实能想到现在检测几个令人头疼的问题是出在dense的anchor已经很不容易了,之后detr可能启发了sparse 能做work,最近几年dynamics 的生成运算参数的工作(condinst之类)为sparse的work奠定了基础,感觉真的是一个刚刚好的时候。
真的太强了,相比一些想出来感觉不快点做就会被别人做的东西,这个就是那种根本想不到的东西。
将 two stage anchor detector 升级为了 two stage set prediction detector.
1、Learnable proposal box 可以看作 RPN,然后用ROIAlign提取ROI feature。
2、Learnable proposal feature 可以看作是Detr中的object query,相当于anchor。
3、ROI feature 和 Learnable proposal feature 用 optimal bipartite matching做匹配,而不是沿用IOU做匹配。
4、Detr中使用了 transformer让每个object query都和全局的特征图交互,而Sparse R-CNN 通过Learnable proposal box生成了sparse candidates和sparse feature,这样就避免了和全局特征的交互。
5、从工业部署角度看,对于端侧,sparse detector并不是很友好,dense detecor更直接而且网路也能够轻量。
最后,Set Prediction detector也开始分为两类了:
- One-stage:Detr
- Two-stage:Sparse R-CNN
看起来set prediction挺香的,只不过,set prediction的检测器,同等测试条件下还是anchor/anchor-free的检测器在精度上差一点,和Sparse R-CNN作者也讨论了下,set prediction还有优化的空间。
set prediction的检测器很简洁,部署也很方便,如果把精度和速度肝上去了,就可以造福工业界了。
本文解读:
深度眸:Sparse R-CNN:简化版fast rcnn?zhuanlan.zhihu.com特意把论文和代码都看了,结合对relation和relation++、detr的了解,说下粗略的感受吧。
Sparse R-CNN确实做的很好,等的就是这样的工作!极致简单,不需要复杂anchor先验设置、不需要nms、不需要RPN,将整个faster rcnn的pipeline变得非常简洁。
论文核心思想应该是借鉴了上述三篇论文做法,简单来说是核心组件是:
- 可学习proposal boxes
- 可学习proposal feature
上述两个组件中最重要的是可学习proposal feature,而可学习proposal boxes只是为了提出roi而已,不然RCNN咋弄?而可学习proposal feature和detr的object query作用非常类似,都是提供全局注意力或者说提供实例级别的统计信息,由于维度比较高,其可以嵌入的信息很多,例如物体姿态或者shape。强烈建议作者在预测时候进行可视化proposal feature,应该可以看出很多东西
对应到relation论文,那么proposal boxes就是常说的几何特征,而proposal feature就是外观特征。我觉得没啥本质区别,因为都是自发学的,学到最后其实可视化看看都一样应该。
至于roi特征和proposal feature的交互过程非常重要,虽然论文说具体细节不重要,这个交叉注意力计算过程和transformer里面的做法类似,作者成为动态head,确实有动态的意味。
最后的loss,也是参考了detr里面的先双边匹配,然后再计算loss的做法,使得最后输出的预测结果不需要nms。
其他的迭代refine思想应该是为了提点而已,和cascade rcnn做法类似。
以上就是全部核心知识点了。可以发现极其简单,只要你熟悉了上述所提的3篇论文就能够理解了。
至于未来嘛,transformer思想还是很值得期待的,虽然本文好像没有引入(但是我觉得思想还是引入了)。如果哪天将CNN彻底抛弃,仅仅依靠transformer或者类似注意力思想统治了CV领域,那也不用奇怪!
代码还没有跑过,暂时不知道里面有没有啥坑!
如果对transformer和detr不熟悉的,可以看我的文章:
深度眸:3W字长文带你轻松入门视觉transformer?zhuanlan.zhihu.com由于 Sparse RCNN 有受到 DETR 启发, 所以先分析 DETR.
我觉得 DETR 的成功有两个关键点:
- Set prediction loss
- Self-attention 带来的 proposal 之间的强关联性, 使得整个输出结果更加整体
同时, DETR 有个大的缺点, 就是对 local feature 利用不足. 这会导致一个问题: bbox 边界回归不准. 表现为小物体的 mAP 非常低(如下表).