Fater-Rcnn原理详解
Fast rcnn在cpu上用ss提取region proposal,将提取的region proposal用于cnn提取特征。为了将提取region proposal的部分转移到gpu进行操作,作者将cnn可以用来提取特征想法与提取region proposal结合起来,将提取的特征映射回原图提取proposal。
Faster Rcnn的整个流程图如下
一、RPN(region proposal network)
1.将输入图像进行reshape成MXN (800X600),并将reshape的信息储存到 im_info
2.将reshape后的图像输入到conv layer提取Feature Map(800/16 X600/16 = 50 X 38,下采样16次)
3.将Feature Map进行sliding window式的多通道图像卷积(filter = 3),历遍每一个点。
具体是将每一个点映射回MXN的图像中,以该点为中心预测9个anchor boxes,
anchor box128、256、512三个尺寸,以及radio为(0.5 ,1,2)
所以anchor box的最小尺寸为64 X 64,最大为1024X1024,(这两个数据可能有误)可以cover图中的各种尺度
4.将得到的anchor boxes分别输入到softmax网络和bbox regression网络进行打分
softmax网络用于判定anchor boxes中的物体是属于foreground还是background)
(18的原因是9个anchor box的尺寸,每个都有是前景与背景的两种可能)
(
foreground与background的判断
与任意GT相比,拥有最高的IOU的anchor为前景(可以低于0.7)
与任意GT相比,IOU>0.7为前景
与任意GT相比,IOU<0.3为背景
其余的非负非正,则没有用
)
bbox regression网络用于对anchor boxes进行初步微调
(36 的原因是9个anchor box的尺寸,每个都有对应的4个偏移量)
5.将softmax网络得到的fg、bg参数、bbox regression网络得到的4个偏移量、参数feat_stride=16以及im_info中的内容结合在一起得到,得到来自原图的proposals
得到的proposals太多了,要用对得到的proposal进行筛选
①生成anchors,利用对所有的anchors做bbox regression回归(这里的anchors生成和训练时完全一致)
②提取修正位置后的foreground anchors
③限定超出图像边界的foreground anchors为图像边界(防止后续roi pooling时proposal超出图像边界)
④剔除非常小(width<threshold or height<threshold)的foreground anchors
⑤进行nonmaximum suppression
⑥再次按照nms后的foreground softmax scores由大到小排序fg anchors,提取前post_nms_topN(e.g. 300)结果作为proposal输出(注意:这里的输出)
二、proposals提取后进入Fater RCNN进行训练
相当于另外一种RPN 与 Fast-Rcnn的联合训练
实际中训练过程分为6个步骤:
- 在已经训练好的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