介绍
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数据集中的图片,标出两只猫的边框坐标、边框长宽尺寸
步骤
- 预处理图片
- RPN网络模型
- 卷积操作
预处理图片
一般将图片的 短边 缩放到 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的标签,这里的标签包括两个部分:
- 类别标签
- 偏移量
有多个anchor box,到底该选取哪一个呢?这是就要通过 交并比 进行选择。试想一下,如果用一个固定尺寸的anchor,那么对于anchor的标记就没有了针对性。
感谢:
https://blog.csdn.net/Boys_Wu/article/details/102703710
https://zhuanlan.zhihu.com/p/31530023





