I. Motivation
FastR-CNN中的Selective Search方法速度很慢,制约了模型的效率,Selective Search的缺点有:(1) 基于engineered low-level features,不能利用检测网络低层提取的特征;(2) 在CPU上运行,而CNN是在GPU上运行;
Faster R-CNN的创新点就在于让region proposal和detection network这两部分能够share computation。Faster R-CNN可以简单地看做“区域生成网络RPNs + Fast R-CNN”的系统,用RPN代替FastR-CNN中的Selective Search方法。RPN可以看作attention机制,告诉Fast R-CNN该看哪里。
I. RPN(Region Proposal Networks)
RPN是全卷积网络(FCN),输入是任意尺寸的图片,输出是候选框的objectness score和定位坐标。如下图所示,RPN在最后一层conv layer输出的feature map上滑动
n
×
n
n\times n
n×n尺寸的窗口 (论文中n=3),然后每个滑动窗口的输出被映射成一个低维特征,再将这个低维特征输入两个sibling FC layers (box-regression layer + box-classification layer)。
1. Anchors
每个滑动窗口都会预测k个候选框,因此对于每个滑动窗口,reg layer有4k个输出 (k个候选框的定位坐标),cls layer有2k个输出 (k个候选框属于前景和背景的概率)。这k个候选框的参数是相对于k个anchors来说的。k个anchors为中心在滑动窗口,scale和aspect ratio各异的矩形框 (论文中k=9)。假设conv feature map的尺寸为
W
×
H
W\times H
W×H,则共有
W
H
k
WHk
WHk个anchors。
这种方法的优点有:
(1) 实现了平移不变性 (translation invariant),即目标在图片上发生移动时,其对应的预测候选框也会相应移动,预测候选框的参数也会相应变化。
(2) 提出了一种新的应对多尺度/比例(multi-scale/aspect ratio)目标的方法:pyramid of anchors。如下图所示。
2. Loss Function
给两类anchors打正标签:(1) 与某个gt box的IoU最大的anchor;(2) 与任一个gt box的IoU超过0.7的anchor。给IoU低于0.3的非正anchor打负标签。其他的anchors弃去不用,另外跨越图像边界的anchors也弃去不用。
Loss Function使用Fast R-CNN中的multi-task loss:
L
(
{
p
i
}
,
{
t
i
}
)
=
1
N
c
l
s
∑
i
L
c
l
s
(
p
i
,
p
i
∗
)
+
λ
1
N
r
e
g
∑
i
p
i
∗
L
r
e
g
(
t
i
,
t
i
∗
)
L(\{p_i\}, \{t_i\})=\frac{1}{N_{cls}}\sum_i L_{cls}(p_i, p_i^*)+\lambda\frac{1}{N_{reg}}\sum_i p_i^*L_{reg}(t_i, t_i^*)
L({pi},{ti})=Ncls1i∑Lcls(pi,pi∗)+λNreg1i∑pi∗Lreg(ti,ti∗)
其中
i
i
i为一个mini-batch中某个anchor的下标。具体计算方法见fast RCNN一文Multi-task loss部分。
3. 训练RPN
(1) 采样方式:每个mini-batch包含从一张图像中提取的256个anchor,前景背景样本1:1
(2) 权重初始化:原始特征提取网络使用针对ImageNet分类任务的预训练模型初始化,其余新增层随机初始化 (
Gaussian distribution:
μ
=
0
,
σ
=
0.01
\text{Gaussian distribution: }\mu=0, \sigma=0.01
Gaussian distribution: μ=0,σ=0.01)。
(3) 训练超参数:前60K迭代,学习率0.001,后20K迭代,学习率0.0001。 momentum设置为0.9,weight decay设置为0.0005
III. RPN和Fast R-CNN特征共享 这部分看参考文章(1) 共享特征 部分
IV. 实验 这部分看参考文章(1) 实验 部分
参考:
(1)【目标检测】Faster RCNN算法详解
(2) 基于ZF网络的Faster RCNN网络结构详解