Faster RCNN 论文阅读

Fast RCNN基本实现了end to end,但是它的Proposals是单独执行的,并且Proposals采用的是SS算法,此算法比较古老,并且只能利用CPU进行,速度比较慢,因此Faster RCNN改进的主要是Region Proposals方面,它利用一个名为RPN(Region Proposals Network)的网络实现Proposals区域的提取,速度方面有了很大的提升。所以可以把Faster RCNN看成RPN版的Fast RCNN,即RPN网络+Fast RCNN。

                                 

                                 

 

1 区域生成网络

作者借鉴SPP-Net与Fast RCNN的原图与特征图映射的思想,直接在特征图上提取原图的Region Proposals。由于感受野的存在,特征图上的每一个特征点都对应于原图的一个区域,在原图区域上设计几种不同但大小固定的BBox,根据Ground Truth与BBox的IOU给他贴上label,然后输入RPN网络训练。

由于我们只需要找出大致的地方,无论是精确位置的定位还是BBox的大小,都可以利用后面的BBox Regression来完成。因此作者在提取Proposals的时候,对BBox的大小做了三个固定:固定尺寸变化(三个尺度),固定scale ratio变化(三种ratio),固定采样方式(只在feature map的每个点在原图中对应的ROI上进行采样)。

可以在特征图上提取Proposals以后,网络前面就可以共享卷积计算结果(SPP减小计算量的思想)。这个网络的结果就是卷积层的每个点都有有关于k个achor boxes的输出,包括是不是物体,调整box相应的位置。

                              

                                                  

 

2. 具体过程:

  1. 得到最终用来预测的feature map:图片在输入网络后,依次经过一系列conv+relu(套用ImageNet上常见的分类网络即可,本论文实验了5层的ZF和16层的VGG16)得到feature map,额外添加一个conv+relu层,输出51x39x256维特征(feature map)。准备后续用来选取Proposals,并且此时坐标依然可以映射回原图。
  2. 计算Anachors:在feature map上的每个特征点预测多个Region Proposals。具体的做法是:把每个特征点映射回原图的感受野的中心当成一个基准点,然后围绕这个基准点选取k个不同scale、aspect ratio的anchor。论文中3个scale(三种面积{1282,2562,5212}),3个aspect ratio({1:1,1:2,2:1})

                                           

                                             

 

关于正负样本的划分: 考察训练集中的每张图像(含有人工标定的ground true box) 的所有anchor(N*M*k)

  1. 对每个标定的ground true box区域,与其重叠比例最大的anchor记为 正样本 (保证每个ground true 至少对应一个正样本anchor)

b. 对a)剩余的anchor,如果其与某个标定区域重叠比例大于0.7,记为正样本(每个ground true box可能会对应多个正样本anchor。但每个正样本anchor 只可能对应一个grand true box);如果其与任意一个标定的重叠比例都小于0.3,记为负样本。

c. 对a),b)剩余的anchor,弃去不用。

d. 跨越图像边界的anchor弃去不用

                              

训练:正负样本的选择,文中提到如果对每幅图的所有anchor都去优化loss function,那么最终会因为负样本过多导致最终得到的模型对正样本预测准确率很低(It is possible to optimize for the loss functions of all anchors, but this will bias towards negative samples as they are dominate)。

训练RPN:文中提到如果每幅图的所有anchor都去参与优化loss function,那么最终会因为负样本过多导致最终得到的模型对正样本预测准确率很低。因此 在每幅图像中随机采样256个anchors去参与计算一次mini-batch的损失。正负比例1:1(如果正样本少于128则补充采样负样本)

  1. RPN与Fast RCNN特征共享

作者发布的源代码里用了一种叫做4-Step Alternating Training的方法,思路和迭代的Alternating training有点类似,但是细节有点差别:

第一步:用ImageNet模型初始化,独立训练一个RPN网络;

第二步:仍然用ImageNet模型初始化,但是使用上一步RPN网络产生的proposal作为输入,训练一个Fast-RCNN网络,至此,两个网络每一层的参数完全不共享;

第三步:使用第二步的Fast-RCNN网络参数初始化一个新的RPN网络,但是把RPN、Fast-RCNN共享的那些卷积层的learning rate设置为0,也就是不更新,仅仅更新RPN特有的那些网络层,重新训练,此时,两个网络已经共享了所有公共的卷积层;

第四步:仍然固定共享的那些网络层,把Fast-RCNN特有的网络层也加入进来,形成一个unified network,继续训练,fine tune Fast-RCNN特有的网络层,此时,该网络已经实现我们设想的目标,即网络内部预测proposal并实现检测的功能。

                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值