点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨林大佬@知乎

来源丨https://zhuanlan.zhihu.com/p/333957627

编辑丨极市平台

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

最近有许多新的目标检测范式出现,我想着这些论文或多或少有着很强的相同之处,比如他们都是后现代的目标检测方法,不仅仅要超越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的尝试,到那时或许才能真正的汇集我们这些工业界的白嫖党啦!

end

我是王博Kings,一名985AI博士,在Github上开源了机器学习、深度学习等一系列手推笔记,获得了不少同学的支持。

这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习 

目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟

王博的公众号,欢迎关注,干货多多

王博的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章(上)

博士笔记 | 周志华《机器学习》手推笔记第八章(下)

博士笔记 | 周志华《机器学习》手推笔记第九章

点个在看支持一下吧

最近目标检测新范式汇总SparseRCNN,OneNet,DeFCN等相关推荐

  1. 目标检测新范式:Sparse R-CNN

    机器之心转载 作者:孙培泽 全新的目标检测范式Sparse R-CNN. 本文主要介绍一下我们最近的一篇工作: 沿着目标检测领域中 Dense 和 Dense-to-Sparse 的框架,Sparse ...

  2. 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 作者丨孙培泽@知乎 来源丨https://zhuanlan.zhihu.com/p/31005 ...

  3. 优秀!港大同济伯克利提出Sparse R-CNN: 目标检测新范式

    作者孙培泽 转自知乎,已获授权转载,请勿二次转载 https://zhuanlan.zhihu.com/p/310058362 本文主要介绍一下我们最近的一篇工作: Sparse R-CNN: End ...

  4. 太棒了!港大同济伯克利推出目标检测新范式:Sparse R-CNN

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心,原文链接:https://zhuanlan.zhi ...

  5. NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 小目标检测是一个非常具有挑战性的问题,因为小目标只包含几个像素 ...

  6. 解读目标检测新范式:Segmentations is All You Need

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 多年来,基于候选区域网络(RPN)的现有模型在目标检测任务中得到了 ...

  7. ICLR2022系列解读之三:一个新的目标检测网络结构范式GiraffeDet

    本文解读我们ICLR2022上发表的论文<GiraffeDet: A Heavy-Neck Paradigm for Object Detection>.我们提出了一个新的目标检测网络结构 ...

  8. CVPR 2020 | CentripetalNet:目标检测新网络,COCO 48 % AP超现所有Anchor-free网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 Anchor-free目标检测新网络,在COCO上可达48 AP!性能优于CenterNet.RPDe ...

  9. 何恺明团队最新研究:3D目标检测新框架VoteNet,两大数据集刷新最高精度

    [导读]FAIR何恺明等人团队提出3D目标检测新框架VoteNet,直接处理原始数据,不依赖任何2D检测器.该模型设计简单,模型紧凑,效率高,在两大真实3D扫描数据集上实现了最先进的3D检测精度. 当 ...

最新文章

  1. UNICODE使用的一些知识和技巧
  2. 网络时代:我只是一个用户
  3. Java API 之 SPI机制
  4. 创业公司失败的20大原因 没市场需求排第一
  5. 把Alexa工具条改装成木马
  6. 不用任何工具重装Win7系统
  7. Idear创建Maven项目
  8. 解决height:100vh超出屏幕高度的问题
  9. 基于C#实现的小型动物识别推理系统
  10. 使用python中的Selenium爬取百度文库word文章
  11. numpy学习笔记:np.zeros应用——生成三通道全黑Mask(蒙版)
  12. ARP和DNS欺骗以及网站钓鱼分析
  13. 【kafka实战】分区重分配可能出现的问题和排查问题思路(生产环境实战,附视频)
  14. Android 同一个广播接收到两次
  15. python 操作windows DNS
  16. Python之子域名查询
  17. 常见 markdown 数据符号操作
  18. 29省市倡导「就地过年」,3000万+人异地过年!创历史新高!
  19. mac配置php环境
  20. Cadence-元器件PCB封装绘制-Allegro PCB Designer使用方式

热门文章

  1. c语言用指针求Amn,[工学]第5章数据结构C语言描述耿国华.ppt
  2. kaldi语音识别实战pdf_FSMN网络结构在语音识别声学模型的实践
  3. actionscript 3 mysql driver_在ActionScript 3 MySql Driver连接MYSQL数据库经验分享
  4. 巴铁 无人驾驶_巴铁骗局再现 深圳无人巴士谎言又来忽悠人
  5. python怎么运行matlab代码_用python运行matlab代码
  6. 【debug】mount: unknown filesystem type ‘nfs’
  7. web加减乘除法c#_c# 两个数的加减乘除
  8. oracle select之后自动保存excel_Excel制作自动化仓库入库单,数据录入、计算、保存只需一键完成...
  9. 正态分布函数_从微积分角度证明“正态分布密度函数”
  10. python中回归拟合图_seaborn库:线性回归拟合图