Faster RCNN系列2——RPN的真值与预测值概述

本文详细介绍了FasterRCNN中的区域提议网络(RPN)的工作原理,包括Anchor的生成、IoU在类别真值确定中的作用、偏移量真值的计算以及RPN的网络结构如何预测类别和偏移量。RPN通过分类和回归分支,分别预测Anchor的前景/背景概率和相对于真实边界框的偏移量,从而实现目标检测的关键步骤。

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

Faster RCNN系列:

Faster RCNN系列1——Anchor生成过程
Faster RCNN系列2——RPN的真值与预测值概述
Faster RCNN系列3——RPN的真值详解与损失值计算
Faster RCNN系列4——生成Proposal与RoI
Faster RCNN系列5——RoI Pooling与全连接层

  对于目标检测任务,模型需要预测物体的类别和位置,即类别、边框中心点坐标 x x x y y y 、边框宽 w w w 与高 h h h 这5个量,基于Anchor这个先验框,RPN可以预测Anchor的类别作为预测边框的类别,可以预测真实的边框相对于Anchor的偏移量进而求解真实边框的位置。

  因此,RPN有两种真实和预测值,分别是类别偏移量

  如下图所示,输入图像中有3个Anchor和2个标签,Anchor A与label M有重叠,Anchor C与label N有重叠,Anchor B不与任何label重叠。

在这里插入图片描述

图1 Anchor与标签的关系

1.1 真值

  • 类别真值

  这里的类别真值是指Anchor是属于前景还是属于背景。RPN通过计算Anchor与标签的IoU来判断一个Anchor是属于前景还是属于背景。图1中Anchor A与label M的IoU计算公式如下:

I o U ( A , M ) = A ∩ M A ∪ M IoU(A,M)=\frac{A\cap M}{A\cup M} IoU(A,M)=AMAM

  当IoU大于一定值时,该Anchor的类别真值为前景;当IoU小于一定值时,该Anchor的类别真值为背景。具体的判断标准如下:

  • 对于任何一个Anchor,与所有标签的最大IoU小于0.3,则视为负样本。

  • 对于任何一个标签,与其有最大IoU的Anchor视为正样本。

  • 对于任何一个Anchor,与所有标签的最大IoU大于0.7,则视为正样本。

  • 偏移量真值

  假设图1中Anchor A的中心坐标为 x a x_{a} xa y a y_{a} ya,宽高分别为 w a w_{a} wa h a h_{a} ha,标签M的中心坐标为 x x x y y y,宽高分别为 w w w h h h,则偏移量真值的计算公式如下:

{ t x = ( x − x a ) w a t y = ( y − y a ) h a t w = l o g ( w w a ) t h = l o g ( h h a ) \left\{\begin{matrix} t_{x}= \frac{(x-x_{a})}{w_{a}}\\ t_{y}= \frac{(y-y_{a})}{h_{a}} \\ t_{w}=log(\frac{w}{w_{a}}) \\ t_{h}=log(\frac{h}{h_{a}}) \end{matrix}\right. tx=wa(xxa)ty=ha(yya)tw=log(waw)th=log(hah)

1.2 预测值

  RPN通过搭建如图2所示的网络结构,实现对类别和偏移量的预测,即通过分类分支求得类别预测值、通过回归分支求得偏移量预测值。

在这里插入图片描述

图2 RPN网络结构
  • 类别预测值

  在分类分支中,首先使用 1 × 1 1×1 1×1卷积输出 18 × 37 × 50 18×37×50 18×37×50的特征,由于每个点默认有9个Anchors,并且每个Anchor 只预测其属于前景还是背景,因此通道数为18。随后利用torch.view()函数将特征映射到 2 × 333 × 75 2×333×75 2×333×75,这样第一维仅仅是一个Anchor的前景背景得分,并送到Softmax函数中进行概率计算,得到的特征再变换到 18 × 37 × 50 18×37×50 18×37×50的维度,最终输出的是每个Anchor属于前景与背景的概率。

  • 偏移量预测值

  在回归分支中,利用 1 × 1 1×1 1×1卷积输出 36 × 37 × 50 36×37×50 36×37×50的特征,第一维的36包含9个Anchors的预测,每一个Anchor有4个数据,分别代表了每一个Anchor的中心点横纵坐标及宽高这4个量相对于真值的偏移量。

参考文章

《深度学习之Pytorch物体检测实战》

### Faster R-CNN 网络结构详解 Faster R-CNN 是一种用于目标检测的经典深度学习模型,它通过引入区域提议网络(Region Proposal Network, RPN),显著提升了目标检测的速度和效率[^1]。 #### 1. 整体架构概述 Faster R-CNN 的整体架构可以分为以下几个主要部分: - **Backbone 网络**:通常是一个预训练的卷积神经网络(CNN),例如 VGG 或 ResNet。该网络负责提取输入图像的特征图。 - **区域提议网络 (RPN)**:基于 Backbone 提取的特征图生成候选框(region proposals)。这些候选框表示可能包含对象的位置和大小。 - **感兴趣区域池化 (RoI Pooling)**:将由 RPN 生成的候选框映射到固定尺寸的特征向量上,以便后续处理。 - **分类回归模块**:对 RoI 特征进行进一步分析,完成类别预测和边界框精调的任务。 #### 2. 区域提议网络 (RPN) RPNFaster R-CNN 中的核心创新之一。它的作用是从 Backbone 输出的特征图中生成高质量的目标候选框。具体过程如下: - 对每个滑动窗口位置应用多个锚点(anchors),这些锚点代表不同尺度和宽高比的对象假设。 - 使用一个小的全连接层来判断每个 anchor 是否包含一个真实对象,并调整其坐标以更好地匹配实际物体位置。 #### 3. 感兴趣区域池化 (RoI Pooling) 为了使来自任意形状候选框的信息能够被送入全连接层,需要将其转换成统一大小的空间表达形式。这一步骤称为 RoI Pooling。其实现方式主要包括两个阶段: - 将候选框投影至最后一层卷积后的特征地图; - 利用最大值或平均操作分割并缩放像素数据,从而得到标准化维度输出[^2]。 #### 4. 分类器边框回归器 经过上述步骤之后,每一份裁剪下来的 ROI 都会被传递给最终的两分支子网路——一个是用来做多标签分类任务;另一个则专注于修正初始建议框参数使其更加精确靠近真值范围。这两个功能分别对应 Softmax 和线性变换运算单元组合而成的小型 FC 层集合。 ```python import tensorflow as tf from tensorflow.keras import layers def roi_pooling(feature_map, rois, pooled_height=7, pooled_width=7): """ 实现简单的ROI pooling逻辑作为示例 参数: feature_map: 输入特征图 Tensor 形状为 [batch_size, height, width, channels] rois: Region of Interest 候选框列表 [[y1,x1,y2,x2], ... ] pooled_height/pooled_width: 裁切后图片的高度宽度 返回: pooled_features: 经过pooling后的张量 """ num_rois = len(rois) outputs = [] for i in range(num_rois): y1, x1, y2, x2 = rois[i] region = feature_map[:, int(y1):int(y2), int(x1):int(x2)] resized_region = tf.image.resize(region, size=(pooled_height, pooled_width)) max_pooled_feature = tf.reduce_max(resized_region, axis=[0]) outputs.append(max_pooled_feature) return tf.stack(outputs) # 测试代码片段 if __name__ == "__main__": input_tensor = tf.random.uniform((1, 28, 28, 3)) sample_roi = [(5, 5, 15, 15)] result = roi_pooling(input_tensor, sample_roi) print(result.shape) # 应打印出(1, 7, 7, 3),即单个样本经roi pooling后的结果 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值