Faster R-CNN论文解析


本篇博客将要解析的论文是Faster R-CNN,论文地址为: https://arxiv.org/abs/1506.01497

一、介绍

本文是Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun等人于2016年发表的一篇论文,提出了Faster R-CNN,进一步改进了Fast R-CNN模型,创造性地提出了Region Proposal Nerwork,将卷积神经网络引入目标检测领域的Region Proposal过程,在性能和速度上都获得了较大提升,成为了目标检测领域一个很强的BaseLine。

二、拟解决的关键问题

目前性能较好的目标检测算法大都基于区域推荐来完成。SPPNet以及Fast R-CNN通过共享特征的方法,极大地提升了目标检测算法中检测器的运行速度和性能,但仍然受限于区域推荐的运行速度。

目前目标检测算法中,区域推荐算法主要采用的有Selective Search以及EdgeBoxes等传统方法。

  • Selective Search:基于人工设计的低级特征,采用贪心算法,不断合并超像素以获取推荐区域;相较于Fast R-CNN检测网络来说,速度太慢,在CPU上一张图片大致需要2s。
  • EdgeBoxes目前能在推荐质量和速度之间取得最好的平衡,但也仍然需要0.2s每张图片。

并且区域推荐算法主要是在CPU上实现,这也限制了其运行速度。
为了提升区域推荐算法的运行速度,一个比较直接的想法是用GPU去实现区域推荐算法,但这种方法忽略了后续的检测器,也失去了与检测器共享计算,进一步提升运行速度的机会。

为了解决这个问题,Faster R-CNN提出了Region Proposal Network(RPN),RPN与检测网络共享特征,从而可以在不增加太多计算量的情况下,更快更好地获取推荐区域。
RPN是一个全卷积网络,在每个位置同时预测边界框以及目标的得分。同时为了使得生成的推荐区域,具有多种尺寸和比例,RPN提出了Anchor Box的概念。将Anchor Box作为参考,RPN可以产生多个尺寸、多个比例的推荐区域。
RPN可以看做是一种Attention机制,通过RPN得到的推荐区域,让后续检测器重点对这些区域进行检测,以提高模型的检测性能。

综上,可知:Faster R-CNN = Region Proposal Network + Fast R-CNN。

三、Faster R-CNN结构

Faster R-CNN包含两个模块:RPN模块和Fast R-CNN检测器。下图为Faster R-CNN的结构图。
Faster R-CNN结构图

图1 Faster R-CNN整体结构图

1. Region Proposal Network

  • RPN输入:一张任意大小的图片
  • RPN输出:一系列的矩形推荐框以及每个框对应的分数值(是否属于目标或者是背景)

为了提高运行速度,RPN被设计得与Fast R-CNN共享一组卷积层。
RPN是一个全卷积的小网络,以滑窗的方式在最后一个共享卷积层输出的feature map上滑动,以产生一系列的推荐框。

  • 小型网络输入:一个在feature map上尺寸为 n ∗ n n * n nn的空间框( n = 3 n=3 n=3,由于共享卷积层的最后的feature map的感受野已经足够大,因此,空间框的大小可稍小一些)
  • 小型网络输出:一个低维度的特征向量

该特征向量会送入到两个同级的全连接层(一个框回归层(reg)以及一个框分类层(cls))中;由于该小型网络采用的是滑窗的方式,因此,这两个全连接层在各个滑窗位置上是共享的。

完整的RPN可以采用一个 n ∗ n n*n nn的卷积层和两个 1 ∗ 1 1*1 11的卷积层来实现。

(1) Anchors

每个滑窗位置,同时预测多个推荐框,每个位置所能预测的框的数目最大为 k k k.

  • 对于reg层,有 4 k 4k 4k个输出,对应 k k k个框的坐标信息
  • 对于cls层,有 2 k 2k 2k个输出,对应每个推荐框是否包含目标的概率

这里的 k 个 k个 k推荐框,即为所谓的Anchors
Anchor就是以滑动窗的中心为中心,具有不同尺度和比例的一系列参考框,本文使用3种尺度、3种比例,也就是 k = 3 ∗ 3 k = 3 * 3 k=33,对于一个大小为 W ∗ H W * H WH的feature map来说,共有 W H k WHk WHk个anchors

(2) Loss Function

为了训练RPN,需要对每个anchor分配一个二元类别标签(是否为目标):

positive label:

  • 与一个ground-truth box具有最高的IOU
  • 与某个ground-truth box的IOU超过0.7

negative label:

  • 非positive且与任意ground-truth box的IOU都小于0.3

除此之外的anchor均抛弃;跨边界的anchor也全部忽略

(3) Training RPN

“image-centric” sampling strategy(此处可以参考我的另一篇博客Fast R-CNN

  • 一张图片上采样256个Anchors
  • positive:negative大致为1:1,若positive不够128,则用negative补充

2. RPN与Fast R-CNN间共享特征

训练策略:

  1. 交替训练
    • 首先训练RPN
    • 用RPN产生的推荐框去训练Fast R-CNN
    • 经过Fast R-CNN微调后的网络再产生RPN
    • 循环上述过程
  2. 近似联合训练
    • 将RPN和Fast R-CNN合并为一个网络
    • 在每次迭代过程中,训练Fast R-CNN时,将RPN产生的推荐框视作是固定的、提前计算产生的
    • 但产生的框实际也是网络的响应,所以这是种近似(emmm,这个部分没太懂)
  3. 非近似联合训练
    • ROI Warping
  4. 4步交替训练
    • 首先训练RPN
    • 用RPN产生的推荐框去训练Fast R-CNN,此时不共享卷积层
    • 用训练后的Fast R-CNN的卷积层去初始化RPN,并固定共享卷积层,仅微调RPN独有的层,此时RPN与Fast R-CNN共享卷积层
    • 固定共享卷积层,仅微调Fast R-CNN独有的层

四、总结

Faster R-CNN完成了Fast R-CNN未完成的任务,将区域推荐也纳入到了一个完整的可训练的简单流程中,RPN的提出也为后续众多目标检测算法所采纳。但个人认为,RPN实际上相当于是用特征图对检测框进行回归,个人感觉非常的“玄学”,不及传统区域推荐算法可解释性强,但其速度较快且性能也好,也就一直被采纳下来。

最后附上一些优秀参考博客。

五、参考文献

[1] https://zhuanlan.zhihu.com/p/31426458
[2] https://blog.csdn.net/v_JULY_v/article/details/80170182
[3] http://noahsnail.com/2018/01/03/2018-01-03-Faster%20R-CNN%E8%AE%BA%E6%96%87%E7%BF%BB%E8%AF%91%E2%80%94%E2%80%94%E4%B8%AD%E8%8B%B1%E6%96%87%E5%AF%B9%E7%85%A7/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值