faster-rcnn自己的理解总结(包括它的前世今身R-CNN和fast R-CNN)

1、grandfather:  R-CNN网络

结构如下:

工作流程:

 Input(an image)   Proposals(~2K个,在使用CNN提取特征之前还要先resize)  feature maps  每类得分,再经过NMS筛选,再使用手工设计的回归器进行box regression;

 

 缺点:

(1)速度慢,2K多个proposals都要经过CNN提取特征;

(2)先分类在再回归,没有实现end to end;

2、father:  fast R-CNN网络

 结构如下:

工作流程:

Input(an Image,同时已经用SS提取了proposals,知道了它们的位置)  整图的feature map(同时将proposals映射到了feature map上)(经过Rol Pooling的resize操作)再使用softmax分类以及box regssion

改进:

(1)不用再对每一个proposal单独提取特征,大大提高了速度;

(2)引入了ROI Pooling层;

(3)将分类和回归加入了网络,且共享卷积层,不用再像R-CNN中那样单独训练SVM和回归器了;

 缺点:

(1)依然在使用SS(selective search)提取候选框,很耗时;

 

为了摒弃SS,我们取而代之使用RPN网络,即用CNN实现提取特征框的功能,这样一来所有的操作都可以通过CNN实现了,真正实现了end to end,然后我们的猪脚登场了:

3、son : faster-rcnn的网络结构如下:

如上图所示,(im_info = [M , N , scale_factor]),说一下它的前向传播流程:

(1)一般对于输入的图像,P*Q的原图先统一缩放为M*N,并且在前面的特征提取层(也可称“共享卷积层”)中,由于stride = 1 , pad = 1 , kernel size = 3 * 3,所以卷积前后图像大小不变,只有四个Pool层起到了作用,因此原始图像经过提取层后的feature map大小为(M / 16)* (N /16),这样做也是为了使原始图像到feature map的缩放系数为整数从而使得feature map上的每个特征点和M*N的原始图像的区域坐标更方便地实现一一映射关系,这对后面生成proposal会有帮助;

(2)RPN结构中第一个层是一个3*3的卷积层,它作用在经过特征提取层后的feature map上,我觉得这个3*3的卷积作用是为了增加目标附近区域的语义理解;然后再经过两条支路,每条都首先经过一个1*1的卷积。先看上面一条,这条的作用是对“foreground”和"background"进行二分类,所以经过1*1之后的深度为18(9*2,对应每个点生成9个anchors和每个anchor两个类别),再看下面一条,也是经过一个1*1的卷积,深度为36(9*4)进行矩形框回归,然后这两条支路汇合,首先去除掉background类别,然后对于剩下的forground类别,利用im_info先将anchors放大到M*N的原始图像上,这些放大后在原始图像上的区域就是一开始的proposals,数量很多所以我们还要进行两次筛选:第一次,判断这些proposals是否大范围超出图像边界,剔除严重超出边界的;第二次,对剩下的proposals进行nms,然后对nms后的proposals根据cls scores进行排序,选取top-N个作为最终的proposals(一般在600个左右),其实到这里检测任务差不多就完成了,但作者后面还加另一步,相当于一个refine;

(3)之后就涉及到ROI Pooling层了,由于RPN输出的proposals对应的M*N的输入图像,所以我们先通过im_info中的scale_factor将其映射到特征提取层的feature map上,但由于后面需要经过全连接层,而这里每个proposals映射到feature map上的大小均不同,所以我们使用了ROI Pooling层将这些proposals映射后的大小固定(7*7或者6*6,好像论文和实现里稍微有点不同,看代码就知道了),然后这块固定的区域再经过全连接层进行分类和坐标框回归;

 关于如何训练,参考这个:https://www.cnblogs.com/zf-blog/p/7142463.html

补充:

(1)bounding box regression:

转载于:https://www.cnblogs.com/zf-blog/p/10095126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值