主讲人:黎泽明 | 旷视研究院研究员

屈鑫 编辑整理

量子位 出品 | 公众号 QbitAI

12月20日晚,量子位·吃瓜社联合Face++论文解读系列第三期开讲,本期中旷视(Megvii)研究院解读了近期发表的Light-Head R-CNN论文。

本篇论文所提出的Light-Head R-CNN,构造了轻量头部R-CNN网络,在COCO数据集上超越当前最好水准,同时还保持了很高的时间效率。

本期主讲人为旷视研究院研究员黎泽明,同时也是COCO 2017 Detection竞赛队主力队员、Light-Head R-CNN论文一作。

量子位应读者要求,将精彩内容整理如下:

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=g0523tk9hby&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=g0523tk9hby&width=670&height=376.875&auto=0"/>
分享视频回放

Light-Head R-CNN这篇论文主要是探讨了R-CNN如何在物体检测中平衡精确度和速度。论文中提出了一种更好的two-stage detector设计结构,不仅提升精度,同时使除去base model的那部分模型(head)的复杂度变得更加的灵活和可控。

基于resnet101我们达到了新的state-of-the-art的结果40.6,超过了mask rcnn和retinanet。同时如果是用一个更小的网络,比如类似xception145M的小模型,light-head 达到了100+ FPS,30.7mmap,效率上超过了ssd和yolo。

我们首先尝试着去找出two-stage检测方法在速度上不够好的原因。其实two-stage和single-stage都能达到非常高的精度。但在速度方面,single-stage往往更具有优势,比如ssd和yolo。在这篇论文中,我们想表明通过精心的设计,两阶段的物体检测器也能做到特别快,而且精度可以做到更高。

回顾paper结果

相比state-of-the-art 算法拥有更高的精度和效率。

红色的三角形曲线对应论文跑出来的结果。横轴是inference time,就是你的物体检测器在testing时候的速度,单位是毫秒;纵轴是COCO的MMAP,从0.5到0.95,这个范围内取一个平均的Map。最左边这个红色的三角形是用一个小模型跑出来的结果,中间的这个三角形是用ResNet-50跑出来的结果,最上面的红色三角形是用ResNet-101跑出来的结果。可以看到不管是从精度还是效率,论文中所做出来效果达到了state-of-the-art。

关于文章的标题:有网友热心的取了光头r-cnn的绰号,我们的方法其实没有“琦玉老师”那么强,所以内部给它取了一个绰号叫做子弹头。如果从这条结果曲线上来看的话,其实 Light-Head R-CNN它的速度和精度都是特别高的。总结起来这个方法应该是一个快准狠的一个方法。

light-head r-cnn非常灵活和通用,这个在后面讲我那个方法的结构的时候会有所体现。而且框架也非常统一,在light-head rcnn 的角度下,faster 和rfcn结构其实很类似。

另外需要注意的是,我们是在titan xp上测试的,相比老系列的titan x,我们的结果会慢一些,但依然是在蓝色和绿色曲线的上方。 然后测试阶段使用1卡一batch。

物体检测的两大类

现在的物体检测比较通用的大概能分为两类:single stage的物体检测;two stage的物体检测方法。

two stage物体检测是基于proposal的,经典的就是R-CNN这一个系列的检测方法;而single stage不依赖于proposal,例如基于anchor的 SSD方法。所以single stage在结构上会少一个proposal的predictor。Two stage往往会引入额外的计算量来对proposal,也就是所谓的ROI进行回归和分类。

也就是说Two-stage的detector比one stage多了一步,对proposal的回归和分类器(R-CNN)。如果单纯说速度,two-stage 肯定是慢于one-stage的.但是诸如retinanet和ssd的single-stage detector也存在一些问题,就是需要对每个anchor进行分类,想比two-stage的rpn而言,anchor预测的channel数会增加。

而在two stage中,第一个stage只是做一个二分类,它的channel就不会很多。 同时如果我们降低第二个stage,也就是ROI预测的部分的复杂度,直到相比于前面的base model计算量达到可以忽略不计的程度,那是不是我们也能说第二个stage对网络的速度没有太大的影响。 这样在总体的复杂度上就能和single stage的检测效率差不太多了。

所以这篇论文要探讨一个问题,就是怎么样设计第二个stage?就目前情况而言,第二个stage 太厚重了。

我们的结论是:在一般的情况下,两阶段的检测方法会在精度更具优势,但是因为它引入了比较厚重的第二个阶段,所以对速度会有一点影响。但相比one-stage物体检测,如果两阶段检测对精度有所提高,我们就能牺牲更多的精度去换取速度的提升。

为什么这么说?因为比速度都是固定的精确度的情况下,如果能达到同样的精确度,速度比另一种方法快,这个就是比较合理情况。在论文的后半部分提到会用一个小模型来替换前面的base model,就是因为小模型它会牺牲一定的精确度来提升性能。

也就是说在同样的精确度的情况下,速度如果能和single stage相匹敌,那么two stage依然是有它的优势。

所以如果能把第二个stage的计算量给减下去,而且相比single stage而言,性价比足够高,那么就可以考虑引入第二个stage。

如何提高速度

我们回顾一下Fast和R-CNN,其实它两个大体上结构都差不太多,一个是把计算量放在了ROI操作的后面,一个是把计算量放在了ROI操作的前面。也就是在Head那部分,其实他们两个都引入了一些比较大的计算量。

先具体分析下导致Faster R-CNN 和R-FCN在小模型上不够快的原因。Faster R-CNN 用两个厚重的fc(或者resnet 的第5个stage)做proposal的预测,而R-FCN则通过制造了一个 (类别数x7x7)channel的大score map。 除去basemodel的那部分,两个方法都引入了比较大的计算量。

基于前面的观察,我们设计了更灵活通用的框架。里面最重要的点,就是把pooling的feature map变得特别薄。为什么要把它变薄呢?因为Head那一部分,复杂度有两个因素决定:pool的feature map的厚度;以及对pool出来的feature进行分类和回归的那一部分,如果这部分逻辑比较多,它依然会对于整体的网络效率有所影响。

然后涉及到一个问题:pooling的feature map能不能变得很薄?

我们做过一些验证的实验。最早的时候在原本的R-FCN上做了一次实验。我们试过把它压到10×P×P,相当于把原来3900多个channel,压到了490个channel。然后发现掉的点几乎没有。我们在VOC上做过一系列的实验,压成10×P×P是根本不会掉点的。在COCO上面只会掉零点几,再把它压得更多一点,压成5×P×P也只是掉零点几。

这个地方补充一句,feature map被压薄了之后,是没办法直接Average voting出来最后的结果的。但是可以通过在后面加一个到81类的全连接层来出最后的结果。

Table 中的B1是原来的 R-FC baseline 32.1,然后直接加10×P×P的feature map,实现出来有31.4,只会低零点几个点。

B2是reproduce的RFCN baseline,是用FPN paper中的setting,另外讲R-CNN中regression的loss 乘了两倍。 基于B2即便是减到10×P×P,MMAP也是掉了零点几。 其实如果把它减到5×P×P的channel的话,结果和减到10×P×P也差不太多,和10×P×P相比不到0.2的损失。

本来也想做一组基于faster R-CNN的把feature map变薄的实验。但是这个实验其实不能直接这么比。 这是为什么呢?因为第二个stage的两个全连接层计算量挺大的,不能直接把pooling的feature map给减小;即便是要减小,也要把第二个stage的计算量给砍下来。本来pool的feature就比较薄,如果再引入一个比较厚重的第二个stage,这个网络就会变得很突兀。 然后和faster的比较可以和后面加入了cheap R-CNN的结果上得到。

Head的第二个部分,也就是在第二个stage的预测部分,我们引入了一个额外的全链接层,大概是2048个channel。两个组合起来,就是文章里面所谓的Light-Head的那部分了,其实这个时候Head已经变得更加的灵活和可控。因为pooling的feature map很薄了,所以可以上一个比较大一点的卷积层,这个也会带来一点点性能的提升。

这个表对比了下现在市面上的baseline,我们的结果在单尺度训练下是39.5,multiscale-train是40.8,超过了以往的所有state-of-the-art,比如retinanet和mask rcnn。 我们也尝试了加入feature pyramid,大概是41.5。

讲讲得到这个结果的过程。前面的baseline已经达到了37.7,然后把pooling做一个alignment,大概能涨1.3个点;我们在训练的时候用的是0.3的NMS,换成0.5之后,能涨0.5左右;然后加multiscale train也能涨一个点。也就是最后的40.8的结果。

我们设计的初衷,就是要让第二个stage变得更加灵活和可控。所以又试了另外一种方法:把前面的base model部分替换成一个比较小的模型。然后设计了一个145兆的一个类似xception的网络。

大模型和小模型基本上没什么太大的区别,比较大的区别是在第五个stage:大模型是用了atrous algorithm,小模型没有用。小模型把RPN convolution数砍到了只有256。小模型的结果如下表,可以看到Light-head r-cnn在效率上超过了所有的速度模型包括ssd和yolo。

其实Light-Head R-CNN还可以继续砍,我们就又补了一些新的实验,把pooling的feature map channel砍到5×P×P,结果没什么变化。然后kernel也没有必要用15那么大,减到7结果也不会掉点。即便是把出feature map那个大kernel扔掉,直接用1×1,精确度也不会掉太多,也就一个点以内。

所以如果使用Light-Head,它的第二个stage(除去base model那部分Head)复杂度就会更加的可控,以及更加的灵活。这是我们最后跑的大模型以及小模型的结果对比的样例图。

最后放一段大模型和小模型的检测对比的视频。

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=u05242si8d3&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=u05242si8d3&width=670&height=376.875&auto=0"/>xception145 class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=d0524yu035a&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=d0524yu035a&width=670&height=376.875&auto=0"/>res101

一则招人硬广:

希望加入旷视科技一起登上CV巅峰的同学可以投简历至俞刚:yugang@megvii.com,长期招聘算法实习生。实习优秀者,更有直接跳过面试阶段,入职megvii研究院的机会。

Q&A

速度上来说,是简化Head提升更多还是简化base model的提升更多?

如果你是resnet 101这样大网络,即使把后端减得特别小,也不会对你的网络速度提升特别多,因为有很大的计算量是在base model的那部分。在这样的前提下,你就需要先把你的base model给砍得特别小,比如把它做到145M这样的一个很高效的Xception的网络。如果是在小模型情况下,就需要简化Head。需要根据不同的情况下,具体来比较两种方法。

这个会开源吗?

肯定是会开源的,我们这次的实验结果中所有的大模型结果都出来了,但是还有一小模型细节需要调试一下,因为TensorFlow和旷视自己的平台有一些差异的地方。

为什么Light-Head可以比two-stage要好?

Light-Head的结果比R-FCN和Faster R-CNN这样的two-stage结果要高。这个是怎么样达到比别人高的呢?相比R-FCN,我们其实是在第二个stage上加了一个廉价的只有一个全联接层的子网络,这个子网络能提1.8个点。在前面我们还加了一个比较大的kernel,因为我们pooling的feature map比较薄,所以可以上一个比较大的kernel size,然后这个也会对你的结果提0.6个点左右(对faster也同样会涨点)。

ROI的数量设多少?

我们用的是一千个ROI做测试。Light-Head R-CNN对ROI的数量的敏感度是介于R-FCN和Faster R-CNN之间的。因为R-FCN是一个在第二个stage没有计算量的框架,而faster它是在第二个stage上堆了很多计算量。而我们的第二个stage很轻量,但也并不是没有计算量。

如果用的是ROI pooling的话,跟RFCN网络所说的位置敏感性的初衷有所冲突吗?

如果用ROI pooling 后面直接voting出最后结果确实不太好,没有位置敏感性,但是Light-Head里面有一个轻量的fc来处理全局的位置信息。

相关学习资源

以上就是此次旷视研究院黎泽明带来分享的全部内容,在量子位公众号(QbitAI)界面回复“171226”可获得完整版PPT以及视频回放链接

第一期物体检测回顾:旷视研究院解读COCO2017物体检测算法夺冠论文

第二期人体姿态估计回顾:旷视研究院详解COCO2017人体姿态估计冠军论文

活动报名


加入社群

量子位AI社群12群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot4入群;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进群请加小助手微信号qbitbot4,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。


量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态


吃瓜笔记 | 旷视研究院解读Light-Head R-CNN:平衡精准度和速度相关推荐

  1. 吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)

    主讲人:袁野 | 旷视研究院研究员 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 12月27日晚,量子位·吃瓜社联合Face++论文解读系列第四期开讲,本期中旷视(Megvii)研究院解读了 ...

  2. 报名 | 旷视研究院解读COCO2017人体姿态估计竞赛冠军论文

    昨天,量子位·吃瓜社联合Face++推出了线上论文分享系列第一期,旷视研究院研究员.论文一作彭超解读了COCO 2017物体检测夺冠算法论文<MegDet: A Large Mini-Batch ...

  3. 报名啦!旷视研究院解读COCO 2017物体检测夺冠算法 | 吃瓜社

    刚刚结束的ICCV 2017期间,旷视科技(Face++)在竞争激烈的MS COCO大赛中,击败谷歌.微软.Facebook等国际巨头,夺得物体检测.人体关键点检测和Places物体分割三项核心竞赛冠 ...

  4. 实录 | 旷视研究院详解COCO2017人体姿态估计冠军论文(PPT+视频)

    主讲人:王志成 | 旷视研究院研究员 屈鑫 整理编辑 量子位 出品 | 公众号 QbitAI 12月13日晚,量子位·吃瓜社联合Face++论文解读系列第二期开讲,本期中旷视(Megvii)研究院解读 ...

  5. CVPR 2022 | 旷视研究院入选论文亮点解读

    关注公众号,发现CV技术之美 本文转载自旷视研究院 日前,CVPR 2022 论文接收情况正式出炉(CVPR 2022 接收论文公布!总计2067篇!).此次旷视研究院表现出色,共有 17 篇论文成功 ...

  6. AAAI 2023| 旷视研究院入选论文亮点解读

    近日,国际人工智能顶级会议 AAAI 2023 (Association for the Advancement of Artificial Intelligence)公布了录用结果.本届会议共收到来 ...

  7. CVPR 2020 Oral | 旷视研究院提出Circle Loss,革新深度特征学习范式

    IEEE 国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 将于 6 月 14 ...

  8. ICCV2021旷视研究院入选9篇paper介绍(检测+点云+图像配准等)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 近日,两年一度的国际计算机视觉大会 ICCV 2021( IEEE International Con ...

  9. 【CVPR2021】旷视研究院入选学术成果盘点

    转自:旷视研究院 在CVPR 2021中,旷视研究院共入选论文22篇,其中Oral论文2篇,研究领域涵盖激活函数.神经网络.神经网络架构搜索.光流估计.无监督学习.人体姿态估计.目标检测等. 本篇推文 ...

最新文章

  1. window下git的使用
  2. 3. SQL -- 存储过程
  3. vue为什么要求组件模板只能有一个根元素
  4. 一觉醒来,借呗竟然被封了
  5. [蓝桥杯][2013年第四届真题]剪格子-dfs
  6. win7笔记本为手机共享wifi
  7. Java 学习路线之四个阶段
  8. 企业上公有云的 10 种驱动力
  9. 物联卡与SIM卡相比优势在哪
  10. WEBPACK+ES6+REACT入门(2/7)-在项目中使用react以及JSX语法介绍
  11. 用SPSS做数据分析(1)
  12. 运用R语言绘制火山图
  13. 408最后20天冲刺阶段应该注意的问题
  14. 数据分析小项目01 __《少年的你》豆瓣短评__V1.0
  15. explicit,violate,volatile,mutable
  16. HTML5版uploadify
  17. 浅析:OMS和ERP、WMS、TMS之间的关系?
  18. 7-3 分段函数1 (20分)
  19. 揭笔记本维修黑幕 浅谈我们该如何应对
  20. 手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘

热门文章

  1. @贾跃亭,证监会喊你本周回国对乐视负责!
  2. java程序员需要掌握的知识,看完直接跪服
  3. u盾 签名pdf显示 “签名于修订版中删除”_Adobe Acrobat Reader DC for mac(免费pdf阅读)...
  4. 清华大学信息 计算机科学与技术,清华大学信息科学与技术国家实验室
  5. 复工复产三个一内容_节后复工安全生产三个一
  6. 学习型php空间,php开源学习型框架CMVC v1.2.0
  7. 主机硬件系统主板状态 vmware_电脑主机启动不了怎么办?
  8. php wiki搭建,wiki网站搭建
  9. Recoil 是 React 的状态管理库
  10. linux处理除零异常,linux – 如何在x86程序集中使用中断来触发被零除错误异常?...