最近目标检测新范式汇总SparseRCNN,OneNet,DeFCN等
共 4659字,需浏览 10分钟
·
2020-12-23 02:48
极市导读
本文汇总了近期新的目标检测算法范式的相关论文,内容包括SparseRCNN,OneNet,DeFCN,作者对每篇论文进行了自己的解读并给出了相关的见解和想法。>>【重磅】珠港澳首届AI人工智能大会将在珠海召开,免费门票限时领取中!
最近有许多新的目标检测范式出现,我想着这些论文或多或少有着很强的相同之处,比如他们都是后现代的目标检测方法,不仅仅要超越Anchor-Based的古老目标检测,还要革了Anchor-Free的命,从此目标检测朝着简单易懂真正E2E的方向迈进,于是乎有必要来做一个整理,把这些算法放到一篇文章里面来介绍,也当是个人阅读这些论文和代码的一个小总结吧,抛砖引玉,期待更多的后来之士有更加独到的见解。
近几年来,目标检测是发展的很快,去年很火的Anchor-Free的方法提出了一系列不依赖于Anchor的目标检测范式,比如CenterNet,它结构简单,输入输出通熟易懂,同时也保持着较高的准确率,再比如FCOS,也是不可多得的创新性目标检测思路,纵然这些算法都摒弃了古老的Anchor思维,狠狠的把前辈们按在沙滩上摩擦了一阵子,但长江后浪推前浪,一浪更比一浪强,今年新出的这波新范式里面,大家不仅仅要把Anchor给你去掉,连烦人的NMS也得给你革掉!其中最具代表性的就是这篇SparseRCNN了,人家不仅仅去掉了Anchor,还把2Stage里面的Proposal,以及many2one的assigment也去掉了,更厉害的是,由于缩小了这些建议框的集合,加上2stage的精修,它可以做到后处理不需要NMS直接得到目标框!数据胜于一切,SparseRCNN可以做到Resnet50 backbone 最高达45的mAP,这不可谓不强啊!而且速度还可以保持在一个较快的速度!
顺着这个思路下去,明年,是不是会有基于E2E,没有NMS的更多的目标检测、实力分割的算法出现呢?到时候又快又好的instance segmentation模型就不再是梦想了!
让我们拭目以待吧!现在要做的就是耐心的阅读完本篇论文,我会在末尾做一个展望和总结,干货总是在最后,当然,此时你可以把手指移到左下方,点个赞,完了再吐槽一句,做一个文明的吃瓜群众。
SparseRCNN
SparseRCNN这篇论文的motivation其实很简单,就是革掉2stage里面的Proposal和NMS,我估计作者一开始可能并没有想到效果这么好,但是去掉了海量的Proposal之后发现生成的框效果竟然可以直接用,结果就有了这么一个一石二鸟的高品质作品。不管怎么样吧,做到这个效果的难度还是很大的。
让我们来看看SparseRCNN到底做了什么事情。众所周知,在2 stage算法里,最核心的部分,其实就是RPN的设计,RegionProposalNetwork部分,决定了你的整个模型的performance,这里你需要生成尽可能囊括所有目标的候选框,才能让结果尽可能的好,而这就涉及到Anchor的设计,Proposal的产出等等,这其实和one stage的Proposal generator类似,只不过是不同的算法系列具体的算法不同而已,而SRCNN做的,其实就是重新评估了这个过程,他们发现,即使他们把RPN从几千个boxes缩减到N,N可能为100这么小的数,加之动态的学习,也可以把这些个box变成质量很高、几乎囊括所有目标的Proposal。
那么现在的问题就是: 如何去生成这些小的Proposal set?
作者提出直接通过一个 4d的矩阵去预测这些proposals,每个维度就是归一化之后的中心点和w,h的数值,说到这里,恕我直言,这其实就是借鉴了Anchor-Free里面的思想了,最直接的就是FCOS的思想了。
这部分作者称之为Learnable proposal. 其实我感觉就是一个anchor-free的粗框预测,但是呢,这个粗框的精度可能就比RPN的要高很多了。因为本来人家就可以用来生成一个很高质量的框的嘛。至于这部分的loss是怎么计算的,得具体看看代码才知道。
接下来就是第二阶段,拿到了这个Proposal set之后,如何进一步生成最终的框呢?
接着作者引入了另外一个东西,proposal features, 这是个什么东西呢?如果你只是把这些box输出到第二阶段做位置精修,那么必然会丢失很多信息,因为你的输入的只有位置呀,没有语义。那么这个时候引入这个features就理所应当了。不仅仅如此,这个proposal features 的数目,和proposals是一样。记住他们存在一一对应的关系.
然后做什么呢?接着就是把这个位置坐标,和features输入到后面做预测了。但是接下来,就是整篇文章最核心的内容,也就是作者提出的这个Dynamic Head, 这年头,一旦引入这个Dynamic这个词,我脑海里面就想到两点:
牛逼 部署很坑
我感觉这个也不例外,我们继续深入看看,深入之后发现,SRCNN会引入ROIAlign,来讲features和box做对应,然后每个feature负责预测这个精修的坐标信息,
我就在想,你这每个proposal都引入ROIAlign来做对齐,然后输入conv来做cls和reg,这不会很浪费时间么?这个我没有在论文里面找到答案,但是仔细看了下代码的实现,这部分实现其实不是很耗时:
# inst_interact.
pro_features = pro_features.view(nr_boxes, N, self.d_model).permute(1, 0, 2).reshape(1, N * nr_boxes, self.d_model)
pro_features2 = self.inst_interact(pro_features, roi_features)
这个inst_interact
其实就是一个DynamicConv,似乎把所有的proposal features和抠出来的roi_features都丢到一个矩阵里面去算了。
这个算法的大致脉络就这些了,我总结下来,它的创新点其实显而易见,除了论文中提到这些,我觉得这两点也是值得墙裂借鉴的:
作者对标的其实是DETR,这篇用transformer做目标检测的论文,而且对标的恰恰就是object query这个部分,只不过论文里面用的是proposal feature + roiAlign来做的; 以前都是革1 stage的命,作者这次革了2 stage的命,虽然直观感觉效果收益和复杂度不成正比。
所以总的来说,这篇paper还是很有借鉴意义的,通过2 stage的方式结束了nms时代,让就如同我所说,这带来的代价当然是多出来的一个阶段,同时也不可避免的引入了很多我们不喜欢的操作,比如ROIAlign。
我猜测这个思路继续深挖下去,将会是把DETR的object query思想再次引入2 stage?亦或是把这个砍掉NMS的旗号发扬光大,直接基于one stage来开刀?让我们拭目以待。
最后从工业界角度来评价一下:
不适合部署,不适合部署,不适合部署; 收益和复杂度不成正比,作为工业和商业用途来说,过于复杂; 但是不要NMS确实很香,不过话说回来,现在NMS带来的lantency,在工业武装到牙齿的业界,真的是一个bottleneck吗?
OneNet
好像这篇文章也是PeizeSun大佬所作?HKU人才辈出啊!~观测下来这篇文章的motivation其实是在强调classfication的loss对于one stage目标检测的重要性~,对于一个classfication loss设计的不够好的one stage detector,最终可能会在后处理的时候出现很坏的结果。而文章提出了一个同时考虑box iou和classification 的loss。
我又仔细看了一下,作者的motivation其实还是想做一个e2e的 one stage detector,简单来说,就是我上面说的SRCNN接下来要做的事情,而且作者确实也是按照这个思路做了。他认为他提出的这个classification cost几乎是创造一个真正的e2e的one stage detector比较核心的东西。如果没有它,就会导致最后产出很多多余的框,因而必须要使用nms才能去掉。
这张图非常有意思,直观的告诉你,创造一个真正的没有nms的e2e的one stage detector,加上classification cost是多么的重要,不然的话,你设置一个很低的threshold,就是一堆框,设置一个较高的,直接就没有框。
说到这里,我就有一个疑问了,到底什么是你说的这个classification cost?
论文里面提到的这个minimum cost方法,就是上面提到的classification cost?我认为是作者说的,每个正样本只分配一个对应的loss,其他的统统用负值来表示,这可能称之为loss的分类对待。
DeFCN
还有一篇论文,我没有具体的论文,貌似作者还没有release,但是在Megvii的仓库里有release,叫做DeFCN,感兴趣的朋友去搜来看看。这篇文章其实也是在探究到底是什么东西导致了NMS?为什么会有这么一个东西产生?实际上是因为一对多的这么一个因素,导致的,作者也提出了一个基于FCOS的改进版本,可以去掉NMS,真正的做到E2E.
这篇文章看起来更厉害,但是木有太大的指标超越,但是解决了一个有史以来一直困扰大家的点,其实本篇文章所涉及到的论文,都是在试图去解决这个问题。
今年的目标检测,总结来说就是 Towards Real E2E Object Detector. 相信 明年会有更多的基于Yolo,EfficientDet等算法的去掉NMS的尝试,到那时或许才能真正的汇集我们这些工业界的白嫖党啦!
推荐阅读