Lecture 03 学习讲义
正文
工具
按问题查找
区域、像素与实例区域采样怎样保住几何对应?

先算 35/16,再判断取整改变了什么

解释、算例与证据

P41 · 三个像素的偏移,为什么会伤到轮廓?

先固定简单坐标约定 x/stride,再看 35→2.1875→取整 2 所造成的位置变化。真实库的像素中心与边界设置必须另核对;本页的三个像素误差是指定算例,不是所有实现的固定偏差。

Lecture 03 课堂图解 P41约定:原图 x ÷ 16 → 特征坐标原图 x01632486435连续位置35/16 = 2.187532取整后2 × 16 = 32读的位置变了 3 个原图像素坐标示意,不模拟各框架的半像素约定;RoIAlign 避免相关坐标量化。

原图坐标轴上的 x=35 映射到 stride16 特征坐标 2.1875;量化到 2 时对回 x=32,明确三像素偏移。

  • 约定:原图 x ÷ 16 → 特征坐标
  • 原图 x
  • 0
  • 16
  • 32
  • 48
  • 64
  • 35
  • 连续位置
  • 35/16 = 2.1875
  • 32
  • 取整后
  • 2 × 16 = 32
  • 读的位置变了 3 个原图像素
  • 坐标示意,不模拟各框架的半像素约定;RoIAlign 避免相关坐标量化。
原图坐标轴上的 x=35 映射到 stride16 特征坐标 2.1875;量化到 2 时对回 x=32,明确三像素偏移。 查看对应图解状态
查看完整图解

课堂讲述

用一个小坐标例子看。特征图相对原图的步长是十六,原图横坐标三十五对应特征坐标二点一八七五。如果简单变成整数二,就相当于换到了原图三十二附近的位置。 识别“大概是什么”时,这样的偏差可能不太显眼;但在杯柄或细边界上,几个像素就会改变哪些位置应该属于对象。 这里不是说所有取整都造成同样大小的错误,而是指出一种信息通路问题:我们希望读取这个区域,却在离散化过程中改变了它的几何对应。RoIAlign 的关键,就是在区域提取中避免相关量化,并用连续位置采样。下一页让这个采样变成能算出来的东西。

35 除以 16 之后,为什么不应急着取整

独立阅读

本页采用教学约定 (u=x/s),不额外加入像素中心偏移。原图 x=35、特征步长 s=16,得到 u=2.1875。若立即取整为 2,读到的位置就相当于原图 x=32;对分类可能仍包含相似内容,但细杯柄边缘已偏了三个像素。

这不表示所有实际库都直接使用 x/s。具体实现还可能约定像素中心、半像素偏移、对齐端点及边界外采样。对照库输出时必须先统一这些约定,不能把差异都归结为数值误差。课堂算例选择简单坐标,是为了单独看清连续位置与量化的差别。

RoI 提取不只涉及框起点,还要把框划成固定数量 bins,并在每个 bin 中选择采样位置。若框边界或 bin 边界被取整,细小移动可能完全不改变读数,跨过阈值又会突然跳变。保留连续几何,再通过邻域插值得值,便能把这些连续变化传到区域读出。

到 P42 我们真正算一个点;到 P43 再把点值放回局部二维目标。一次插值算对,是理解组件,不等于已经完成整套实例分割。

沿这个问题继续

先读本页解释与图,再到 LAB03 改一个坐标或对象。

按问题回查的讲解与短练习(1)

图示条件与公式约定

教学坐标假设图像边界坐标/stride,无半像素偏置。35/16=2.1875,取整2对回32。仅用于解释量化误差,不声称还原 torchvision 等具体框架全部坐标约定。

这条线索的展开与后续阅读