Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
NIPS2015
https://github.com/ShaoqingRen/faster_rcnn
本文针对目标检测问题,在 Fast R-CNN 的基础上,提出 RPN 来改进候选区域提取,较大提升检测速度
Faster R-CNN = RPN+ Fast R-CNN, 而 RPN 中则相当于嵌套了一个小的 Fast R-CNN
3 Region Proposal Networks
我们直奔主题,聊聊 Region Proposal Network (RPN),一个 RPN 的输入时任意尺寸的图像,输出是一组矩形框候选区域,每个矩形框有一个objectness score,即属于某类物体的概率。我们用卷积网络对这个过程进行建模。 因为我们的最终目标是 和 目标检测网络 Fast R-CNN 共享计算,我们假定 RPN 和 Fast R-CNN 这两个网络是可以共享一组卷积层的。在我们的实验中, 我们分析了 ZF模型可以共享 5个卷积层, VGG 网络可以共享13个卷积层。
为了生成候选区域,我们在最后一个共享卷积层输出的卷积特征图上 滑动一个小网络(滑动模板匹配),这个小网络和 输入卷积特征图 n × n 区域是全链接的(这里我们设置 n=3)。注意这个 n=3对应输入图像中有效感受野还是挺大的,(171 and 228 个像素 for ZF and VGG)
每个滑动窗口内的卷积特征图上的特征被映射到一个低纬向量(ZF对应256维,VGG对应512维),然后这个向量被输入两个相邻全链接层 two sibling fully-connected layers,一个是矩形框回归层 a box-regression layer (reg),一个是矩形框分类层 a box-classification layer (cls)。
因为这个迷你网络以一种滑动窗口的方式运行,全链接层在所有的空间位置是共享的。这个架构很自然的实现方式如下:用一个 n × n 卷积层后面是两个相邻的 1 × 1 卷积层(分别对应 reg 和 cls)。 n × n 卷积层的输出后面应用 ReLUs
Translation-Invariant Anchors
在每个滑动窗口位置,我们同时预测 k 个候选矩形框,那么 reg layer 有 4k 个输出用于表示 k 个矩形框的坐标位置及尺寸大小信息。 cls layer 输出 2k 个概率用于表示每个矩形框包含/不包含物体的概率信息。 k个候选矩形框参数化表示为 k 个 reference boxes, called anchors。 每个 anchor 位于滑动窗口的中心位置,和 一个尺度及宽高比关联 scale and aspect ratio。这里我们使用 3个尺度和3个宽高比 得到 k=9 个 anchor 在每个滑动窗口位置。 对于一个尺寸为 W × H (typically ∼2,400) 的卷积特征图,一共有 WHk 个 anchor 。我们方法的一个重要属性是 平移不变性,对于 anchors 以及和 anchors 相关联的用于计算候选区域的函数都是一样的。
both in terms of the anchors and the functions that compute proposals relative to the anchors.
所谓的平移不变性就是 : 如果在图像中一个物体发生平移了,那么候选矩形框也应该平移,相同的函数可以在每个位置用于预测候选矩形框
If one translates an object in an image, the proposal should translate and the same function should be able to predict the proposal in either location.
简单的来说 RPN 就是在最后一层共享卷积层特征图上 使用 k个模板进行滑动窗口式物体检测,包括物体类别预测及矩形框位置回归。 也可以看做将检测问题变为分类问题。
RPN 里面嵌套了一个 Fast R-CNN,将每个滑动窗口看做一个候选矩形框,对该矩形框进行 CNN 分类操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:重温目标检测–Faster R-CNN - Python技术站