本文转载自:

http://blog.csdn.net/surgewong/article/details/51873372

R-FCN: Object Detection via Region-based Fully Convolutional Networks

背景介绍


   R-CNN 系列的方法,如 SPPnet、Fast R-CNN、Faster R-CNN 等方法在 Object Detection 上取得了很大的成功。这些方法的网络结构被 RoI pooling 层分成两个子网络:共享的全卷积子网,RoI-wise 的子网络。这样设计的一个主要的原因是,借鉴自那些经典的分类网络结构,如 AlexNet、VGG Nets 等,这些网络结构都是卷积子网络,再接一个 pooling层,之后再接几个全连接层。很容易将分类网络的 spatial pooling 层对应到 RoI pooling,将分类网络转化成一个用于 detection 的网络。

   当前 state-of-art 的分类网络,如 ResNet、GoogleNet,都是全卷积网络。很自然地将这样的分类的全卷积网络的结构应用到 Detection 网络上。ResNet 的论文中提出了,一种使用 ResNet 作为特征引擎的 Faster R-CNN 方法,将 RoI pooling 层插在两个卷积子网络之间。RoI-wise 子网络越深,那么对于有 N 个 Proposal 的图像,那么子网络就需要重复计算 N 次,虽然子网络越深,准确度可能越高,但是这应一定程度上是以牺牲速度为代价的。这一点可以从实验结果部分Tabel 4 中 Faster R-CNN+++ 与 R-FCN 的时间消耗对比中可以看到。

   该文的出发点就是为了减少重复计算,尽可能地共享网络,因此对这种结构,提出了更深层次的理解:分类问题,具有平移不变性(translation invariance);检测 (Detection) 问题,在一定程度上具有平移敏感性 ( translation variance)。前面提到的 将 RoI pooling 层插入到两个卷积子网路之间,就是为了打破 translation invariance,使用这种 region-specific 操作也就是为了尽可能的捕捉检测的 translation variance特性。

   该论文巧妙地同时考虑这两种相互矛盾的特性,设计了一个用于 Detection 的共享的全卷积网络结构。

论文概要


   为了将 translation variance 引入到全卷积网络中,论文中设计了一种特殊的卷积层作为全卷积网络的输出,该卷积层输出 position-sensitive 的 score map,每个 score map 引入了位置的信息,如 物体的顶部。在网络的最后一层,再接一个 position-sensitive RoI pooling 层,完成对物体的检测。在整个网络框架中,所有可学习的层,都是卷积层,同时把空间位置信息引入特征学习中,使得整个网络可以进行 end-to-end 的学习。

   该论文也采用 R-CNN 方法经典检测步骤:生成 region proposal, region 分类。使用 RPN 来生成 proposal,类似于 Faster R-CNN,R-FCN 和 RPN 是特征共享的。在给定 Proposal Region(RoIs) 之后,R-FCN 将 RoIs 分类成目标物体或者背景。在 R-FCN 的网络中,所有可学习的网络都是卷积层,都是在全图上进行操作的,最后一个卷积层为每个类别(包括背景)生成 k2 个 position-sensitive 的 score map,也就是总共 k2(C+1) 个通道的输出。这个 k2 个 score map 对应描述一个 k*k 的网格的空间信息。例如,k*k = 3*3,那么这 9 个 score map,分别对应 {top-left, top-center, top-right, …, bottom-right} 位置的目标分类。R-FCN 的最后一层是一个 position-sensitive 的 RoI pooling 层,对于每个 RoI 从 k*k 的 bins 生成一个值,用于类别的分类。

   该论文的方法采用 ResNet-101 的网络结构,去掉最后的 average pooling 层和全连接层,只使用其中的卷积层。ResNet-101 的最后一个卷积层的 feature map 的维度是 2048,新增加了一个卷积层,将维度降成 1024维,这样共享的卷积层也就是 101层。最后再接上生成 k2(C+1) 个通道 position-sensitive score map 的卷积层。

   为了将位置信息引入到 position-sensitive 的 feature map 中,对于每个 RoI,将其分割成 k*k 个 bins,每个 bin 的大小 ≈wk∗hk。最后一个卷积层,为每个类别生成 k2 个 score map。在第 (i,j)th 个 bin (0≤i,j≤k−1),在 (i,j)th 个 bin 上的 position RoI pooling 操作定义为

rc(i,j∣Θ)=∑(x,y)∈bin(i,j)zi,j,c(x+x0,y+y0∣Θ)n

其中 rc(i,j) 是在第 (i,j) 个bin 下第 c 个类的响应值,zi,j,c 是 k2(C+1) 个通道中的对应的通道,(x0,y0) 是 RoI 对应的起点坐标值, n 是对应的 bin 中像素点的个数,Θ 是网络的参数。第 (i,j) 个 bin 的范围是 ⌊iwk⌋, ⌊jhk⌋。其实这个操作就是一个 average pooling 的过程,当然是用 max pooling 也可以。

   每个类别上都可以得到 k*k 个 position-sensitive 的 score,文章直接对这些值求平均值,得到最终的 score,因为分母都相同,均为 k*k,因此这个 score 就可以写成 rc(Θ)=∑i.jrc(i,j∣Θ),在对这个 RoI 分类时,采用 Softmax 的方式在每个类别上的响应可以写成 sc(Θ)=∑Cc′=0erc′(Θ) ,在训练过程中采用交叉熵的方式进行训练。

   类似于 R-CNN、Fast R-CNN 等,R-FCN 在最后的特征层,加一层 4k2 维的卷积层,用于 Bounding Box 的回归。对于每个 RoI,将 position-sensitive 的 RoI pooling 作用于这样的 4k2 个 map,得到一个 4k2 维的向量。类似于上面的操作,使用平均的方式,可以为每个 RoI 得到最终的一个 4 维的预测值,分别为 (x,y,w,h) 。当然也可以针对每个类别分别预测一个 4k2 个向量,类似于 SSD 中的操作。

网络结构


   文章采用 ResNet 101 的卷积层作为基础的卷积网络结构,再接一个卷积层用于降维,最后接一个产生 k2(C+1) 个 score map 的 position-sensitive 的卷积层,然后接一个 position-sensitive RoI pooling 层,最后使用 Softmax 用于判断 RoI 的类别。与此同时还可以接一个产生 4k2 个 map 用于回归 Bounding box 的位置,同样应用 position-sensitive RoI pooling 层,最后得到一个回归的位置。

训练策略


   该论文可以说是 Faster R-CNN 的改进版本,其 loss function 定义基本上是一致的:

L(s,lx,y,w,,h)=Lcls(Sc∗)+λ[c∗>0]Lreg(t,t∗)

   在该网络框架下,所有可学习的层,都是卷积层,使用 Online Hard Example Mining (OHEM) ,几乎不会增加训练时间。

   网络只使用一种 scale 的图像训练,图像最短的边宽度为 600 像素,每张图像使用 128 个 RoI 用于反向传播。冲量设置成 0.9,权值衰减设置成 0.0005。在 VOC 上 Fine-tuning 过程中,初始学习率设置成 0.001,训练 20k 个mini-batches,学习率为 0.0001,10k 个 mini-batchs。

   R-FCN 和 RPN 共享网络参数,训练方式和 Faster R-CNN 的训练策略和步骤基本一样。

   使用了 atrous trick。

实验结果


最后总结


   该论文也可以归为 R-CNN 系列,其充分利用当前分类最好的网络 ResNet,无论是在准确度还是和速度上都相比 Faster R-CNN 都有很大的提高。R-FCN 使用 position-sensitive score map 将 localization 的 translation variant 的从网络结构中抽离出来,能够充分利用 ResNet 的强大分类能力。

   R-FCN 使用全卷积网络,其共享的卷积直接作用于全图,使用 OHEM 不会给训练带来额外的时间消耗,同时使用 atrous trick 使得性能有一定的提升。在 Pascal VOC 2007 上的效果,已经到到了 83.6%。

   回望过去,最近一年多以来,在通用物体检测上确实取得了非常了不起的成就。

R-RCN 论文理解3相关推荐

  1. 论文理解【RL - Exp Replay】—— 【ReMERN ReMERT】Regret Minimization Exp Replay in Off-Policy RL

    标题:Regret Minimization Experience Replay in Off-Policy Reinforcement Learning 文章链接:Regret Minimizati ...

  2. Transformer(二)--论文理解:transformer 结构详解

    转载请注明出处:https://blog.csdn.net/nocml/article/details/110920221 本系列传送门: Transformer(一)–论文翻译:Attention ...

  3. 论文理解【RL - Exp Replay】—— 【LFIW】Experience Replay with Likelihood-free Importance Weights

    标题:Experience Replay with Likelihood-free Importance Weights 文章链接:An Equivalence between Loss Functi ...

  4. A Learned Representation for Artistic Style论文理解

    A Learned Representation for Artistic Style论文理解 这篇论文是在Perceptual losses for real-time style transfer ...

  5. 图卷积网络进行骨骼识别代码_【骨骼行为识别】2s-AGCN论文理解

    Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition 论文链接: https:/ ...

  6. PacificA: Replication in Log-Based Distributed Storage Systems 论文理解

    PacificA: Replication in Log-Based Distributed Storage Systems 论文理解 思考:论文有个结论说,相比 GFS 具有中心化的实体,Pacif ...

  7. [计算机视觉] AprilTag 2: Efficient and robust fiducial detection(2016)论文理解

    论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...

  8. [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解

    论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...

  9. 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解

    6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解 解决什么问题 本文创新点\贡献 本文IDEA来源 方法 方向向 ...

  10. R语言学习以及我对R语言的理解。

    关于对R语言的理解: 这里我讲一下自己对于R语言的理念,我不想重复那些已经被转播烂了的概念解释.发展历史.及其功能简介. R语言是统计学家开发的,出生之初就决定了它的使命是统计计算和数据可视化,这算是 ...

最新文章

  1. 移动端打开html控制台,移动端中使用调试控制台 eruda
  2. JVM—如何利用虚拟机栈进行函数调用?
  3. RocketMQ消息存储的整体结构
  4. DRDoS(memcache漏洞导致的反射型分布式拒绝服务攻击)
  5. 计算机网络——速率相关的性能指标
  6. 云图说 | 一分钟带你扫盲云容器黑话
  7. D3DXMatrixMultiply 函数
  8. C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)...
  9. 黑苹果华硕b85m主板设置_电脑装机 |一次ITX黑苹果主机搭建分享
  10. PowerBuilder 9日历控件展示,下载(附带源码)2
  11. PLUTO SDR入门系列之九:强大的开源软件“gnu radio”
  12. 六祎-网易云视频下载
  13. Windows聚焦壁纸保存方法
  14. 总体设计(五个基本原理、软件结构图)
  15. android怎实现拼图功能,基于Android的趣味拼图的实现
  16. Python爬虫入门教程 7-100 蜂鸟网图片爬取之二 1
  17. 苏格拉底谈爱情、婚姻、外遇与生活
  18. c语言 不同的io口组成数组,本章内容并行IO口电路结构认识C语言C语言基本语句C语.ppt...
  19. 八、vue_options之computed、watch属性选项
  20. 网页复制内容修改(解决复制文本多空格问题,带标注信息(如版权信息))

热门文章

  1. mysql 错误 #2054 解决方案
  2. Redis在手,跟我走
  3. Qt读取界面的时间dateEdit,并将时间写入数据库中
  4. 【方法】Latex使用BibTeX生成参考文献列表
  5. unity中获取FPS
  6. 微信小程序运营系列(八)——怎么玩转中高频行业运营?
  7. Spark数据倾斜解决方案(收藏级)
  8. React+Antd 无插件 实现多个输入框验证码功能 + 倒计时(附完整代码)
  9. MATLAB模拟布丰投针实验
  10. 英特尔Haswell处理器已出货 预计6月推出