详细解读Faster-RCNN

上传人:go****e 文档编号:137289244 上传时间:2020-07-07 格式:PPTX 页数:26 大小:1.71MB
返回 下载 相关 举报
详细解读Faster-RCNN_第1页
第1页 / 共26页
详细解读Faster-RCNN_第2页
第2页 / 共26页
详细解读Faster-RCNN_第3页
第3页 / 共26页
详细解读Faster-RCNN_第4页
第4页 / 共26页
详细解读Faster-RCNN_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《详细解读Faster-RCNN》由会员分享,可在线阅读,更多相关《详细解读Faster-RCNN(26页珍藏版)》请在金锄头文库上搜索。

1、解读FasterRCNN,2018.12.26,FasterRCNN简介,经过RCNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster RCN已经将特征抽取(feature extraction),proposal提取,bounding box regression(rect refine),classification都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。,论文作者看来FasterRCNN可以分为4个部分,1、Conv layers。作为一种CNN网络目标检测方法,Faster R

2、CNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。 2、Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。 3、Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposalfeature

3、maps,送入后续全连接层判定目标类别。 4、Classification。利用proposalfeature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。,Conv layers部分共有13个conv层,13个relu层,4个pooling层。在Conv layers中:所有的conv层都是:kernel_size=3,pad=1,所有的pooling层都是:kernel_size=2,stride=2。最终一张M x N的图像经过Conv layers之后固定变为 (M/16)x(N/16),下图展示了RPN网络的具体

4、结构。可以看到RPN网络实际分为2条线,上面一条通过softmax分类anchors获得foreground和background(检测目标是foreground),下面一条用于计算对于anchors的bounding box regression偏移量,以获得精确的proposal。而最后的Proposal层则负责综合foreground anchors和bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。其实整个网络到了Proposal Layer这里,就完成了相当于目标定位的功能。,1、在论文中使用的是 model中,其

5、Conv Layers中最后的conv5层num_output=256,对应生成256张特征图,所以相当于feature map每个点都是256-d 2、在conv5之后,做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围3x3的空间信息,同时256-d不变 3、假设在conv5 feature map中每个点上有k个anchor(默认k=9),而每个anhcor要分foreground和background,所以每个点由256d feature转化为cls=2k scores;而每个anchor都有x, y, w, h对应4个偏移量,所以reg=4k c

6、oordinates 4、全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练,一副MxN大小的矩阵送入Faster RCNN网络后,到RPN网络变为(M/16)x(N/16),不妨设W=M/16,H=N/16。在进入reshape与softmax之前,先做了1x1卷积,可以看到其num_output=18,也就是经过该卷积的输出图像为WxHx18大小。这也就刚好对应了feature maps每一个点都有9个anchors,同时每个anchors又有可能是foreground和bac

7、kground,所有这些信息都保存WxHx(9x2)大小的矩阵。后面接softmax分类获得foreground anchors,也就相当于初步提取了检测目标候选区域box(一般认为目标在foreground anchors中)。那么为何要在softmax前后都接一个reshape layer?其实只是为了便于softmax分类,至于具体原因这就要从caffe的实现形式说起了在caffe基本数据结构blob中以如下形式保存数据: blob=batch_size, channel,height,width对应至上面的保存bg/fg anchors的矩阵,其在caffe blob中的存储形式为1,

8、 2*9, H, W。而在softmax分类时需要进行fg/bg二分类,所以reshape layer会将其变为1, 2, 9*H, W大小,即单独“腾空”出来一个维度以便softmax分类,之后再reshape回复原状。,bounding box regression原理,如图所示绿色框为飞机的Ground Truth(GT),红色为提取的foreground anchors,那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准,这张图相当于没有正确的检测出飞机。所以我们希望采用一种方法对红色的框进行微调,使得foreground anchors和GT更加接近。,对于窗口一般使用四维

9、向量(x, y, w, h)表示,分别表示窗口的中心点坐标和宽高。对于上图,红色的框A代表原始的Foreground Anchors,绿色的框G代表目标的GT,我们的目标是寻找一种关系,使得输入原始的anchor A经过映射得到一个跟真实窗口G更接近的回归窗口G,即:给定anchor A=(Ax, Ay, Aw, Ah),GT=Gx, Gy, Gw, Gh,寻找一种变换F:使得F(Ax, Ay, Aw, Ah)=(Gx, Gy, Gw, Gh),其中(Gx, Gy, Gw, Gh)(Gx, Gy, Gw, Gh)。,Proposal Layer负责综合所有dx(A),dy(A),dw(A),d

10、h(A)变换量和foreground anchors,计算出精准的proposal,送入后续RoI Pooling Layer。Proposal Layer有3个输入:fg/bg anchors分类器结果rpn_cls_prob_reshape,对应的bbox reg的dx(A),dy(A),dw(A),dh(A)变换量rpn_bbox_pred,以及im_info;另外还有参数feat_stride=16。 首先解释im_info。对于一副任意大小PxQ图像,传入Faster RCNN前首先reshape到固定MxN,im_info=M, N, scale_factor则保存了此次缩放的所有

11、信息。然后经过Conv Layers,经过4次pooling变为WxH=(M/16)x(N/16)大小,其中feature_stride=16则保存了该信息,用于计算anchor偏移量,进Proposal Layer forward(caffe layer的前传函数)按照以下顺序依次处理: 1、生成anchors,利用dx(A),dy(A),dw(A),dh(A)对所有的anchors做bbox regression回归(这里的anchors生成和训练时完全一致) 2、按照输入的foreground softmax scores由大到小排序anchors,提取前pre_nms_topN(e.g

12、. 6000)个anchors,即提取修正位置后的foreground anchors。 3、利用im_info将fg anchors从MxN尺度映射回PxQ原图,判断fg anchors是否大范围超过边界,剔除严重超出边界fg anchors。 4、进行nms(nonmaximum suppression,非极大值抑制) 5、再次按照nms后的foreground softmax scores由大到小排序fg anchors,提取post_nms_topN(e.g. 300)结果作为proposal输出。,之后输出proposal=x1, y1, x2, y2,注意,由于在第三步中将anch

13、ors映射回原图判断是否超出边界,所以这里输出的proposal是对应MxN输入图像尺度的 RPN网络结构就介绍到这里,总结起来就是: 生成anchors - softmax分类器提取fg anchors- bbox reg回归fg anchors - Proposal Layer生成proposals,而RoI Pooling层则负责收集proposal,并计算出proposal feature maps,送入后续网络。从前面图中可以看到Rol pooling层有2个输入: 1、原始的feature maps 2、RPN输出的proposal boxes(大小各不相同),传统的CNN(Ale

14、xNet,VGG等)对于输入图像尺寸不固定采用的方法一般为上图两种方式,可以看到无论采取那种办法都不好,要么crop后破坏了图像的完整结构,要么warp破坏了图像原始形状信息,所以Faster RCNN中提出了RoI Pooling解决这个问题(RoI Pooling是从SPP发展而来),RoI Pooling layer forward过程:在之前有明确提到:proposal=x1, y1, x2, y2是对应MxN尺度的,所以首先使用spatial_scale参数将其映射回(M/16)x(N/16)大小的feature maps尺度;之后将每个proposal水平和竖直都分为7份,对每一份

15、都进行max pooling处理。这样处理后,即使大小不同的proposal,输出结果都是7x7大小,实现了fixed-length output(固定长度输出)。,Classification,Classification部分利用已经获得的proposal feature maps,通过FC层与softmax计算每个proposal具体属于那个类别(如人,车,电视等),输出cls_prob概率向量;同时再次利用bounding box regression获得每个proposal的位置偏移量bbox_pred,用于回归更加精确的目标检测框。Classification部分网络结构如图,从Po

16、I Pooling获取到7x7=49大小的proposal feature maps后,送入后续网络,可以看到做了如下两件事:1、通过全连接和softmax对proposals进行分类。 2、再次对proposals进行bounding box regression,获取更高精度的rect box,Faster RCNN训练,Faster CNN的训练,是在已经训练好的model(如VGG_CNN_M_1024,VGG,)的基础上继续进行训练。实际中训练过程分为6个步骤: 1、在已经训练好的model上,训练RPN网络,对应stage1_rpn_train.pt 2、利用步骤1中训练好的RPN网络,收集proposals,对应rpn_test.pt 3、第一次训练Fast RCNN网络,对应stage1_fast_rcnn_train.pt 4、第二训练RPN网络,对应stage2_rpn_train.pt 5、再次利用步骤4中训练好的RPN网络,收集proposals,对应rpn_test.pt 6、第二次训练Fast RCNN网络,对应stage2_fast_rcnn_tr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号