基本流程
- 图像输入网络得到特征图
- 使用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层及以后)