文章目录

  • 论文信息
  • two-stage 检测器的速度瓶颈
  • 网络架构对比
  • 主干网络 Backbone
  • Thin feature maps for RoI warping
  • RPN
  • Light-Head R-CNN 精度提升技巧
  • Light-Head R-CNN 速度提升技巧

论文信息

原文地址:Light-Head R-CNN: In Defense of Two-Stage Object Detector

代码实现:地址

作者:Zeming Li,Chao Peng,Gang Yu,Xiangyu Zhang,Yangdong Deng,Jian Sun

two-stage 检测器的速度瓶颈

目标检测(detection)主要分为两个流派,one-stage(SSD,YOLO系列等)和 two-stage(R-CNN系列等),前者速度快,后者精度高。

two-stage的检测框架一般将任务分为两步:

  • 第一步:产生足够多的候选框(proposal),作者称之为Body(检测器体)

  • 第二步:对候选框进行识别,作者称为Head(检测器头)

通常,想要取得最好的准确率,Head的设计一般比较 Heavy,就是计算量参数较多,计算量比较大。作者发现,像 Faster RCNN 和 R-FCN 都有共同点,就是有一个非常 Heavy 的 Head 接到主体框架上:

  • Faster RCNN 在对 ResNet 的 conv5 进行 ROI Pooling 后,接了两个全连接层。由于 ROI Pooling 后的特征非常大,所以第一个 fc 层非常耗内存,并且影响速度。每个 Region Proposal 都要经过两个 fc 层也导致计算量非常大。

  • 在 R-FCN中,虽然少了两个全连接层,但是需要构建一个 Classes×p×pClasses×p×pClasses×p×p 大小的Score Map( ppp 为后接的池化层的大小),也是需要非常大的内存和计算量。

由于Faster R-CNN 和 R-FCN 的重头设计,即使换用小的主干网络,速度也很难有较大的提升,于是作者结合两者优点,提出如下两点改进:

  • 使用 Large Separable Convolution 来生成一个 “Thin” 的Score Map,Score Map只有 α×p×p\alpha×p×pα×p×p 通道。在论文中,作者用了 α=10\alpha=10α=10。

  • 在 ROI Pooling 后接上一个全连接层。为什么要接上这个全连接层呢?因为原来的 R-FCN 的 Score Map 是 Classes×p×pClasses×p×pClasses×p×p 通道,正好对应 Classes 的预测,现在没有这么多个通道了,没办法用原来的投票方法了,所以接上一个全连接层也是为了后面能够接上 Faster R-CNN 的回归和分类。

Light-Head R-CNN 与其他网络的速度对比如下图,主干网络分别使用 (a small Xception like network,Resnet-50,Resnet-101):

网络架构对比

作者将Light-Head R-CNN 与 Faster R-CNN 和 R-FCN 的架构进行了对比:

  • Faster R-CNN

Faster R-CNN 在 ROI Pooling 以后要对每个 ROI 进行计算,也就是 R-CNN subnet,这部分包括两个 fc 层,且第一个 fc 层要全连接上一层的全部channel,使用 ResNet101 作为主干网络时,在上一层有 2048 个channel,这个计算量就很大了,所以说 ROI-wise 部分的计算太重了。

  • R-FCN

R-FCN 为了对 ROI-wise subnet 进行加速,就采用了一种全卷积的策略。R-FCN 首先为每个 region 预测一个score maps,通道数是 classes×p×pclasses × p × pclasses×p×p(p是接下来的pooling形状),接着是沿着每个 ROI 做pool,然后 average vote 最后的预测。

采用这种方式,R-CNN subnet 其实是没有计算量的(但是效果上不如有 ROI-wise 的 Faster R-CNN),但是要为ROI pooling生成一个大的score map, 还是挺耗时的。

(图中 CCC 表示物体检测的类别数,+1+1+1 表示背景类。)

  • Light-Head R-CNN

Light-Head R-CNN结合了Faster R-CNN和R-FCN的优点:

  1. 对 ResNet 卷积层中 conv5 的 2048 通道输出,使用large separable convolution 降低特征图(feature maps)厚度并简化计算量,生成 “薄”的 thin feature map(α×p×p\alpha×p×pα×p×p,α=10\alpha=10α=10),避免了 R-FCN feature map 太大,且随类别数 CCC 增加而增大的问题。

  2. 在 thin feature map 后面接 ROI Pooling,此时得到的 ROI-wise feature map 也薄,这样后面再接 fc 层,此时的计算量就小了,避免了Faster R-CNN 在 R-CNN subnet 的第一个 fc 层计算量过大的问题。

Light-Head R-CNN 将原来 R-FCN 的 score map 的职责两步化了:thin score map 主攻位置信息,R-CNN子网络中的 fc 主攻分类信息。另外,global average pool 的操作被去掉,用于保持精度。

主干网络 Backbone

在Head小了以后,Light-Head R-CNN就可以在速度和精度之间做权衡,可以选择性地使用大的或者小的backbone网络了。文章中给出了两种设置:

  • “ L” 表示使用大的 backbone network,更注重精度。这里用的 L 网络是resnet101。

  • “S” 表示使用小的 backbone network,更注重速度。这里用的 S 网络是Xception-like model。

Thin feature maps for RoI warping

使用 large separable convolution,应该是借鉴了 Inception 3 的思想,用 1×k1×k1×k 和 k×1k×1k×1 的两层卷积来代替 k×kk×kk×k 的卷积核,其结构如下:

其中 kernel 大小:k=15k=15k=15,很大,所以叫 large conv,这主要是为了保证不丢失太多精度。因为这一层之前的 feature map 有2048 channel,这一层只有 490 channel,这么多channel数的减少要通过 large conv 进行一定的补偿。

另外,separate conv 能够减少计算量,Cmid=64(forS)/256(forL)Cmid=64 (for S) / 256 (for L)Cmid=64(forS)/256(forL),Cout=10×p×pCout=10×p×pCout=10×p×p,远小于 R-FCN 的 classes∗p∗pclasses*p*pclasses∗p∗p。

RPN

RPN 网络用于生成候选区域(region proposals)。通过 softmax 判断 anchors 属于前景(foreground)或者背景(background),同时利用bounding box regression 修正 anchors 的偏移和缩放,获得精确的proposals。

Light-head R-CNN中使用RPN网络生成候选区域,具体过程如下:

  • 3×33×33×3 卷积以及生成候选框(RoI):

    在Light-head R-CNN中,使用 Resnet 的 conv4 的输出作为 RPN 的输入特征图,其维度是 14×14×102414×14×102414×14×1024。对特征图进行 3×33×33×3 卷积,并对feature map 进行滑窗操作。

    当前滑窗的中心在原像素空间的映射点称为 anchor,以此 anchor 为中心,可以得到 15 个候选框(proposals):

    • 使用 5 种面积尺寸(scales),即{ 322,642,1282,2562,512232^2, 64^2, 128^2, 256^2, 512^2322,642,1282,2562,5122 }

    • 在每个面积尺寸下,取 3 种不同的纵横比(Aspect Ratios): { 1:1、1:2、2:11:1、1:2、2:11:1、1:2、2:1 }。

  • 以3×3卷积核的中心点,作为 anchor 的中心点,通过滑动窗口和 anchor 机制得到图像的多尺度候选框。

  • 使用1×1卷积核,基于 anchor 种类数量进行卷积,得到所有 anchors 的foreground softmax scores 和 bounding box regression 偏移量。

  • 根据 bounding box regression 偏移量,获取位置修正后的 anchors。

  • 按照 foreground softmax scores 由大到小排序 anchors,提取前 6000 个 foreground anchors。

  • 限定超出图像边界的 foreground anchors 为图像边界,防止后续 RoI Pooling 时 proposal 超出图像边界

  • 剔除非常小(width < threshold or height < threshold)的 foreground anchors。

  • 进行非最大抑制(non maximum suppression,NMS),其中 IOUthresh=0.7IOU thresh=0.7IOUthresh=0.7

  • 再次按照 NMS 后的 foreground softmax scores 由大到小排序foreground anchors,提取前 1000 个结果作为 proposal 输出。

Light-Head R-CNN 精度提升技巧

为了提升算法精度,作者又加入了其他 trick,分别是:

  • 在 PSRoI pooling 中加入RoIAlign ( Mask-RCNN ) 中的插值技术,提升了1.7%.

  • 将NMS threshold从 0.3 改成 0.5 之后,提升了0.6%.

  • 使用 multi-scale 进行training,提升1%.

Light-Head R-CNN 速度提升技巧

为了平衡精度与速度,作者做了如下一些改变:

  • 用 tiny Xception 代替 Resnet-101.

  • 弃用 atrous algorithm.

  • 将 RPN channel 减少一半到256.

  • Large separable convolution: kernelsize=15,Cmid=64,Cout=490(10×7×7)kernel size = 15, Cmid = 64, Cout = 490(10×7×7)kernelsize=15,Cmid=64,Cout=490(10×7×7).

  • 采用 PSPooling + RoI-align. 用 alignment 技术做了 RoI warping,它能减少被 pool 的 feature map通道[ k×kk × kk×k 倍,k是 pooling size],RoI-align能提升结果。

采用上述trick之后,能够在COCO上达到102FPS,同时达到30.7% mmAP的精度:

作者的测试环境:The code is tested on a server with 8 Pascal Titian XP gpu, 188.00 GB memory, and 40 core cpu.

Light-Head R-CNN相关推荐

  1. Faster R CNN

    Faster R CNN 3 FASTER R-CNN 我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed r ...

  2. Object Detection in Optical Remote Sensing Images: A Survey and A New Benchmark

    参考  Object Detection in Optical Remote Sensing Images: A Survey and A New Benchmark - 云+社区 - 腾讯云 摘要: ...

  3. 20-Joint entity and relation extraction based on a hybrid neural network(LSTM-ED+CNN),考虑长距离的实体标签之间的关

    文章目录 abstract 1.introduction 2.相关工作 2.1. Named entity recognition 2.2. Relation classification 2.3 联合 ...

  4. 【今日CV 计算机视觉论文速览 第111期】Fri, 3 May 2019

    今日CS.CV 计算机视觉论文速览 Fri, 3 May 2019 Totally 29 papers ?上期速览✈更多精彩请移步主页 Interesting: ?****Single Image P ...

  5. 【今日CV 计算机视觉论文速览 第132期】Tue, 18 Jun 2019

    今日CS.CV 计算机视觉论文速览 Tue, 18 Jun 2019 Totally 64 papers ?上期速览✈更多精彩请移步主页 Interesting: ?****MMDetection, ...

  6. 【今日CV 计算机视觉论文速览 第138期】Mon, 1 Jul 2019

    今日CS.CV 计算机视觉论文速览 Mon, 1 Jul 2019 Totally 71 papers ?上期速览✈更多精彩请移步主页 Interesting: ?***PointFlow基于连续no ...

  7. 【今日CV 计算机视觉论文速览 92期】 2 Apr 2019

    今日CS.CV 计算机视觉论文速览 Tue, 2 Apr 2019 (showing first 100 of 114 entries) Totally 100 papers Interesting: ...

  8. 《光电子学与光子学——原理与实践》课程笔记

    光电子学笔记整理 光电子学笔记整理 一.Introduction 二.Wave nature of light 2.1 基本概念: 2.2 平面电磁波的基本概念: 2.3 高斯光束 2.4 snell ...

  9. Domain adaptation from daytime to nighttime: A situation-sensitive vehicle detection and traffic…(翻)

    Title:Domain adaptation from daytime to nighttime: A situation-sensitive vehicle detection and traff ...

  10. CVPR2020:三维实例分割与目标检测

    CVPR2020:三维实例分割与目标检测 Joint 3D Instance Segmentation and Object Detection for Autonomous Driving 论文地址 ...

最新文章

  1. ​周锦民:腾讯在线教育视频互动直播间技术实践
  2. Fiori Elements setBusyIndicatorDelay调试的几个关键点
  3. .net显示今天农历的代码
  4. go语言 doc转换html,go语言使用wkhtmltopdf工具将html转成pdf
  5. shell脚本单词去重多个文件
  6. ios开发之--调整UISearchBar的输入框的背景颜色
  7. unable to locate package vi_什么是VI设计?
  8. 对于怎么理解js中Event Loop,你可以看这篇文章
  9. hive窗口函数入门
  10. 教你用电脑从 Google Play 下载 Android 程序 apk 文件
  11. jersey 过滤_过滤jersey资源
  12. html 滑动条 实时计算,滑动条:拖动滑块改变进度
  13. html5在线拍照,HTML5整合本地摄像头,实现视屏预览及拍照上传
  14. python矩阵教程_Python Numpy Tutorial / Python Numpy 教程 (矩阵和图像操作)
  15. 身份证校验码程序c#
  16. XDP技术——linux网络处理的高速公路
  17. Ubuntu创建Eclipse桌面快捷方式
  18. 机票前台埋点的那些事儿
  19. 杭电2017单人排位赛2-B魔法宝石
  20. 基于JSP的员工绩效考核系统

热门文章

  1. 大厂的 404 页面都长啥样?看到最后一个,我笑了...
  2. 面试官问的hibernate和mybatis常见面试题
  3. Android基于监听的事件处理机制
  4. 制作r710 linux系统盘,记一次云主机系统盘扩容及制作私有镜像的操作步骤
  5. C++赋值运算符重载【C++赋值运算符重载】
  6. matlab双重for训话,Question 2:
  7. pythondocx批量提取目录及内容_一个可以选择目录生成doc目录内容的小工具(三) -python-docx...
  8. php mysql $_php中mysql语句的基本写法
  9. Maven的安装与Eclipse的配置
  10. 鸿蒙os2.0通知栏,网友上手鸿蒙手机OS 2.0公测版:界面与EMUI已有明显不同