Faster-rcnn 中 RPN:为什么是two stage?

编辑于2019/02/21,转载请注明

早期看过很多Faster-rcnn的解读,当时一直不明白,RPN已经有了分类和框回归,为什么要做成two stage呢?下面是我的理解。

Faster-rcnn简介

简单说下吧,Faster-rcnn分为三部分:

(1)基础网络,用来提取特征。

(2)RPN,初步的二分类+框回归。

(3)剩余部分,就是精确多分类+框回归,还有loss什么的。

比起跟早的检测网络,RPN网络有两个优点,一个是生成框的速度比selective search较快,另一个是在每个anchor上有k个(默认9个框,三个scale,三个aspect ratio)框,不同大小不同纵横比的框,可以包含到多尺度的目标

RPN

RPN做的是初步的二分类和框回归,看网络结构,网络结构文件引用自

https://github.com/rbgirshick/py-faster-rcnn/tree/master/models/pascal_voc/ZF/faster_rcnn_end2end

RPN从rpn_conv/3x3开始,假设输出的是nx14x14x256的特征,默认产生9个框,借鉴一下最常见的两张图。

然后:

(1)所有框初步二分类

rpn_cls_score层,是1x1的卷积层,输出nx14x14x18(每个anchor有9个框,每个框有2个值,代表包含和不包含目标的概率,即每一个框的二分类)

(2)所有框初步回归

rpn_bbox_pred层,也是1x1的卷积层,输出nx14x14x36(9个框,每个有(x,y,w,h)的偏移值,用来对每个初始框进行一定程度的回归)

(3)proposal

每一个框都有2个分数+4个框坐标的偏移值,接着只要用坐标偏移值来修正初始值,然后映射回原图,然后按照筛选规则去除一部分不要的,就有了初步的分类和框。

回答最开始的问题,为什么需要two stage,而不在RPN里直接搞定分类和回归呢?

从网络结构可以看出,RPN被设计为一个非常简单的小网络,它的分类,只能区分有没有目标,而不能区分是1000类中的哪一类;它的框回归,也做不到检测框的精确回归。

所以,后面需要根据RPN的初筛结果,进行精确的分类和回归,于是就有了two stage。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值