文章只是粗浅理解,并不详细,可能有不准确的地方,敬请指正
0. 概述
RPN, Reigion Proposal Network, 中文名称为候选区域提取网络,最早在faster RCNN一文中提出,用于提取目标候选框。
1. 产生动机
RCNN系列的三篇文章都是two-stage目标检测方法,将目标的检测和识别分开来做,也就是说先找到哪些区域可能存在目标,然后在将这个框送进目标识别网络。在faster RCNN
的前作,RCNN
和fast RCNN
网络中,使用的SS(Selective Search)
方法,该方法计算量巨大,基本上2秒才能处理一幅图像,缺点太大。因此针对这一问题,faster RCNN
作者在文中提出了RPN
网络来代替SS
算法,将速度提升了将近10倍。
2. 网络结构
RPN网络还是要结合faster RCNN
来说,faster RCNN
的网络结构如下:
faster RCNN
网络分为三个部分:
1、用于提取特征的CNN网络,也就是backbone;
2、用于提取候选框的RPN网络;
3、用于目标识别的识别网络。
在feature map进入RPN网络后,会首先经过一个
3
×
3
3×3
3×3的卷积层,然后分别经过两路
1
×
1
1×1
1×1的卷积层,上边一路输出的是候选框的置信度,即该框有目标的置信度;下边的框输出的是候选框的位置信息。
为了获取proposal(候选框),在最后共享的卷积层输出的卷积特征图上滑动一个小的网络,也就是那个
3
×
3
3×3
3×3的卷积层,每个位置会生成
k
k
k 个proposal,在论文里边
k
=
9
k=9
k=9,也就是说如果feature map的尺寸是
M
×
N
M×N
M×N,那么会生成
M
×
N
×
k
M×N×k
M×N×k 个proposal。
对于分类网络的输出,输出尺寸为
M
×
N
×
k
×
2
M×N×k×2
M×N×k×2, 为什么每个框输出两个类别呢,可以看到分类网络里边有一个softmax
层,这是一个二分类网络
对于回归网络的输出,每个proposal输出4个位置数据,于是输出的尺寸为
M
×
N
×
k
×
4
M×N×k×4
M×N×k×4
3. 训练方法
RPN网络是一个神经网络,他需要进行训练才能达到我们预期的效果。在训练的时候,我们会给予RPN提取出的proposals标签。
- 对以下两种情况的proposals,给于positive标签:
- 与groundtruth有最大的IOU交并比(可能不足0.7);
- 与某个groundtruth的交并比大于0.7。
- 如果与任意groundtruth交并比小于0.3,则为负标签,即该proposal是背景;
- 交并比大于0.3,但小于0.7,忽略,不纳入损失函数计算。
4. 推理使用
在网络进行推理的时候,RPN网络生成的这些proposals,数量是庞大的,而且重复性非常高,如果把这些框全都塞进目标识别网路,时长一定会感动你的… 所以要对这些框进行筛选。
剔除步骤:
1、 将初步确定的proposal映射回原图,判断初步确定的proposal是否大范围超过边界,剔除严重超出边界的proposal;
2、将proposals按照分类得分排序,选取前2000个分数最大的框;
3、最后对剩下的proposals进行NMS计算