前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RPN(Region Proposal Network)提取候选框

RPN(Region Proposal Network)提取候选框

原创
作者头像
一颗小树x
修改2021-07-27 17:52:05
1.4K0
修改2021-07-27 17:52:05
举报
文章被收录于专栏:用户5033944的专栏

前言

RPN全称是Region Proposal Network,也可理解为区域生成网络,或区域候选网络;它是用来提取候选框的。

一、RPN的由来

在RCNN和Fast RCNN等物体检测架构中,提取候选框的方法通常是传统的Selective Search,比较耗时。

在Faster RCNN中,RPN专门用来提取候选框,这也是RPN第一次被使用;RPN耗时少。

Faster RCNN = RPN + Fast RCNN

二、RPN思路流程

RPN网络的任务是找到proposals。输入:feature map。输出:proposal。

RPN总体流程:

  1. 生成anchors(anchor boxes)。
  2. 判断每个 anchor box 为 foreground(包含物体) 或者 background(背景) ,二分类;softmax分类器提取positvie anchors 。
  3. 边界框回归(bounding box regression) 对 anchor box 进行微调,使得 positive anchor 和真实框(Ground Truth Box)更加接近。
  4. Proposal Layer生成proposals。

三、feature maps与锚框 anchor boxes

feature maps 的每一个点都配9个锚框,作为初始的检测框。重要的事说三遍:

锚框作为初始的检测框!、 锚框作为初始的检测框!、 锚框作为初始的检测框!

虽然这样得到的检测框很不准确,但后面可通过 bounding box regression 来修正检测框的位置。

下面介绍那9个anchor boxes 锚框,先看看它的形状:

这里一共有9个框框,绿色3个,红色3个,蓝色3个。有3种形状,长宽比分别是1:1, 1:2, 2:1

四、判断anchor boxes是否包含物体

在feature map上,设置了密密麻麻的候选anchor boxes 锚框。为什么会有这么多?因为 feature maps 的每一个点都配9个锚框,如果一共有1900个点,那一共有1900*9=17100个锚框了。

设 feature maps 的尺寸为 W*H,那么总共有 W*H*9个锚框。(W:feature maps的宽;H:feature maps 的高。)

然后用cnn去判断哪些anchor box是里面有目标的positive anchor,哪些是没目标的negative anchor。所以,RPN做的只是个二分类。

关于cnn的模型结构,可以参考下图:

五、修正边界框

已知anchor box 包含物体称为positive anchors,那怎么调整,才能使得 anchor box 与 ground truth 更接近?

图中红框为positive anchors,绿框为真实框(Ground Truth Box,简称GT)

positive anchors 和GT的梯度可以有dx, dy, dw, dh四个变换表示,bounding box regression通过线性回归学习到这个四个梯度,使positive anchors 不断逼近GT,从而获得更精确的proposal。

bounding box regression 思路,简单一点的,可以先做平移,再做缩放,最终包含物体anchor box和真实框很接近。

六、Proposal(最有可能包含物体的区域)

通过上面的判断anchor boxes是否包含物体,对有物体的anchor boxes通过回归进行修正它的尺子,最终包含物体anchor box和真实框很接近。RPN会输出一些框框,和这些框框包含物体的概率。

总结一下,Proposal 的输入有三个:

  • softmax 分类矩阵
  • Bounding Box Regression 坐标矩阵
  • im_info 保存了缩放的信息

输出为:

  • rpn_rois: RPN 产生的 ROIs (Region of Interests,感兴趣的区域)
  • rpn_roi_probs: 表示 ROI 包含物体的概率

RPN 只挑选出了可能包含物体的区域(rpn_rois)以及其包含物体的概率(rpn_roi_probs)。在后续处理中,设定一个阈值 threshold,如果某个ROI包含物体的概率的概率大于阈值,再判断其类别;否则直接忽略。

参考:https://zhuanlan.zhihu.com/p/106192020https://zhuanlan.zhihu.com/p/31426458

https://www.cnblogs.com/Terrypython/p/10584384.html

本文只提供参考学习,谢谢。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、RPN的由来
  • 二、RPN思路流程
  • 三、feature maps与锚框 anchor boxes
  • 四、判断anchor boxes是否包含物体
  • 五、修正边界框
  • 六、Proposal(最有可能包含物体的区域)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档