In this paper, we show that an algorithmic change—computing proposals with a deep convolutional neural network—leads to an elegant and effective solution where proposal computation is nearly cost-free given the detection network’s computation. To this end, we introduce novel Region Proposal Networks (RPNs) that share convolutional layers with state-of-the-art object detection networks [1], [2]. By sharing convolutions at test-time, the marginal cost for computing proposals is small (e.g., 10ms per image).
在Fast R-CNN中并没有对(R-CNN中使用的)Selective Search 进行候选区域的选择进行改进,仍然不能实现真正意义上的edge-to-edge的训练和测试。
这一问题在Faster R-CNN中得到了解决。Faster R-CNN使用了RPN(Region Proposal Network)进行region proposal 的选择,并且将RPN网络合并到CNN网络中,真正地实现了端到端的目标检测。
这也是Faster R-CNN的里程碑式的贡献。
We further merge RPN and Fast R-CNN into a single network by sharing their convolutional features—using the recently popular terminology of neural networks with “attention” mechanisms, the RPN component tells the unified network where to look.
Faster R-CNN的基本工作流程如下:
1)把整张图片输进CNN网络,得到Feature Map;
2) 卷积特征输入到RPN,得到候选框的特征信息;
3)对候选框中提取出的特征使用分类器判别是否是属于一个特定类;
4)对于属于某一特征的候选框,用回归器进一步调整其位置。
Faster R-CNN的主要突破点在于RPN这个结构。
RPN是用于提取 region proposal 的神经网络,RPN网络的特点在于通过滑动窗口的方式实现候选框的提取,每个滑动窗口位置生成9个候选框(不同尺度、不同宽高),提取对应的9个候选框(anchor)的特征,用于目标分类和边框回归,与 Fast R-CNN 类似。目标分类只需要区分候选框内特征为前景或者背景。
那么RPN是怎么筛选候选框的呢?
1)对于
I
o
U
≥
0.7
IoU\geq0.7
IoU≥0.7的标记为前景样本(正样本),IoU<0.3 的样本标记为背景样本(负样本);
2)
I
o
U
∈
[
0.3
,
0.7
)
IoU\in[0.3, 0.7)
IoU∈[0.3,0.7)上的样本丢弃,称之为边界样本;
对于每一个位置,通过两个全连接层(目标分类+边框回归)对每个候选框(anchor)进行判断,并且结合概率值进行舍弃(仅保留约300个anchor),没有显式地提取任何候选窗口,完全使用网络自身完成判断和修正。
RPN中还采用了两种损失函数,分别是分类误差函数和前景样本窗口位置偏差函数。这有效地提升了损失函数的效果。
Faster R-CNN 的训练也和前面的网络有一些区别,比如通过使用共享特征交替训练的方式,达到接近实时的性能。具体来说,首先根据现有网络初始化权值w,训练RPN,然后用RPN提取训练集上的候选区域,用候选区域训练Fast R-CNN,更新权值w,通过这两步不断重复,直到收敛为止。