1 网络结构
- 首先输入图像,进行尺度裁剪成固定的M*N,如果比例不匹配可以先填充再裁剪
- backbone进行特征提取,常见的有VGG16、Resnet 50等
- 对特征图进行特征提取,进入RPN,RPN中有两个分支,上面一部分用于判断有无目标,下面一部分负责对候选框的位置进行调整
- Roi Pooling层则利用RPN生成的proposals从feature maps中提取特征proposal features
- 最后送入FC全连接层和softmax网络完成检测任务
2 锚框生成
锚点由图像经过特征提取后的维度所组成,每个锚点有9个先验框,每个框包含左上和右下角的坐标
- 4个值表矩形左上和右下角点坐标:
(𝑥1 , 𝑦1 , 𝑥2 , 𝑦2) - 9个矩形共有3种形状,长宽比为大约为:
{1:1 ,1:2 ,2:1}
正负样本标签划分:
正样本:anchor box与GT box的IOU≥0.7且为当前anchor box中IOU最大的框
负样本:anchor box与GT box的IOU≤0.3
训练中会采用128个正anchors和128个负anchors所样本进行训练
3 RPN结构
功能:
- 判断有无目标的概率
- 调整后anchor box的位置
上面一条用softmax分类anchors获得positive和negative,1118(9个框,判断有无目标),下面一条用于计算对于anchors的bounding box regression偏移量1136(9个框,4个坐标左上和右下),两个分支的结果作为Proposal layer的输入
Proposal Layer负责综合位置调整参数和positive anchors, 计算出用于后续筛选的proposal。
处理流程:
① 依据位置调整参数对所有的anchors box做调整;
② 按照输入的positive softmax scores由大到小排序anchors,提取前pre_nms_topN(e.g.6000)个anchors;
③ 限定超出图像边界的positive anchors为图像边界;
④ 剔除尺寸非常小的positive anchors;
⑤ 对剩余的positive anchors进行NMS;
⑥ 之后输出proposal=[x1, y1, x2, y2],对应的是MxN的图像尺;(下采样多少反推回去)
4 Roi pooling
将RPN输出的proposal boxes作为依据从原始的feature maps中截取特征
由于proposal是对应MxN尺度的,所以首先使用spatial_scale参数将其映射回(M/16)x(N/16)大小的feature map尺度。
对于得到的proposal进行固定标准的划分,然后进行max pooling处理,大小不同的proposal输
出结果都是固定大小。
5 分类和回归任务
① 通过全连接和softmax对proposals进行分类
② 再次对proposals进行bounding box regression,获取更高精度的bbox
6 损失函数
RPN中使用的损失函数:
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(\left\{ p_{i}\right\} , \left\{ t_{i}\right\})= \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∗)
对应目标概率和边界框调整,λ作为平衡参数
cls用于分类网络训练,采用的是交叉熵损失;
reg loss用于bounding box regression 网络训练,采用soomthL1;
L r e g ( t i , t i ∗ ) = ∑ i ∈ { x , y , w , h } s m o o t h L 1 ( t i − t i ∗ ) L_{reg}(t_{i},t_{i}^{*})= \sum _{i \in \left\{ x,y,w,h \right\}}smooth_{L1}(t_{i}-t_{i}^{*}) Lreg(ti,ti∗)=i∈{x,y,w,h}∑smoothL1(ti−ti∗)
( p i , p i ∗ ) 代表正负样本 (p_{i},p_{i}^{*})代表正负样本 (pi,pi∗)代表正负样本
( t i , t i ∗ ) 代表预测框和真实框 (t_{i},t_{i}^{*})代表预测框和真实框 (ti,ti∗)代表预测框和真实框
7 训练流程
搬运知乎大佬
- 在已经训练好的model上,训练RPN网络,对应stage1_rpn_train.pt
- 利用步骤1中训练好的RPN网络,收集proposals,对应rpn_test.pt
- 第一次训练Fast RCNN网络,对应stage1_fast_rcnn_train.pt
- 第二训练RPN网络,对应stage2_rpn_train.pt
- 再次利用步骤4中训练好的RPN网络,收集proposals,对应rpn_test.pt
- 第二次训练Fast RCNN网络,对应stage2_fast_rcnn_train.pt