深度学习中小知识点系列(十四) 解析Bounding Box Regression

0.回顾一下RCNN

大家一般都是从RCNN开始了解Bounding Box Regression的,所以这里简单回顾一下RCNN
RCNN算法流程可分为4步:
1.一整图像生成1K~2K个候选区域(使用Selective Search方法)
2.对每个候选框区域使用深度网络提取特征
3.特征送入每一类的SVM分类器,判别是否属于该类
4.使用回归器精细修正候选框位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述


这里我要说的就是RCNN的第四步,即“边界框回归
主要围绕着这六个问题来解析Bounding Box Regression:

  • 1.为什么要边框回归?
  • 2.什么是边框回归?
  • 3.边框回归细节
  • 4.为什么使用相对坐标差?
  • 5.为什么宽高比只能取对数?
  • 6.为什么IoU较大时边界框回归可视为线性变换?

1.为什么要边框回归?

在这里插入图片描述
对于上图,绿色的框表示Ground Truth, 红色的框为Selective Search提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调, 使得经过微调后的窗口跟Ground Truth 更接近, 这样岂不是定位会更准确。 确实,Bounding-box regression 就是用来微调这个窗口的。


2.边框回归是什么?

对于窗口一般使用四维向量 ( x , y , w , h ) ( x , y , w , h ) (x,y,w,h)来表示, 分别表示窗口的中心点坐标和宽高。 对于图 2, 红色的框 P 代表原始的Proposal, 绿色的框 G 代表目标的 Ground Truth, 我们的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口 G ^ \widehat{G} G
在这里插入图片描述

边框回归的目的是:给定 ( P x , P y , P w , P h ) (P_x,P_y,P_w,P_h) (Px,Py,Pw,Ph)寻找一种映射f,使得 f ( P x , P y , P w , P h ) = ( G ^ x , G ^ y , G ^ w , G ^ h ) f(P_x,P_y,P_w,P_h)=(\widehat{G}_x,\widehat{G}_y,\widehat{G}_w,\widehat{G}_h) f(Px,Py,Pw,Ph)=(G x,G y,G w,G h)

并且 ( G ^ x , G ^ y , G ^ w , G ^ h ) ≈ ( G x , G y , G w , G h ) (\widehat{G}_x,\widehat{G}_y,\widehat{G}_w,\widehat{G}_h)\approx(G_x,G_y,G_w,G_h) (G x,G y,G w,G h)(Gx,Gy,Gw,Gh)


3.边框回归细节

RCNN论文里指出,边界框回归是利用平移变换尺度变换来实现映射 。

平移变换 ( Δ x , Δ y ) 的计算公式如下: 平移变换(Δx,Δy) 的计算公式如下: 平移变换(Δx,Δy)的计算公式如下:
Δ x = P w d x ( P ) , Δ y = P h d y ( P ) Δx=P_wd_x(P),Δy=P_hd_y(P) Δx=Pwdx(P),Δy=Phdy(P)

G ^ \widehat{G} G x = P x + Δ x _x=P_x+Δx x=Px+Δx
G ^ y = P y + Δ y \widehat{G}_y=P_y+Δy G y=Py+Δy

尺度变换 ( Δ w , Δ h ) 的计算公式如下: 尺度变换(Δ_w,Δ_h)的计算公式如下: 尺度变换(Δw,Δh)的计算公式如下:
Δ w = e ( d w ( P ) ) , Δ h = e ( d h ( P ) ) , Δw=e(dw(P)),Δh=e(dh(P)), Δw=e(dw(P)),Δh=e(dh(P)),
G ^ \widehat{G} G w = P w ∗ Δ w _w=P_w∗Δw w=PwΔw
G ^ h = P h ∗ Δ h \widehat{G}_h=P_h∗Δh G h=PhΔh

这样我们就得到了变换的一般形式:
G ^ x = P x + P w d x ( P ) \widehat{G}_x=P_x+P_wd_x(P) G x=Px+Pwdx(P)

G ^ y = P y + P h d y ( P ) \widehat{G}_y=P_y+P_hd_y(P) G y=Py+Phdy(P)

G ^ w = P w ∗ e d w ( P ) \widehat{G}_w=P_w∗e^{dw(P)} G w=Pwedw(P)

G ^ h = P h ∗ e d h ( P ) \widehat{G}_h=P_h∗e^{dh(P)} G h=Phedh(P)

− − − − − − − − − − − − − − − − − − − ------------------- −−−−−−−−−−−−−−−−−−−

G x = P x + P w t x ( P ) G_x=P_x+P_wt_x(P) Gx=Px+Pwtx(P)

G y = P y + P h t y ( P ) G_y=P_y+P_ht_y(P) Gy=Py+Phty(P)

G w = P w ∗ e t w ( P ) G_w=P_w∗e^{tw(P)} Gw=Pwetw(P)

G h = P h ∗ e t h ( P ) G_h=P_h∗e^{th(P)} Gh=Pheth(P)

也就是说,一个 d 对应着一个 t ,用 i 表示一张图片的序号:
d i → t i d_i→t_i diti
下一步就是设计算法得到这个映射 → 使 d 无限接近 t

根据上述公式可以推导出 t ∗
请添加图片描述

注意:当输入的Proposal 与 Ground Truth 相差较小时(RCNN设置的是IOU>0.6)可以认为这种变换是一种线性变换,那么我们就可以用线性回归模型对窗口进行微调,只有当Proposal和Ground Truth比较接近时(线性问题),我们才能将其作为训练样本训练我们的线性回归模型,否则会导致训练的回归模型不work(当Proposal跟Ground Truth离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)。这个也是G-CNN: an Iterative Grid Based Object Detector多次迭代实现目标准确定位的关键。
那么什么是线性回归?
线性回归就是给定输入的特征向量 X, 学习一组参数 W, 使得经过线性回归后的值跟真实值 Y(Ground Truth)非常接近.,即Y≈WX

那么这个映射关系中我们的输入以及输出分别是什么呢?

输入 R e g i o n P r o p o s a l 的 → P = ( P x , P y , P w , P h ) Region Proposal的→P=(P_x,P_y,P_w,P_h) RegionProposalP=(Px,Py,Pw,Ph)

输入的就是这四个数值吗?不!其实真正输入的是这个窗口对应的CNN特征,也就是R-CNN中的第五个池化层得到的特征向量 Φ 5 ( P ) Φ_5(P) Φ5(P),我们还要定义一个权重矩阵 w ∗ w^* w ∗ * 表示x,y,w,h,也就是每一个变换对应一个目标函数)来表示这个目标函数 d ∗ ( P ) = w ∗ T Φ 5 ( P ) d*(P) = w*^TΦ_5(P) d(P)=wTΦ5(P)

请添加图片描述

请添加图片描述

利用梯度下降法或者最小二乘法就可以得到W*
最后一项是一个惩罚项,为了防止过拟合
在RCNN中,边界框回归要设计4个不同的Ridge回归模型分别求解 W x , W y , W w , W h W_{x},W_{y},W_{w},W_{h} Wx,Wy,Ww,Wh

输出 d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) d_x(P),d_y(P),d_w(P),d_h(P) dx(P),dy(P),dw(P),dh(P)

有了这四个变换我们就可以通过上面的公式得到 G r o u n d T r u t h Ground Truth GroundTruth
注意,根据上面4个公式我们可以知道,P经过 d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) dx(P),dy(P),dw(P),dh(P) dx(P),dy(P),dw(P),dh(P),得到的并不是真实值G,
而是预测的 G ^ \hat{G} G^

测试阶段
根据 3 我们学习到回归参数,对于测试图像,我们首先经过 C N N 提取特征 Φ 5 ( P ) Φ 5 ( P ) Φ5(P) ,最后根据公式对窗口进行回归 预测的变化就是 d ∗ ( P ) = W ∗ T Φ 5 ( P d∗(P)=W∗TΦ5(P d(P)=WTΦ5(P),最后根据公式对窗口进行回归


4.为什么使用相对坐标差?

一句话概括:进行尺度归一化。 一句话概括:进行尺度归一化。 一句话概括:进行尺度归一化。
在这里插入图片描述
在这里插入图片描述


5.式(4)为什么宽高比要取对数(为什么不直接使用宽高比值来作为目标进行学习)?

一句话概括:保证缩放尺度的非负性。 一句话概括:保证缩放尺度的非负性。 一句话概括:保证缩放尺度的非负性。
要得到一个放缩的尺度,这里必须限制尺度大于0。那么,我们学习的 t w , t h t_w , t_h tw,th
怎么保证满足大0呢?
最直观的想法就是引入EXP函数,如公式(4)所示,那么反过来推导就是Log函数的来源了。


6.为什么IoU较大时边界框回归可视为线性变换?

在这里插入图片描述


Siou Loss是一种用于边界框回归的损失函数,它比传统的平方损失函数更强大。 边界框回归是目标检测任务中的重要组成部分,它的目标是预测图像中物体的位置和大小。传统的平方损失函数在边界框回归中常被使用,但它在处理物体尺寸变化和不均衡数据上存在一些问题。而Siou Loss通过解决这些问题,提供了更强大的学习能力。 Siou Loss通过引入IoU(Intersection over Union)来度量预测边界框和真实边界框之间的相似度。IoU是指预测边界框和真实边界框的交集区域与并集区域的比值,它能更好地描述边界框的匹配度。 Siou Loss不仅考虑了预测边界框和真实边界框之间的位置差异,还考虑了它们之间的尺度差异。这使得Siou Loss在处理物体尺寸变化时更加灵活,能够更好地适应不同尺寸的物体。 此外,Siou Loss还能够解决数据不均衡的问题。在目标检测任务中,负样本(非物体区域)通常远远多于正样本(物体区域),这导致传统的平方损失函数在训练过程中很难平衡正负样本之间的关系。而Siou Loss通过IoU作为权重,可以有效地平衡正负样本之间的重要性,提高了模型对于正样本的关注程度。 综上所述,Siou Loss作为一种更为强大的学习方法,在边界框回归任务中具有优势。它通过引入IoU来度量相似度,并解决了尺度变化和数据不均衡的问题,提高了模型的学习能力和预测准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小酒馆燃着灯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值