Faster RCNN中RPN理解(需要训练得到粗略proposals的)、附画图代码。biu~

本文详细介绍了Faster R-CNN中的区域提议网络(RPN)的工作原理,包括其输入输出、训练过程、锚点(anchor)概念以及损失函数。RPN作为一个小型的、初步的目标检测模型,通过共享卷积层特征,生成一系列object proposals。训练时,通过对比锚点和真实框的位置,使用梯度下降优化网络。RPN的平移不变性和多尺度锚点设计使其能有效处理不同尺度的目标。最终,RPN生成的proposals将用于后续的精确目标检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fast+rpn=faster rcnn

之前已经用过RPN,因为重心一直在修改我自己的网络结构上,这次重新涉及到此部分的优化重新审视了一下RPN,记录一下。

如果把RPN看作一个黑盒子的话,最关心的问题是,输入和输出。RPN输入的是一张图片,输出输出一系列的矩形object proposals。RPN其实就像个“内嵌的”的网络似的,这也正是“两阶段物体检测”的体现之处,进行了初步、首阶段的学习。

RPN相当于是一个小的、粗糙的目标检测cnn模型,只不过它不具体识别/分类,它的识别/分类是:是前景还是背景;定位是:根据anchor使得检测的框靠近gt_box(回归:做怎样的逼近才能使得anchor逼近gt-boxes)。这时候结果不是很准确,只能大致确定框的位置,后面fast rcnn会进一步精确。这个RPN实际上就是一个attention机制,这也是两阶段法比一阶段法(YOLO等)准确的原因)

训练步骤:

1.将图片输入到VGG或resnet等的可共享的卷积层中,得到最后可共享的卷积层特征图FM(feature map)。

2.将FM送入RPN。(先3*3filter滑窗生成新的FM(intermediate layer),再送入两个1*1conv

    2.1在滑动窗口的每个像素点根据感受野都对应的原图上的一片区域,这片区域对目标的覆盖力、形状多样性可能没有那么好,故根据此区域的中心点(锚点)在原图设置9/15个矩形窗口(eg:3种长宽比*3种尺度),即锚框、anchor。至于这里为什么要在原图上,是因为最后求出来的锚框要跟原图的标定框最小梯度下降。

   2.2将卷积的结果和锚点分别输入到两个小的1*1的网络中reg(回归,求目标框的位置)和cls(分类,确定该框中是不是目标)

3.训练集标记好了每个框的位置,和reg输出的框的位置比较,用梯度下降来训练网络。

4.得到的proposals将会根据strides被部署在一幅尺寸为w×h的特征图上(映射),注意这个时候映射出的是一块区域了,因为原来是的根据感受野中心点扩的9个框,回归后某个、某几个框映射过去是一个区域。比如:

# anchors 尺寸  3种尺寸大小,3种比例。故一个锚点生成9个anchors
scales = [2,4,8]#根据这个生成9种尺寸,但面积都为4,16,64
# scales = [32,64,128,256,512]
ratios = [0.5, 1.0, 2.0]

注意:anchors是在原图上的。在FM上对点做信息抽取时候,相当于抽取该点在原图上对应的一堆anchors的信息(分类和回归信息)。FM一个点对应原图的感受野,围绕感受野中心做的一堆anchors的信息。也就是说特征图中的每个位置都与具有预定义的尺度和纵横比的k个anchors相关联。

图片节选自https://www.bilibili.com/video/av21846607/?p=6(视频不建议看,建议看这个系列:https://www.bilibili.com/video/av29987414

ROI Pooling : anchor 到

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值