1. HaWoR 的窗口切换,会带来手形接缝
原因:旧 HaWoR 按 16 帧上下文推理。相邻帧跨到下一组上下文时,预测手形可能不连续;旧 V9 又会把这一路结果带进最终输出。历史诊断片里,2,249 个有效手实例有 2,248 个来自 HaWoR 所在的旧几何分支,不能只把当时的抖动归给 S9。
修改:当时先让每帧都使用固定中心位置的 16 帧上下文,减小窗口切换影响。后来从 P3 开始,取消 HaWoR 三维融合和旧几何回退,改用 S9L10 预测作为统一拟合的初值。
证据:固定 HaWoR 中心上下文后,局部网格二阶差分 P90 12.132 → 10.357 mm/frame²。这是旧版上的源头对照,不是“去掉 HaWoR 后 R2 的提升率”。
S9 自身也有窗口接缝:T8/stride4 改为 stride1 只带来部分改善,极端值反而变差;本次 R2 仍是 T8/stride4。
HaWoR 源头对照 ↗最终结果来自哪一支 ↗S9 窗口实验 ↗
2. 旧姿态修正分段求解,段与段之间也会跳
原因:HaWoR 后面的旧姿态修正程序,以互不重叠的 24 帧小段分别求解;相邻小段不共享连续性约束。整体朝向修正、手指修正的“接受 / 拒绝”状态切换时,也可能换成另一套姿态。
修改:当前改为整段共同拟合。损失里加入三帧二阶差分 x[t+1] − 2x[t] + x[t−1]:分别约束相对手腕的关节位置、掌心坐标下的手指位置、投影手腕位置和 log Z。每一侧的手形参数在序列中共享,减少逐帧大小变化。
证据:旧 24 帧边界上,即使没有修正状态切换,局部运动二阶差分 P90 仍是段内的 1.345 倍;历史重叠求解对照把它降到约 1.000 倍。当前整段拟合进一步取消了这种独立优化分段结构。
三帧差分是拟合时的连续性约束,不是输出后再滤波,也没有按时间间隔平方归一化。它能约束不连续,不能纠正认错的手或手指;这些历史数值也不是手部 GT 误差。
24 帧边界诊断 ↗重叠求解对照 ↗当前损失实现 ↗
3. 检测认错手或裁剪突变,会直接改变重建输入
原因:检测框可能跳到另一只手;左右手分配错误会把两条轨迹接在一起。SAM 分割里远处的一个孤立像素也可能撑大裁剪框,使 MMPose 看到的手突然变小,关键点随之变化。后面再加平滑,也无法修好这个对应关系。
修改:R2 遵循可靠的左右手证据;不在不同 track ID 之间加时序项;空间和深度都矛盾时拒绝旁人轨迹。清理 SAM 孤立点后,重新计算受影响帧的检测和关键点。
证据:旧 HaWoR 固定上下文后,最大腕部像素跳步仍有 666.344 px;再修检测身份后降到 47.725 px。R2 中,0910_11 f630 的局部旋转步长由 126.64° → 9.51°,相邻帧双手漏显也恢复。
第一组数值是旧分支源头修复,不是 R2 全量统计;第二组是 R1→R2 的整套修复结果,不能全部归给 SAM 单项。0910_11 f998–1002 仍有身份来回切换。
源头与检测分开对照 ↗R2 规则 ↗逐帧观察 ↗
4. 搬物时可见关节变少,原门槛会把整只手判没了
原因:箱子或桶遮住手指后,关键点数量和分数下降。即使画面里仍能看见一部分手,也可能达不到原来的有效性门槛。若把完整三维手都压进这块可见轮廓,隐藏的手指还可能被挤弯。
修改:用同帧 SAM 区域和稳定轨迹支持部分可见手的初始化;有可靠 Stereo 深度时,用场景深度判断遮挡,避免对隐藏部分施加错误轮廓约束。无深度的 RGB 批次,对证据不足的部分手关闭相应轮廓包含约束。
证据:0910_10 搬桶,R1 在 f1031–1032 双手消失;R2 在 f1030–1034 连续保留双手。没有当前帧证据时仍不补手,因此八条 RGB 中的搬箱、画面边缘漏检尚未全部解决。
搬桶对比 ↗RGB 部分轮廓处理 ↗
5. 掌面朝向选错,拟合器会用弯手指来补偿
原因:腕部和拇指被挡住、手掌接近侧面,或 MMPose 把指链编号认反时,二维点会支持一个错误的掌面朝向。拟合器仍允许调整手指角度,可能通过额外弯曲来减小二维误差,造成翻掌和卷曲。
修改:先用腕部、指根等对应点计算掌面候选朝向。R2 只有在至少 4 个掌部点和 2 个非掌部点分数达到 0.6 时才允许相关初始化。170110 右手的后续专项修复则先用前后帧双向光流核对指链身份,再用原 R2 参数重新拟合。
证据:0907 clip18 f19→20,掌面旋转步长 108.92° → 9.29°;同输入关闭保护又到 152.22°。170110 右手修正指链后,步长 71.37° → 3.77°,没有增加平滑。
置信保护也会拒绝必要纠正,例如 170110 f193 左手。160047 约 8 秒的卷曲仍未修好。RIGHT_IDFIX 只接受于 170110 单片,未推广到 0907 / 0910。
卷曲消融 ↗指链专项修复 ↗
6. 手腕深度的旧换算有偏差,需要按手掌姿态修正
原因:旧初始化用掌部表面深度的中位数加 1 cm,直接当作手腕深度。手掌倾斜时,指根和手腕本来就不在同一深度,这个换算会给错初始位置;不匹配的相机内参也会造成投影错位。
修改:Stereo 使用对应录制、对应图像空间的标定内参。0910 深度初始化从各关节的深度中扣除当前姿态下“关节相对手腕的 Z”,再估计手腕位置,并与 720 步整段拟合配套;R1 起腕部 Z 也参与优化。
证据:0910_02 前 160 帧中,掌部深度约束残差中位数 16.156 → 10.396 mm。单改初始化而仍求解 360 步会恶化部分大跳,因而采用初始化与步数的组合。
这是短段控制,不能当作全量精度提升。另一段的表面深度残差和部分轮廓指标反而变差。八条 RGB 没有这些实测标定条件,仍使用假设内参与估计尺度。
深度几何、单因素与留出实验 ↗
上文旧版抖动诊断来自 20260907-171916 的 1,131 帧,不等同于 0907 全部 119 条。二阶差分和帧间步长包含真实运动;用于结合控制实验定位问题,不是 GT 准确率。