论文研读: Faster R-CNN

目录

[TOC]

摘要

abstract

代码:https://github.com/rbgirshick/py-faster-rcnn

论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
(https://arxiv.org/pdf/1506.01497.pdf)

引入

我们首先回顾一下 Fast R-CNN 的主要步骤:

  1. 特征提取:输入整张图片,利用 CNN 提取图片的特征。
  2. 提取候选区域:使用 selective search 从原始图片中提取出区域候选框,并把这些候选框一一投影到最后的特征层。
  3. 进行分类和回归:通过两个全连接层,分别用 softmax 进行目标分类识别和用回归模型进行边框位置和大小的微调。

Fast R-CNN 虽然比 R-CNN 和 SPP-net 都快,但是速度也依然不够快,因为使用 selective search 进行候选区域提名是个耗时的过程。论文中指出使用 Selective Search 在 CPU 上执行每张图需要2s,即便是使用另一个候选窗口提取模块:EdgeBoxes,也需要0.2s。而Faster R-CNN 去掉了 Selective search, 通过引入 RPN (Region Proposal Networks) 来提取候选窗口,使得区域提名、分类、回归能共享卷积层,节约了计算时间,进一步提高了检测速度,实现了端到端的训练。

RPN如何工作的?

  1. 输入图片经过CNN基础网络,在最后一个卷积层输出一系列 feature maps.
  2. 在这些 feature maps 上运行滑动窗口,滑动窗口的大小为 n × n ( 论文中使用的是 3 ×3),输出指定通道数(256维)的响应图。对feature map 里的每个像素点,预设生成 k (这里为9)个 anchor box, 它们都具有相同的中心,但是有3种不同尺寸和3种不同长宽比。
  3. 将从卷积特征图中提取的3×3空间特征送到较小的网络,该网络具有两个任务:分类(cls)和回归(reg)。回归量输出确定预测物体边界框(x,y,w,h),也就是坐标和大小;分类子网输出指示预测框是否包含检测对象。因此这里要求每个 anhcor 要分 foreground 和 background,且每个 anchor 都有 (x, y, w, h) 对应4个偏移量 ,假设有 k 个 anchor boxes, 那么预测框是否包含检测对象的输出 scores 就有 2k 个,预测物体框的坐标和大小就有 4k 个。至此,RPN 就生成了尺度和长宽比不一样的Region Proposal。

RPN 网络结构:
rpn网络结构

anchor:
anchor

Faster R-CNN

faster rcnn

算法流程

  1. 特征提取: 和 Fast R-CNN 一样,输入整张图片,通过 CNN 得到特征图。
  2. RPN 选取候选窗口:在最终的卷积特征层上,为每个像素点利用 k 个不同的矩形框(Anchor Box)进行提名,k 一般取9。
  3. 区域判定和回归: 对每个矩形框对应的区域进行 object/non-object 二分类,并用k个回归模型(各自对应不同的矩形框)微调候选框的位置与大小。
  4. 分类与回归:对区域提名网络给出的区域结果进行筛选,进行目标分类和边框回归。

两种 Faster R-CNN 训练过程

四步交替训练法

  1. 基于预训练模型训练 RPN。
  2. 基于预训练模型,以及上一步得到的 RPN,训练 Fast R-CNN。
  3. 固定共享的卷积层,训练 RPN。
  4. 固定共享的卷积层,基于上一步得到的 RPN,训练 Fast R-CNN。

end-to-end训练法

  1. 同时学习RPN和分类网络。
  2. 分类网络的梯度不向RPN回传。

实验结果

使用不同的 region proposal 方法:

共享卷积vs不共享卷积:

RPN召回率:

One-Stage Detection vs. Two-Stage Proposal + Detection:

结论

Faster R-CNN 通过引入 RPN 网络产生候选框,并且和下游目标检测网络共享卷积特征,使得候选框数目从原有的约2000个可以减少为300个,且候选框的质量也有本质的提高,无论是检测速度(能达到5-17fps),还是检测精度都有较大的提升。

参考链接

https://tryolabs.com/blog/2018/01/18/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection/

https://zhuanlan.zhihu.com/p/31426458

https://www.quora.com/How-does-the-region-proposal-network-RPN-in-Faster-R-CNN-work

https://arxiv.org/pdf/1506.01497.pdf

https://github.com/rbgirshick/py-faster-rcnn


笔者目前主要从事自动驾驶研发工作,本公众号主要关注机器人和自动驾驶方向的技术以及最新进展,闲暇时也和大家聊聊读书、生活以及最新的电子科技产品,希望大家喜欢,共同进步!

欢迎关注

打赏作者