当前位置: 首页 > news >正文

RoI Align 的提出和思想#

RoI Align 来源于 17 年提出的经典目标检测与实例分割模型: Mask R-CNN.
在这篇论文中,作者明确指出:RoI Pooling 的量化误差会显著影响像素级任务。

因此,他们提出了一种针对性的改进:

不改变整体框架,只修正对齐方式。

RoI Align 核心思想也并不复杂,总结来说就是:

取消 RoI 边界映射和 bin 分割中的取整,保留所有浮点数表示的边界,用双线性插值来获取采样点的特征值。

下面来详细展开:

2. RoI Align 的具体改进#

2.1 候选框映射#

在这一步的改进较为简单,就是直接省去取整步骤

2.2 划分子区域#

这一步和原本的 RoI Pooling 没有区别,只是候选框并没有取整。

我们直接用图中的例子来演示完整逻辑,设 ,已知 RoI 为:

首先计算 RoI 在特征图上的宽和高:

因为要划分为 ,计算得到每个 bin 的尺寸为:

最终,四个子区域划分如下:

位置x 范围y 范围
左上 (0,0)
右上 (0,1)
左下 (1,0)
右下 (1,1)

现在,整个 RoI 被均匀、连续地切分,没有任何量化误差。
但新的问题是:

连续划分的 bin 并不和特征图网格完全贴合,要如何取样进行下一步池化?

这便是 RoI Align 的核心内容,关键点只有一句话:

既然采样点不再落在整数网格上,那就必须“估算”这个位置的特征值。

2.3 线性插值和双线性插值#

插值是使用离散点估计连续值的常见方法,我们先简单介绍一下。
假设在一条数轴上,我们已知两个点的值:

现在我们想求一个中间位置 的值,该怎么办?
直觉上,这个点更接近 1,因此它的值应该更偏向 。

所以,这里线性插值的公式就是:

其中:

最终得到估计值:

这便是一维线性插值的逻辑,由此我们推广到二维的双线性插值:
特征图是一个二维离散网格,而我们的采样点 通常是浮点数,比如:

就像我们现在遇到的,这个点不会正好落在某个像素中心,而是落在一个“格子内部”。
其周围最近的四个整数点是(以视觉任务中惯例的左上角为原点):

  1. 左上:
  2. 右上:
  3. 左下:
  4. 右下:

双线性插值本质是:先横向插值,再纵向插值(或者反过来也一样)。

于是,我们定义:

在本例中不难得到:

最终结果是四个点的加权和:

总结双线性插值的逻辑如下:

一个采样点的值,是由它周围四个网格点“按距离加权平均”得到的。越近权重越大,越远权重越小,四个权重加起来刚好为 1 。


到这里,就可以明白 RoI Align 的采样思路了。

2.4 采样每个子区域#

现在,我们已经有了划分好的连续子区域,这些 bin 不像取整划分一样直接固定好了采样点。因此问题变成了:

一个 bin 内,到怎么取点?取多少个点?

这就引出了新的超参数:采样率(sampling ratio),或者采样密度

具体展开,对于每个 bin,在两个方向分别定义采样率:

我们可以手动指定两个方向的采样率,在原论文的设计中,每个 bin 内固定为 4 个规则采样点。但现代更常见的是自适应采样:

得到采样率后,我们就可以以此划分该方向的步长

最终,我们以等分加中心偏移的形式得到采样点的位置:

这种设计是为了让点“取中心”,不然不同 bin 的采样点就会在边界处发生重合,在偶数采样率时还会发生不对称取点的情况。在下面的例子里就可以直观感受到这点。
先总结采样逻辑如下:

直接对 bin 的尺寸向上取整,作为该方向的采样率。以此在 x 和 y 方向分别均匀划分,形成规则的 个采样点。

http://www.jsqmd.com/news/1076506/

相关文章:

  • 【IDEA安装黑盒解密】:基于JetBrains官方源码级文档(v2024.1.3 Build #IU-241.14494.242)还原安装流程与签名验证机制
  • 3步免费解锁Microsoft 365完整功能:终极Office激活钩子工具详解
  • 3步轻松搞定知网文献批量下载:告别繁琐手动操作的高效方案
  • 终极网盘下载加速指南:LinkSwift直链助手让文件传输飞起来
  • 后端别再卷CRUD了,强烈建议直接转Agent开发
  • 面向 IVD 医疗设备精密液体输送的运动物理量反馈速度补偿控制技术研究与工程实现
  • AI危险自信的本质与四步事实校验法
  • WebMCP:面向AI Agent的语义化Web交互协议栈
  • 从大偏差原理到玻色气体自由能:环路与交织图像解析
  • Linux 磁盘管理完整指南:从 Disk 到 Mount
  • Python毕设项目:基于 Echarts+Python 的图书销售预警监测系统设计与实现 基于 Echarts+Python 的图书经营可视化监测平台 (源码+文档,讲解、调试运行,定制等)
  • Airsonic:自托管音乐流媒体服务器
  • Flink SQL联结与集合操作详解
  • 昇腾950适配DeepSeek V4-Pro推理实战:CUDA转CANN避坑指南
  • 深度解析Sunshine游戏串流服务器的架构设计与技术实践
  • Java实习面试必备:核心知识点全解析
  • 计算机毕业设计之基于微信小程序主持接单程序的设定
  • AI代理命令注入漏洞剖析:从WS MCP协议风险到企业级三层防护方案
  • 告别刮削难题:MetaShark让Jellyfin中文影视库焕然一新
  • Mythos推理增强中间件:可验证AI推理的工程化实践
  • 【限时公开】JetBrains内部文档节选:IDEA中文语言包加载优先级规则(含intl.properties手动注入技巧)
  • 便携手电电源优化:FP6291 升压 IC 适配 9V 灯珠设计方案,单节锂电升压驱动 9V 高压 LED 手电筒电路设计详解
  • ROS2 SHM 零拷贝 40~50μs 完整延迟拆解
  • 猫抓浏览器扩展:免费强大的资源嗅探工具使用完全指南
  • 大屏数字人智能交互新方案:语音通话问答 + 一键调取后台数据,重塑线下大屏数字化体验
  • 智能运维2.0:从范式跃迁到落地实操——理论框架与实施指南
  • 六种扩散模型控制技术实战指南:从提示词到潜空间操作
  • Ashby 一体化解决方案:助力不同规模企业招聘,多维度资源对比与支持服务全揭秘
  • 个人开发小程序与公司开发:哪种方式更适合你?
  • 客户问我:AI搜索来了,网站还能活多久?