Fast R-CNN中的边框回归

本文详细解析了Fast R-CNN中边框回归的原理和方法,包括边框回归的四元组表示、变换方法、损失函数设计、训练样本偏移量的构造以及偏移量的构造,旨在理解如何通过边框回归提高目标检测的定位准确性。

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

前面对R-CNN系的目标检测方法进行了个总结,其中对目标的定位使用了边框回归,当时对这部分内容不是很理解,这里单独学习下。

R-CNN中最后的边框回归层,以候选区域(Region proposal)为输入,来对Region proposal中包含的目标进行准将的定位。但是,这个输入的候选区域通常不会正确的包含目标区域,如下图:
在这里插入图片描述

绿色边框是飞机的Ground Truth边框,绿色的是Region proposal边框,虽然Region proposal中包含了目标飞机,但是其定位却不是很准确,这就需要对候选区域的边框进行修正,调整其位置和大小,以使其能够更为接近绿色的Ground Truth边框。

边框回归的方法

无论是Ground Truth边框还是Region proposal边框,可以使用一个四元组(x,y,w,h)(x,y,w,h)(x,y,w,h)来表示。其中,(x,y)(x,y)(x,y)表示边框的中心位置,(w,h)(w,h)(w,h)表示边框的宽和高。
在边框回归时,实际就是找到一种变换,使修正的后的Region proposal边框位置和Ground Truth边框尽可能的接近,公式表示如下:
f(Px,Py,Pw,Ph)≈(Gx,Gy,Gw,Gh) f(P_x,P_y,P_w,P_h) \approx (G_x,G_y,G_w,G_h) f(Px,Py,Pw,Ph)(Gx,Gy,Gw,Gh)
其中,(Px,Py,Pw,Ph)(P_x,P_y,P_w,P_h)(Px,Py,Pw,Ph)输入的候选区域的边框,(Gx,Gy,Gw,Gh)(G_x,G_y,G_w,G_h)(Gx,Gy,Gw,Gh)是Ground Truth边框。

那么这种变换fff怎么进行呢?

观察边框的四元组表示(x,y)(x,y)(x,y)表示中心位置,对于位置的修正通常使用平移;(w,h)(w,h)(w,h)表示边框的宽和高,则可以使用缩放进行修正。也就是对边框的回归修正,

  • 对边框的中心位置进行平移(Δx,Δy)(\Delta x,\Delta y)(Δx,Δy)
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \Delta x &= P_…
    则修正的中心位置就是
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat{G_x} &= …

  • 对边框的宽和高进行缩放(Sw,Sh)(S_w,S_h)(Sw,Sh),
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ S_w &= exp(d_w…
    修正后的边框的宽和高为
    KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat{G_w} &= …

修正后的边框(Gx^,Gy^,Gw^,Gh^)(\hat{G_x},\hat{G_y},\hat{G_w},\hat{G_h} )(Gx^,Gy^,G

### Fast R-CNN回归网络的实现原理 在Fast R-CNN架构中,回归网络主要用于精确定位目标边界框的位置。该模型通过一个多任务损失函数来联合训练分类和回归两个子任务[^2]。 #### 边界框回归的作用 边界框回归的任务是对候选区域(Region of Interest, RoI)进行微调,使得这些RoIs能够更加精确地匹配真实的目标位置。具体来说,对于每一个预测出来的类别标签,都会有一个对应的边界框参数用于调整原始建议窗口的位置与大小。这种机制有助于提高最终检测结果的质量,减少误检率并提升定位精度。 #### 回归网络的具体工作流程 当输入图像进入Fast R-CNN后,会先经过预定义好的基础特征提取器(通常是VGG16),得到一系列固定尺寸的特征映射图。接着,针对每个感兴趣区域(ROI),利用ROI池化层将其转换成统一尺度下的向量表示形式。随后,这些向量被送入全连接层进一步处理,并分别传递给负责分类决策和支持向量机(SVM)以及专门执行边框坐标修正操作的线性变换模块: ```python import torch.nn as nn class BBoxRegressor(nn.Module): def __init__(self, input_size=4096, num_classes=21): # 假设PASCAL VOC数据集有20类物体加背景共21类 super(BBoxRegressor, self).__init__() self.fc = nn.Linear(input_size, 4 * num_classes) def forward(self, x): deltas = self.fc(x).view(-1, 4) return deltas ``` 上述代码展示了如何构建一个简单的边界框回归器。`input_size`代表来自前一层输出的维度数,而`num_classes`则指定了要识别的不同对象种类数量加上背景类别的总数目。这里假设使用的是类似于VGG16这样的深层CNN作为骨干网,则最后一层flatten后的特征长度大约为4096维。最后,通过线性层将特征映射到每种可能的对象类别所需的四个偏移值上——即中心点坐标的横向和纵向平移量dx、dy及其宽度w和高度h的比例缩放因子dw、dh。 为了使学习过程稳定有效,通常会对这四组数值应用特定的形式化表达方式,比如采用log空间下相对于原矩形宽高的比例变化来进行编码解码转化。这样做不仅简化了优化问题本身,还提高了算法收敛性和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值