目标检测之Faster RCNN分析
基本流程
- 图像输入网络得到特征图
- 使用RPN生成候选框,将候选框投影到特征图获得特征矩阵
- 对特征矩阵使用ROI pooling得到特征图并展平,得到预测结果
重点解析
RPN在网络中的位置
在上图中,从feature map层来看,有两个指向上层的箭头,其中左侧指向Region Proposal Network的即为RPN结构,右侧指向Roi pooling与fast rcnn保持一致。
RPN结构
在feature map上使用
3
∗
3
3*3
3∗3滑动窗口,每一个位置得到一个256维向量(不唯一,此处backbone输出的深度为256),然后经过全连接层,得到分类的2k个分数(对应右侧指向的k个anchor,每个anchor两个参数描述前景概率与后景概率),与位置框回归的4k个参数。
特征图的anchor与原图的对应关系:
由原图与特征图的放缩比例系数,可计算出特征图的anchor中心对应在原图的坐标,然后在原图上生成一系列指定大小的anchor。
在原图上的anchor,每个位置有9个不同大小,三种面积{128
∗
128
128*128
128∗128,
256
∗
256
256*256
256∗256,
512
∗
512
512*512
512∗512},三种长宽比例{
1
:
1
1:1
1:1,
1
:
2
1:2
1:2,
2
:
1
2:1
2:1}
2k参数(每两个一组,表示(前景概率,后景概率)):
( 0.2 | 0.8) | (0.7 | 0.3) | (0.4 | 0.6) | (0.9 | 0.1) | … | … | … |
---|
4k参数(每四个一组,表示第k个anchor的预测回归(
d
x
k
,
d
y
k
,
d
w
k
,
d
h
k
d_x^k,d_y^k,d_w^k,d_h^k
dxk,dyk,dwk,dhk)):
( 0.12 | 0.21 | 0.74 | 0.33) | (0.54 | 0.16 | 0.09 | 0.21) | … | … | … |
---|
RPN损失函数
由分类损失与边界框的损失组成
其中
p
i
p_i
pi是第i个anchor预测为真实标签的概率
p
i
∗
p_i^*
pi∗正样本为1,负样本为0
t
i
t_i
ti是预测第i个anchor的边界框的参数
t
i
∗
t_i^*
ti∗是真实框的参数
N
c
l
s
N_{cls}
Ncls是一个batch中的样本数量
N
r
e
g
N_{reg}
Nreg是anchor位置个数
Faster R-CNN训练
论文中采取RPN Loss + Fast R-CNN Loss联合训练方法
- 使用预训练分类模型初始化卷积网络参数(即上图中的CNN层),单独训练RPN网络(上图左侧箭头部分)
- 固定RPN网络的卷积层与全连接层参数,并使用RPN网络生成的目标框训练Fast RCNN网络(上图右侧箭头部分)
- 固定训练好的Fast RCNN网络参数,微调RPN网络参数
- 固定RPN网络的卷积层与全连接层参数,微调Fast RCNN网络参数(Roi pooling层及以后)