链接:https://www.zhihu.com/question/431890092
编辑:深度学习与计算机视觉
声明:仅做学术分享,侵删
作者:信息门下添狗
https://www.zhihu.com/question/431890092/answer/1593944329
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奠定了基础,感觉真的是一个刚刚好的时候。
真的太强了,相比一些想出来感觉不快点做就会被别人做的东西,这个就是那种根本想不到的东西。
作者:yanwan
https://www.zhihu.com/question/431890092/answer/1594767413
将 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的检测器很简洁,部署也很方便,如果把精度和速度肝上去了,就可以造福工业界了。
作者:深度眸
https://www.zhihu.com/question/431890092/answer/1594349380
特意把论文和代码都看了,结合对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领域,那也不用奇怪!
代码还没有跑过,暂时不知道里面有没有啥坑!
作者:小磊
https://www.zhihu.com/question/431890092/answer/1594696884
由于 Sparse RCNN 有受到 DETR 启发, 所以先分析 DETR.
我觉得 DETR 的成功有两个关键点:
Set prediction loss
Self-attention 带来的 proposal 之间的强关联性, 使得整个输出结果更加整体
同时, DETR 有个大的缺点, 就是对 local feature 利用不足. 这会导致一个问题: bbox 边界回归不准. 表现为小物体的 mAP 非常低(如下表)。
DETR 的 APs 比 Sparse RCNN 低了6个点!
但 mAP_small 低有可能有两个原因:
边界回归不准
漏掉了小物体
为了找到 mAP_small 低的具体原因, 我们对比了一下 DETR 和 MaskRCNN 的 bbox mAP_small 曲线:
纵坐标:mAP_small. 横坐标: IoU阈值[0.5:1:0.05]. 蓝色 DETR, 橙色 MaskRCNN
发现 DETR(蓝色) 在 IoU 阈值为 0.5 时候, mAP_small 比 MaskRCNN还高, 所以 DETR 感知到小物体的能力还挺强的, "边界回归不准"才是 mAP_small 低的主要原因.
再回到主角 Sparse RCNN, Sparse RCNN 完全继承了 DETR 的两个关键优点:
Set prediction loss
Proposal 之间的强关联性(iteration+dynamic 机制类比于 self-attention)
同时, 由于 Sparse RCNN 是全卷积的, 具有 CNN local feature 强的优点. 所以在边界回归的准确度上会优于 DETR.
综上, Sparse RCNN 集成了 DETR 的两个优点, 并摒弃了 transformer 带来的缺点, 并在结果上超过了 DETR. 但老实说, Sparse RCNN 只高了0.3 的 mmAP, 而 mAP50 和 AP_large 上都低了不少, 说明 Sparse RCNN 还有挺多进步空间的.
补充:
其实可以换一种方式来解决 DETR 对 local feature 利用不足的缺点, 就是直接学 RCNN, 做 two-stage 的回归。
具体的, 在第二个 stage 找出 small object 的 bbox, padding 一点点, 在高清一点的 CNN feature 上 crop 一个 RoI 出来。给 RoI 加上 spatial positional encoding 和 object 的 query 一起丢给 transformer 的 decoder, 输出一个 refine 后的 bbox。
作者:匿名用户
https://www.zhihu.com/question/431890092/answer/1594953510
之前的方法是 大量初始proposal +1-2 refine stage。用过饱和的proposal保证预测质量,最后用NMS滤除。
这篇是少量的初始proposal+多轮 refine stage。proposal box 和 proposal feature可以与输入图像无关 就证明了 不靠谱的初始proposal是可以考多轮 refine修正回来的。还是挺神奇的。
我很想看看每轮refine前后 box的变化,到底图片无关的proposal box是怎么和Object对应的,有什么规律。
作者:云中君
https://www.zhihu.com/question/431890092/answer/1594679377
个人感觉这篇文章有可能会被审稿人diss。
首先:这个 “sparse”的 novelty,highlight sparse 太多不太合适,因为sparse 不是这篇论文首创吧,更多是detr这种开山鼻祖可以强调这点?这个sparse更多体现在proposal的sparse,但是似乎文章描述的不多。
其次:后续的Dynamic instance interactive head 是论文的重点,但是堆了很多料,比较tricky,整个story似乎是没讲好。
然后:仔细看了一遍代码,发现的proposal bbox 最后是固化的一个统计值,靠后续的proposal feature 和 dynamic head 来救,这样可能会存在如果测试集和训练集gap比较大,掉点可能会比较严重,同时这种方式,拿掉了费电的rpn,但是引入一个相对比较低效的方法,光靠后面的两到工序可能救不动,所以会存在很明显的一些object没被召回的情况,如果proposal也是图像卷出来的,可能还能再提升,搞个2.0版本?
最后:当然效果好,收敛速度快,实验足,工业界还是香的。
作者:摘掉眼镜睡觉
https://www.zhihu.com/question/431890092/answer/1603178806
大佬们的手速也太快了叭,上两周做了rethinking DETR的实验,Rethinking Transformer-based Set Prediction for Object Detection 21号就出来了,紧接着这篇Sparse R-CNN也出来了。
周末仔细读了这篇Sparse R-CNN, 感觉Learnable proposal boxes和Learnable proposal feature并不是很难想,DETR的出现已经证明了learnable query embedding是work的,所以稀疏的learnable proposal feature也应该可以work,但是我觉得这个learnable proposal可以比较好的解释DETR中query object的物理含义。
之前没有接触过meta learning,所以这个dynamic head中把proposal feature当成params和roi feature进行卷积(就是矩阵乘法)在我看来还是挺有想法的。然后使用Iterative architecture,和Cascade的思想一样,从可视化结果来看,这里也很好的训练出NMS的作用。最后还是类似DETR,使用了Hungarian Algorithm loss,不过它这里对分类loss使用了focal loss,这是处理proposal中正负样本不平衡的一个好方法,在DETR里也可以用这个来改进。
我其实挺想弄懂Hungarian Algorithm到底有没有作用,能不能解决NMS的drawback
作者:匿名用户
https://www.zhihu.com/question/431890092/answer/1594425702
其实,对于目标检测,还能有什么新方法呢?不外乎就是如何更有效的提取特征以及如何组合特征,通过特征更高效更可靠的计算出概率,现在的网络结构,也都是包括 特征提取和组合特征上下文关系 这两部分,大的方向定了,剩下的其实就是如何玩提高效率和可靠性的trick了,不会有什么思想上的突破了。
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓