边界框回归 Bounding-Box Regression

news2024/11/27 0:36:07

文章目录

  • 边界框回归(Bounding-Box Regression)
    • 一、边界框回归简介
    • 二、边界框回归细节
    • 三、相关问题思考
      • 1. 为什么使用相对坐标差?
      • 2. 为什么宽高比要取对数?
      • 3. 为什么IoU较大时边界框回归可视为线性变换?

边界框回归(Bounding-Box Regression)


本篇博客实际上参考了CSDN另一篇博客写的 这是链接。但那篇博客的排版和语言表达实在是太烂了,公式错误也很多,以至于我花了很多时间才看明白。我将自己的思考结果记录下来,供大家参考。

一、边界框回归简介

那么边界框回归所要做的就是利用某种映射关系,使得候选目标框(region proposal P = ( P x , P y , P w , P h ) P=\left(P_{x}, P_{y}, P_{w}, P_{h}\right) P=(Px,Py,Pw,Ph)的映射目标框无限接近于真实目标框(ground-truth)。将上述原理利用数学符号表示如下:在给定一组候选目标框 ,寻找到一个映射 f f f ,使得 f ( P x , P y , P w , P h ) = ( G ^ x , G ^ y , G ^ w , G ^ h ) ≈ ( G x , G y , G w , G h ) f(P_{x}, P_{y}, P_{w}, P_{h})=(\hat{G}_{x}, \hat{G}_{y}, \hat{G}_{w}, \hat{G}_{h}) \approx\left(G_{x}, G_{y}, G_{w}, G_{h}\right) f(Px,Py,Pw,Ph)=(G^x,G^y,G^w,G^h)(Gx,Gy,Gw,Gh) 。其中 ( G x , G y , G w , G h ) \left(G_{x}, G_{y}, G_{w}, G_{h}\right) (Gx,Gy,Gw,Gh)表示真实值, ( G ^ x , G ^ y , G ^ w , G ^ h ) (\hat{G}_{x}, \hat{G}_{y}, \hat{G}_{w}, \hat{G}_{h}) (G^x,G^y,G^w,G^h)表示预测值。

在这里插入图片描述

图1 边界框回归过程

边界框回归过程图像表示如图1所示。在图1红色框代表候选目标框,绿色框代表真实目标框,蓝色框代表边界框回归算法预测目标框。红色圆圈代表选候选目标框的中心点,绿色圆圈代表选真实目标框的中心点,蓝色圆圈代表选边界框回归算法预测目标框的中心点。


二、边界框回归细节

RCNN论文里指出,边界框回归是利用平移变换和尺度变换来实现映射 。平移变换的计算公式如下:
{ G ^ x = P w d x ( P ) + P x G ^ y = P h d y ( P ) + P y (1) \left\{\begin{array}{l} \hat{G}_{x}=P_{w} d_{x}(P)+P_{x} \\ \hat{G}_{y}=P_{h} d_{y}(P)+P_{y} \end{array}\right.\tag1 {G^x=Pwdx(P)+PxG^y=Phdy(P)+Py(1)

尺度变换的计算公式如下:

{ G ^ w = P w exp ⁡ ( d w ( P ) ) G ^ h = P h exp ⁡ ( d w ( P ) ) (2) \left\{\begin{array}{l} \hat{G}_{w}=P_{w} \exp \left(d_{w}(P)\right) \\ \hat{G}_{h}=P_{h} \exp \left(d_{w}(P)\right) \end{array}\right.\tag2 {G^w=Pwexp(dw(P))G^h=Phexp(dw(P))(2)
其中 d ⋆ ( P ) d_{\star}(P) d(P) ⋆ \star 代表 x , y , w , h x,y,w,h x,y,w,h),是基于 pool 5 \text{pool}_5 pool5的四个线性函数。在这里,我们将特征记作 ϕ 5 ( P ) \phi_{5}(P) ϕ5(P),那么 d ⋆ ( P ) = w ⋆ T ϕ 5 ( P ) d_\star(P)=w_{\star}^T\phi_5(P) d(P)=wTϕ5(P)。因此,我们可以利用最小二乘法或者梯度下降算法进行求解 ,RCNN论文中给出了 的求解表达式:
w ∗ = arg ⁡ min ⁡ w ^ ⋆ ∑ N ( t ∗ i − w ^ ∗ T ϕ 5 ( P i ) ) 2 + λ ∥ w ^ ∗ ∥ 2 (3) w_{*}=\underset{\hat{w}_\star}{\arg \min } \sum^{N}\left(t_{*}^{i}-\hat{w}_{*}^{T} \phi_{5}\left(P^{i}\right)\right)^{2}+\lambda\left\|\hat{w}_{*}\right\|^{2}\tag3 w=w^argminN(tiw^Tϕ5(Pi))2+λw^2(3)
其中:
{ t x = G x − P x P w t y = G y − P y P h t w = log ⁡ G w P w t h = log ⁡ G h P h (4) \left\{\begin{aligned} t_{x} & =\frac{G_{x}-P_{x}}{P_{w}} \\ t_{y} & =\frac{G_{y}-P_{y}}{P_{h}} \\ t_{w} & =\log \frac{G_{w}}{P_{w}} \\ t_{h} & =\log \frac{G_{h}}{P_{h}} \end{aligned}\right.\tag4 txtytwth=PwGxPx=PhGyPy=logPwGw=logPhGh(4)
t x t_{x} tx t y t_{y} ty是中心点的平移移动, t w t_{w} tw t h t_{h} th是尺度放缩量。

可以看出,上述模型就是一个Ridge回归模型。在RCNN中,边界框回归要设计4个不同的Ridge回归模型分别求解 w x , w y , w w , w h w_x,w_y,w_w,w_h wx,wy,ww,wh

回归模型的输入是什么?是 ( P x , P y , P w , P h ) (P_{x}, P_{y}, P_{w}, P_{h}) (Px,Py,Pw,Ph这个四维张量吗?

真正的输入是这个窗口对应的 CNN 特征,也就是 R-CNN 中的 pool 5 \text{pool}_5 pool5(特征向量)。训练阶段也会用到Ground Truth的坐标数据,也就是式 ( 4 ) (4) (4)提到的 t ⋆ t_\star t


三、相关问题思考

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

在式 ( 4 ) (4) (4)中 ,那么为什么要将真实框的中心坐标与候选框的中心坐标的差值分别除以宽高呢?

在这里插入图片描述

图2 尺寸不同的图片

接下来的讨论中,我们假设边界框的回归使用绝对坐标。

首先我们假设两张尺寸不同,但内容相同的图像,图像如图2所示。我们假设经过CNN提取的特征分别为 ϕ 1 \phi_1 ϕ1 ϕ 2 \phi_2 ϕ2。同时,我们假设 x i x_i xi为第 i i i个真实目标框的 x x x坐标, p i p_i pi为第 i i i个候选目标框的 x x x 坐标,边界框回归 x x x坐标的映射关系为 g x g_x gx。那么我们可以得出:
{ g x ( ϕ 1 ) = x 1 − p 1 g x ( ϕ 2 ) = x 2 − p 2 (5) \left\{\begin{array}{l} g_x\left(\phi_{1}\right)=x_{1}-p_{1} \\ g_x\left(\phi_{2}\right)=x_{2}-p_{2} \end{array}\right.\tag5 {gx(ϕ1)=x1p1gx(ϕ2)=x2p2(5)
理论上来说,CNN得出的特征 ϕ 1 \phi_1 ϕ1 ϕ 2 \phi_2 ϕ2是相似的,那么线性函数映射的结果也应该是接近的。但显然 x 1 − p 1 ≠ x 2 − p 2 x_{1}-p_{1} \neq x_{2}-p_{2} x1p1=x2p2。由于尺寸的变化,候选目标框和真实目标框坐标之间的偏移量也随着尺寸而成比例缩放,即这个值不是恒定不变的。但是归一化的比例值可以认为是近似相同的。

关于CNN是否有尺度不变性,这篇论文有说明过Object Detection in 20 Years: A Survey

因此,我们必须对 x x x坐标的偏移量除以候选目标框的宽, y y y坐标的偏移量除以候选目标框的高。只有这样才能得到候选目标框与真实目标框之间坐标偏移量值的相对值。同时使用相对偏移量的好处可以自由选择输入图像的尺寸,使得模型灵活多变。也就说,对坐标偏移量除以宽高就是在做尺度归一化,即尺寸较大的目标框的坐标偏移量较大,尺寸较小的目标框的坐标偏移量较小。


2. 为什么宽高比要取对数?

类比问题1,我们不禁要问为什么不直接使用宽高的比值作为目标进行学习,非得“多此一举”取对数?

线性函数输出的是一个实数,因为宽和高乘的倍数必须大于0,所以要取指数的形式,反过来就是取对数。


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

‘Rich feature hierarchies for accurate object detection and semantic segmentation’文章中曾经提到,IoU必须大于 0.6 0.6 0.6时,才可以使用线性回归,否则边界框回归将是一个复杂的非线性问题。


知乎上一篇博客曾经尝试解释过这个问题 这是链接。
在这里插入图片描述

但我觉得是不合理的,当 G w ≈ P w G_{w} \approx P_{w} GwPw G h ≈ P h G_{h} \approx P_{h} GhPh时候,式 ( 4 ) (4) (4)的后两项确实可以视为某种线性的变换。但我们要理解到,我们回归的输入量是 ( P x , P y , P w , P h ) (P_{x}, P_{y}, P_{w}, P_{h}) (Px,Py,Pw,Ph)窗口对应的 CNN 特征,而不是四维张量 ( P x , P y , P w , P h ) (P_{x}, P_{y}, P_{w}, P_{h}) (Px,Py,Pw,Ph)。所以这里分析原边界框的坐标和Ground-truth的边界框坐标是否是线性关系是没有意义的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

协调中心性能大对比:zookeeper是如何解决负载均衡问题的

作为分布式系统的一个长久话题,协调中心的性能是一个很有意思的突破口。 作为java的分布式协调中心,常见的有zookeeper,redis ,memcache等全局性功能的组件,也有MySQL,mongoDB之类的数据库形持久存储。 两…

PyCharm无法打开,提示Internal error错误。

安装LeetCode插件后,重新打开PyCharm后,出现该错误。 删除安装目录下的 plugins 文件夹后,重新打开后,又出现该错误。 重新把回收站的文件夹恢复后,再次打开还是之前那个错误。 尝试了 cmd ,powershell,管…

Python Flask构建微信小程序订餐系统 (五)

🔥 微信小程序登录态 🔥 所谓登录态,就是程序在运行时,能够识别当前用户,能够证明自己的唯一性且合法。 WEB服务器通过浏览器携带的cookie获取session来判断是否是同一用户(或浏览器);Restful服务通过客户端传过来唯一ID,来识别调用用户。 维护登录态的原因 有自身…

行为型模式-模板方法模式

1.概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如&…

机器学习(五):机器学习算法分类

文章目录 机器学习算法分类 一、监督学习 1、回归问题 2、分类问题 二、无监督学习 三、半监督学习 四、强化学习 机器学习算法分类 根据数据集组成不同,可以把机器学习算法分为: 监督学习无监督学习半监督学习强化学习一、监督学习 定义&…

Python初学者看过来啊,老油条来复习

嗨嗨嗨,我又又又又来了 目录 一、Python常用的基本语句 1、format字符串格式化 2、连接字符串 3、if...else条件语句 4、for...in、while循环语句 5、import导入 2.详细介绍 对于初学者来说,想要学好Python语言,必须从最基本的知识开…

为了方便项目打包,我用Node写了个git-tag工具

目录 前言 实现过程 起步 npm全局命令 功能实现 功能验证 代码发布 写在最后 前言 在使用git执行打包操作时,我们常常会根据场景在tag中增加一些标识。 以基准版本为1.0.0为例:软件开发初期可以定义1.0.0-alpha.0,开发阶段是1.0.0-b…

【面试克星】【公式少代码少话多】Vins-Mono预积分相关知识点总结与概述

前言 Vins-Mono预积分相关的公式和代码可以在各个博客中找到。本文将充当一个帮助大家快速理解预积分、中值积分相关概述的角色,带大家理解代码,应对面试。 下面会分成三步,来帮助大家充分理解这个过程。步骤是按照顺序来写的。 中值积分和…

学习MapStruct

概述 MapStruct是一个Java注释处理器,用于生成类型安全的bean映射类。 您要做的就是定义一个映射器接口,该接口声明任何必需的映射方法。在编译期间,MapStruct将生成此接口的实现。此实现使用简单的Java方法调用在源对象和目标对象之间进行映…

<<零入门容器云网络实战>>技术专栏之文章目录

建议: 1、资源 零入门容器云网络实战 链接: https://pan.baidu.com/s/1nPLRkAwjItAHmtEU2T1F4g 提取码: rrpd 2、技术沟通渠道 342498897 3、字体颜色说明 绿色字体&#xff0c; 表示已经发表&#xff0c;可以观看 灰色字体&#xff0c; 表示未发表 4、专栏介绍 1 <<…

【小知识点】如何在 git 中取消 __pycache__ 文件

文章目录如何在 git 中取消 **pycache** 文件CryptographyDeprecationWarning 异常如何在 git 中取消 pycache 文件 如果使用 PyCharm 运行代码&#xff0c;会在 Python 脚本所在目录生成 __pycache__ &#xff0c;每次提交到 git 都会包含该目录&#xff0c;本篇博客我们要将其…

插入排序算法的实现和优化~

插入排序的基本思想&#xff1a; 在一个已排好序的记录子集的基础上&#xff0c;每一步将下一个待排序的记录有序插入到已排好序的记录子集中&#xff0c;直到将所有待排记录全部插入为止 直接插入排序&#xff1a; 直接插入排序是一种最基本的插入排序方法&#xff0c;元素…

离线召回与排序介绍

3.3 离线召回与排序介绍 学习目标 目标 了解召回排序作用知道头条推荐召回排序设计应用 无 3.3.1 召回与排序介绍 召回&#xff1a;从海量文章数据中得到若干候选文章召回集合(数量较多) 排序&#xff1a;从召回集合中读取推荐文章&#xff0c;构建样本特征进行排序过滤筛选…

【SpringCloud21】面试题雪花算法

目录1. 问题2.ID生成规则部分硬性要求3.ID号生成系统的可用性要求4.一般通用方案4.1UUID4. 数据库自增主键5. 基于Redis生成全局id策略6. snowflake6.1 概述6.2 结构6.3 源码6.4 工程落地经验6.4.1 糊涂工具包6.4.2 springboot整合雪花算法1.POM2.核心代码IdGeneratorSnowflake…

ElasticSearch7.6.x 学习笔记

ElasticSearch7.6.x 学习笔记 目录 ElasticSearch概述 ElasticSearch&#xff0c;简称es&#xff0c;es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据。且本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数…

Spring事务、事务隔离级别、事务传播机制

Spring事务和事务传播机制一、为什么需要事务&#xff1f;(回顾)二、Spring中事务的实现2.1 MySQL中的事务使用 (回顾)2.2 Spring编程式事务2.3 Spring 声明式事务2.3.1 Transactional 使用2.3.2 Transactional 作用范围2.3.3 Transactional 参数说明2.3.4 注意事项2.3.4 Trans…

【微服务】Nacos注册中心

Nacos和Eureka一样也可以充当服务的注册中心&#xff0c;让我们一起看看有何区别&#xff1f; 点击跳转&#x1f449;【微服务】Eureka注册中心 一.引入 Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比于Eureka其功能更加丰富&#xff0c;在国内受欢迎…

2. 获取数字证书,搭建nginx服务器,验证https请求

文章目录 一、 前提知识二、获取数字证书三、搭建nginx服务器3.1 安装nginx操作步骤3.2 导入证书3.3 修改nginx配置文件四、验证一、 前提知识 首先我们知道访问域名时,http请求默认端口为80,https为443。那么我们现在就需要对这两个端口进行监听,这里我们就要用到nginx服务…

数据结构 最短路径课设(源码+实验报告+视频讲解)(用了自取)

XIAN TECHNOLOGICAL UNIVERSITY 课程设计报告 实验课程名称 算法与数据结构 专 业&#xff1a; 班 级&#xff1a; 姓 名&#xff1a; 学 号&#xff1a; 实验学时&#xff1a; 指导…

插入排序实现

场景&#xff1a; 插入排序&#xff0c;一般也被称为直接插入排序。 对于少量元素的排序&#xff0c;它是一个有效的算法 。 插入排序是一种最简单的排序方法&#xff0c;它的基本思想是将一个记录插入到已经排好序的有序表中&#xff0c;从而一个新的、记录数增1的有序表。在…