Region Proposal Networks(RPN)(Faster R-CNN)

介绍

Region Proposal Networks,简称RPN,在 《Faster R-CNN》 论文中首次提出,此后在很多目标检测算法中,都应用了 RPN

  • RPN 是 Faster R-CNN 的核心
  • full convolutional network 全卷积神经网络,没有全连接层,输入的图片不需要调整相同大小
  • end-to-end

为什么提出 RPN

在R-CNN、Fast R-CNN中,使用 selective search 算法选取候选框,但效率慢,没有发挥卷积神经网络的优势。

selective search ,非深度学习算法,无法用GPU
参见:https://www.malaoshi.top/show_1EF5YEscPZ4F.html

借鉴 SPP ,提出 Region Proposal Networks (RPN) ,替代 selective search 算法

作用

将图像中 可能存在物体 的区域 选取出来(框起来)

名词解释

region proposal

可能有物体的区域,一般称为:候选框,候选区域

Region of Interests(ROI)

同 region proposal,可能有物体的区域,一般称为:感兴趣的区域

anchor box

锚框,下面有详细介绍

bounding boxes

边框

ground truth

真实值,真实标签,在目标检测中,指训练数据集中,图片上标出物体的边框坐标、边框长宽尺寸

如下图是VOC2007数据集中的图片,标出两只猫的边框坐标、边框长宽尺寸

步骤

  1. 预处理图片
  2. RPN网络模型
  3. 卷积操作

预处理图片

一般将图片的 短边 缩放到 600 像素,长边 等比例缩放

RPN网络模型

第一部分

使用 全卷积神经网络,卷积层可以与Faster R-CNN目标检测网络共享计算

由于没有全连接层,所以输入图片的尺寸不需要相同

在论文中,使用 ZFNet(5个卷积层) 和 VGG16(13个卷积层) 做研究

???????也可以使用 ResNet

第二部分

在输出的特征图上,使用 nxn(论文中n=3)的卷积核进行卷积,每个滑动窗口都映射到一个低维特征(ZF为256-d,VGG为512-d,ReLU)。

再输入到两个全连接层(又1x1的卷积核代替,见下面)——一个box-regression layer(reg)和一个box-classification layer(cls)。

注意到输入图像上的有效接收场很大(ZF和VGG分别为171和228像素)。

这个小型网络如下图:

注意:由于小型网络以滑动窗口的方式运行,所有空间位置共享完全连接的层,所以由一个n×n卷积层和两个1×1卷积层(分别用于reg和cls)构成。

输出结果

输出一组矩形的候选区域

如果该候选区域有物体,标出该区域的位置

anchor box

参考框(reference boxes),在论文中称之为:anchor 锚

在Faster R-CNN中首次提出,之后多个目标检测算法中都有用到,如:SSD、YOLOv2、YOLOv3等

目的:为了检测 多个、不同尺寸 的物体

3种面积 和 3种长宽比

论文中,特征图 中每个像素点有 3 种面积:8^2,16^2,32^2

3种长宽比:1:1,1:2,2:1

3种面积,每个面积有3种长宽比,所以:特征图中每个像素点都有 9 个anchor box

特征图大小为包含w*h(一般是2400)像素点,共有 w*h*9(21600)个anchor box

将 anchor box 映射到输入图像

在 VGG16 神经网络中,输入图像和输出特征图的比例是16:1,也就是说:特征图中的一个像素点,映射到原图中是16x16大小的区域

特征图中每个像素点 9个anchor box,映射到原图上,其中 3 种面积的anchor box,映射到 输入图 的面积:(8*16)^2,(16*16)^2,(16*32)^2,即:128^2,256^2,512^2

如下图(为了简单,特征图与输入图的比例是1:2):

多尺寸锚作为回归参考

用多尺寸和长宽比的 anchor box 对 bounding boxes 进行分类和回归。它只依赖于单一尺度的图像和特征图,使用单一尺度的滤波器

忽略超过边界的 anchor box

左图是特征图,右图是输入图像,像这种超出边界的 anchor box,忽略掉,否则训练不会收敛

对于典型的 1000×600 的输入图像,特征图大约是60x40,总共将有大约20000(≈60×40×9)个anchor box,忽略超过边界的 anchor box 后,约有6000个 anchor box 用于训练

其他

记录 anchor box与GT box中心点坐标
只选用256个样本,大于0.7,小于0.3各占一半

Loss Function

输出一组矩形的候选区域,每个候选区域有一个 分值,该分值表示是否有物体,大于 0.7 表示有物体,小于 0.3 表示没有物体, 0.3 ~ 0.7 忽略掉

如果有物体,标出该区域的位置

Training RPNs

梯度下降:SGD

实现细节

预测出跨边界的建议框

可能会预测出跨边界的建议框(proposal boxes),将其剪裁到图像边界,如下图左侧部分要裁减掉

IoU

将 输入图像 上的 anchor box 与 ground truth 做 IoU,大于 0.7 表示有物体,小于 0.3 表示没有物体, 0.3 ~ 0.7 忽略掉

NMS

将 NMS 的IoU阈值定为0.7,这样每幅图像大约有 2000个 建议区域。

NMS不会减少最终的检测精度,而且会大大减少 region proposal 的数量。

top-N

在NMS之后,将排名前N的 region proposal 进行检测。

训练 和 测试

  • 由于数据量较多,一张图片有n个anchor box等相关信息,所以训练时,是一张一张图片训练

  • 使用2000 RPN pro-posals训练 Fast R-CNN,但是在测试时用不同数量的 region proposal

废弃

为了得到更大的交并比(intersection over union, IOU)。
例子:以训练阶段为例。
对于计算机视觉,比较容易理解的是真实标签(ground truth),人为为每个目标标记的标签。但是在加入anchor box思想之后,在训练集中,我们将每个锚框视为一个训练样本。因此,为了训练目标模型,需要标记每个anchor box的标签,这里的标签包括两个部分:

  1. 类别标签
  2. 偏移量

有多个anchor box,到底该选取哪一个呢?这是就要通过 交并比 进行选择。试想一下,如果用一个固定尺寸的anchor,那么对于anchor的标记就没有了针对性。

感谢:
https://blog.csdn.net/Boys_Wu/article/details/102703710
https://zhuanlan.zhihu.com/p/31530023