深度学习物体检测(四)——Faster-RCNN

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zchang81/article/details/69374937
faster RCNN模型是在fast RCNN的基础上,把候选区域集成到统一的网络中,形成端到端的检测模型。
faster RCNN可以简单地看做“区域生成网络 + fast RCNN“的系统,用区域生成网络RPN代替fast RCNN中的Selective Search方法产生候选区域。

区域生成网络(RPN):

RPN利用了SPP的映射机制,在最后一个卷积层上使用滑窗替代从原始图上滑窗。
在RPN网络中,使用固定尺寸变化、固定scale ratio变化、固定采样方式三个固定来降低使用滑窗的复杂度。
网络的结果,是卷积层的每一个点都有关于K个anchor boxes的输出,包括是否物体,调整box相应的位置,需要注意的是,这K个anchor boxes是在原始输入的图片上,而不是在feature map上。也就是说,网络给出了比较死的位置,大致判断是否有物体及物体的大概位置,至于细节,留给faster rcnn网络的后面微调部分来处理。

这里写图片描述

如上图所示,在这个特征图上使用 3*3 的卷积核(滑窗)进行卷积,卷积后可以获得一个 256 维的特征向量(因为在这个3*3的区域上,每一个特征图上得到一个1维向量,256个特性图即可得到256维特征向量)。

3*3 滑窗中心点位置,对应预测输入图像 3 种尺度(128, 256, 512),3种长宽比(1:1, 1:2, 2:1)的region proposal,这种映射的机制称为 anchor,产生了3 * 3 =  9 个 anchor。即每个 3*3 区域可以产生 9 个 region proposal。所以对于 51*39尺寸的feature map,总共有约18000(51*39*9)个anchor,也就是预测约18000个region proposal。

      

窗口分类及位置微调:

RPN网络后边接到两个全连接层,即 cls layer(分类) 和 reg layer (边框回归

cls layer包含2个元素,用于判别目标和非目标的估计概率。

reg layer包含4个坐标元素(x,y,w,h),用于确定目标位置

最后根据 region proposal 得分高低,选取前300个region proposal,作为Fast R-CNN的输入进行目标检测。


如何训练Faster RCNN网络?
先通过把feature map的点映射回原图(参考:原始图片中的ROI如何映射到到feature map?),在每一个对应的原图设计不同的固定尺度窗口(bbox),根据该窗口与ground truth的IOU给它正负标签,让它学习里面是否有object,这样就训练一个RPN网络。

Faster RCNN网络的训练步骤:

一步:用ImageNet模型初始化,独立训练一个RPN网络;
二步:用ImageNet模型初始化,并训练一个Fast-RCNN网络。注意的是,使用第一步RPN网络产生的proposal作为候选区域输入;
三步:使用第二步的Fast-RCNN网络参数初始化一个新的RPN网络,但是把RPN、Fast-RCNN共享的那些卷积层的learning rate设置为0,也就是不更新,仅仅更新RPN特有的那些网络层,重新训练,此时,两个网络已经共享了所有公共的卷积层;
四步:仍然固定共享的那些网络层,把Fast-RCNN特有的网络层也加入进来,形成一个unified network,继续训练,微调 Fast-RCNN特有的网络层,此时,该网络已经实现网络内部预测proposal并实现检测的功能。











阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页