## 从四个邻点实际算出 2.5 ## 解释、算例与证据 # P42 · 连续位置的数值,怎样从四个邻点得到? 对 0、2、4、6 四邻值,按横向 1/4、纵向 1/2 算出 2.5。两步插值与四项加权是同一运算。读完算例后,接着看[原论文的对照:对齐改善了哪些指标](/course/blocks/roi-align-paper-evidence.html),区分“使用双线性插值”和“保持坐标对齐”的作用。 图内标签与数值:Lecture 03 课堂图解 P42;F = [[0,2],[4,6]];x 向右,y 向下;0;2;4;6;(.25, .5);x;y;上行:¾×0 + ¼×2 = 0.5;下行:¾×4 + ¼×6 = 4.5;再取两行中间值;½×0.5 + ½×4.5 = 2.5;四邻点权重:⅜,⅛,⅜,⅛;权重和 = 1;结果 = 2.5;一个连续采样点的双线性算例;完整 RoIAlign 还要组织分格、多个采样点与汇总。 F=[[0,2],[4,6]] 的四邻点与 (.25,.5) 采样点,横向两次插值和纵向一次插值连接到 2.5。 - F = [[0,2],[4,6]];x 向右,y 向下 - 0 - 2 - 4 - 6 - (.25, .5) - x - y - 上行:¾×0 + ¼×2 = 0.5 - 下行:¾×4 + ¼×6 = 4.5 - 再取两行中间值 - ½×0.5 + ½×4.5 = 2.5 - 四邻点权重:⅜,⅛,⅜,⅛ - 权重和 = 1;结果 = 2.5 - 一个连续采样点的双线性算例;完整 RoIAlign 还要组织分格、多个采样点与汇总。F=[[0,2],[4,6]] 的四邻点与 (.25,.5) 采样点,横向两次插值和纵向一次插值连接到 2.5。 [查看对应图解状态](/#/l3-r2-p42/1)[查看完整图解](/course/figures/l3-r2-p42-1.html) ## 课堂讲述 这四个相邻位置的值分别是零、二、四、六。我们要读的位置在横向四分之一、纵向一半处,不正好落在其中任何一个整数点上。 先在上面一行按横向位置插值,得到零点五;下面一行同样插值得到四点五;再在两行的中间取值,得到二点五。也可以一次写成四个邻点的加权和,结果相同。 这段计算不是让你背四个权重,而是看清连续采样没有创造一张新图:它在已有特征之间,按指定位置构造读出。RoIAlign 会在区域的分格中组织这类采样与聚合。保持坐标对应,对需要细轮廓的任务就特别重要。 ### 四个邻点如何读出 2.5 [独立阅读](/course/blocks/bilinear-four-neighbors.html) 把左上、右上、左下、右下值依次记为 0、2、4、6。要读取的点相对左上角横向走了 α=1/4、纵向走了 β=1/2。上排插值为 $(1-α)0+α2=.5$,下排为 $(1-α)4+α6=4.5$,再纵向插值得 $(1-β).5+β4.5=2.5$。 也可直接写四点加权和: $ v=(1-α)(1-β)F_{00}+α(1-β)F_{10}+(1-α)βF_{01}+αβF_{11}. $ 对应权重为 3/8、1/8、3/8、1/8,总和为 1。代入得 $0+2/8+12/8+6/8=2.5$。离左边更近,所以两项左邻的总权重是 3/4;纵向正好一半,上下各占 1/2。这些比例直接来自几何,而不是学出来的四个自由参数。 RoIAlign 在每个 bin 内组织多个这种连续采样点,再按实现聚合。它用原有特征构造位置相关读数,没有查到原图中的隐藏真值。改变特征图分辨率、RoI 或采样数量时,应重新计算位置;不能沿用旧邻点却声称只是换了 stride。 读完算例后,接着看[原论文的对照:对齐改善了哪些指标](/course/blocks/roi-align-paper-evidence.html),区分“使用双线性插值”和“保持坐标对齐”的作用。 #### 图示条件与公式约定 四点为左上0、右上2、左下4、右下6,x=.25,y=.5,权重依次3/8、1/8、3/8、1/8,值2.5。它是单点插值,不是完整 RoIAlign。原论文每 RoI bin 内4个规则采样点后 max/average 聚合;图43进一步连接局部区域目标。 #### 这条线索的展开与后续阅读 - [保留连续位置,从邻居读取特征](/supplement.html?return=l3-r2-p42/0#/l3-roi-align/0) 本页说明 - [训练对照说明:对齐值得修复](/supplement.html?return=l3-r2-p42/0#/l3-roi-evidence/0) 本页说明 - [RoIAlign 修复读取错位,不修复表示丢失|核心改动怎样工作](/supplement.html?return=l3-r2-p42/0#/l3-roi-align-chain-mechanism/0) 本页说明 - [RoIAlign 修复读取错位,不修复表示丢失|一起算一个完整例子](/supplement.html?return=l3-r2-p42/0#/l3-roi-align-chain-example/0) 本页说明 ## 在同一设置下比较 RoIPool、RoIWarp 与 RoIAlign 计算说明组件怎样工作;论文同条件对照再检验它是否改变任务表现。 ### 原论文的对照:对齐改善了哪些指标 [独立阅读](/course/blocks/roi-align-paper-evidence.html) Mask R-CNN v3 的 Table 2 使用 COCO `trainval35k` 训练、`minival` 测试;表中未另说明时报告 mask AP。以下固定 ResNet-50-C4、stride 16,并选同为 max 聚合的行: | 区域读取 | 是否保留对齐 | 是否双线性 | mask AP | mask AP75 | | --- | --- | --- | --- | --- | | RoIPool | 否 | 否 | 26.9 | 26.4 | | RoIWarp | 否 | 是 | 27.2 | 27.1 | | RoIAlign | 是 | 是 | 30.2 | 31.8 | RoIAlign 相比 RoIPool 的 AP 增加 3.3 点,AP75 增加 5.4 点。RoIWarp 也插值却没有同样改善,支持“保持坐标对应”这一机制判断。平均聚合的 RoIAlign 行是 AP30.3/AP75 31.5,引用时不能把不同聚合行混在一个对照里。Table 2(d) 换成 C5、stride32,mask AP 从 23.6 到 30.9;这是另一组设置。 这些是训练完整模型的论文结果,不是本课程重跑。它们说明读取位置值得修复,尤其严格定位受益;P44 则把输入 F 固定成完全相同,讨论任何确定性读出都无法创造差别。方法有效与构造例中的信息限制,可以同时成立。 接着读[为什么相同 F 仍无法恢复:表示碰撞的推导](/course/blocks/representation-collision-proof.html),再到 [LAB03 · 空间信息:表示、采样与掩码](/course/notebooks/49a2c030eafa4e1db6fc4f1a08c3810a.html),用一维读数和差分通道改变条件。 **出处:**[Mask R-CNN v3 §3–4、Table 2](https://arxiv.org/html/1703.06870v3) ### 沿着图解追问 以下是备课用的模拟师生对话,不是课堂实录。 **学生:**四点加权是不是已经把丢掉的像素补出来了? **教师:**它按指定位置读取现有特征,不知道被删去的真实像素。图上 2.5 来自这四个数和坐标;如果甲乙给它同样四个数与坐标,它们的结果仍相同。 ## 沿这个问题继续 先读本页解释与图,再到 LAB03 改一个坐标或对象。 #### 按问题回查的讲解与短练习(1) **出处:**[Mask R-CNN §3 (2017)](https://arxiv.org/html/1703.06870v3)