结论与范围
01 / V9P3R2

V9P3R2 管线复盘

旧版:S9L10(1e-6)+ HaWoR 融合。
当前:S9L10 三维预测+整段 MANO 拟合,支持纯 RGB 和 Stereo 两条路线。

检查数据:0907、0910,以及八条 RGB demo。部分跳变、漏显已改善;手指卷曲、遮挡漏检和局部翻掌仍存在。

02 / V9P3R2

问题从哪里来,具体怎么改?

HaWoR 旧分支、检测与关键点、后续拟合,都可能引入不连续。不同原因用了不同修法。

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 没有这些实测标定条件,仍使用假设内参与估计尺度。

深度几何、单因素与留出实验 ↗

这些改动跨越多个版本:旧融合版先做过 HaWoR 上下文、检测与分段拟合的控制;P3 / P3R1 改为 S9 初值和整段拟合;P3R2 再修身份、遮挡和初始化。第 05 节单独列 R1→R2 的全量统计。没有把不同实验的改善率加在一起。

旧 V9 与当前结果的同源视频对比(170110,4–8 秒)

上:旧 V9 融合版;下:R2 + 这条视频的 RIGHT_IDFIX。相同源时刻、原速播放;下方左手问题仍在,不能代表全量效果。

上文旧版抖动诊断来自 20260907-171916 的 1,131 帧,不等同于 0907 全部 119 条。二阶差分和帧间步长包含真实运动;用于结合控制实验定位问题,不是 GT 准确率。

03 / V9P3R2

两条输入路线,一套手部拟合

纯 RGB 依赖预测深度与相机轨迹;Stereo 使用本次录制匹配的标定与深度。

项目纯 RGB:八条 demoStereo:0907 / 0910
参考图像 / 内参SBS 左眼 1920×1080;fx=fy=960、cx=960、cy=540,历史假设。校正左目与对应 K;标定和 frame-map 须匹配本次输入。
深度DA3METRIC-LARGE;同份深度供 ViPE 和点云,未作手部深度因子。0907 复用已发布深度;0910 FFS:max_disp=416、8 iterations、0.1–4 m。
相机轨迹ViPE + 共享 DA3 深度 + 固定 K + RGB 人体排除,无 IMU。0907 复用已有 EGO 轨迹;0910 原始双目 + IMU → SpectacularAI。
尺度 / 世界系MANO 尺寸先验 + 假设焦距;每序列单一标量对齐场景与相机平移。深度由标定基线定尺度;0910 的 SLAM 世界系未配准到 XR 物体世界系。
实际发布八条完整双栏 demo;单目场景和接触存在误差。0907 / 0910 本轮全量为 overlay + 参数 / 世界系输出,不能混称已交付双栏。

0910 深度保留历史分支:02–05 沿用双向一致性检查,后续序列使用官方单次 forward。单次策略的 0/255 confidence 是几何有效标志,不是置信概率。

RGB 配置 ↗ FFS 策略 ↗ 0910 SLAM ↗ ViPE 深度开关 ↗

04 / V9P3R2

后处理到底做了什么?

优化器是一个“反复调整 MANO 参数,使其符合观测”的程序。当前实现使用 Adam。

观测RGB 关键点、mask
合格深度、相邻帧
→
拟合器调整手的位置、掌面朝向
手指角度、手形
→
输出一组一致的 MANO 参数
关节、mesh、轨迹

“更稳定”来自求解中的时序约束和错误观测修复。 当前 R2 没有在最终 mesh 上再叠一层平滑滤波;这些结果也不是基模直接输出。

名词: MANO 是用少量姿态、形状参数生成三维手的模型;mesh 是手的三角网格;mask 是图像中的手部区域;PnP 是用 3D 点与 2D 对应点估计位置和朝向。

后处理做什么有什么用仍有什么风险
观测清理与跟踪识别当前帧哪里有手、是哪一侧、是否同一只手;清除孤立点和重复候选。减少错误裁剪、旁人手混入和左右手争抢。YOLO / MMPose 高分也会认错,模糊和遮挡仍会漏检。
掌面 PnP 初始化用腕部、指根等二维点,尝试更合理的整只手朝向。避免在错误朝向附近,把手指硬弯成能贴合图像的样子。R2 ≥4 个掌点 + ≥2 个非掌点、分数 ≥0.6;可能挡住必要纠正。
2D 与轮廓约束让 MANO 投影接近可靠关键点和可见手部区域。改善位置、朝向和外轮廓。错误指链会带偏拟合;遮挡手指不能强迫挤进可见 mask。
合格深度与遮挡约束Stereo 只使用当前帧质量合格的掌部深度,并判断哪些部分被物体挡住。约束前后位置,减轻错误深度和遮挡导致的形变。深度也有误差;RGB 八条没有启用 Stereo 关节深度因子。
时序正则拟合时惩罚不合理的帧间加速度,分别约束整手、掌部局部指姿、根部和 Z。抑制高频抖动;整段求解没有独立优化小窗口的拼接边界。R2 不跨有效性和身份边界;过强约束也可能拖住真实快动作。S9 推理仍使用 T8 窗口。
共享形状 + S9 先验同一侧手在序列内共享形状;姿态不要过度偏离模型预测。减少手大小、骨段随帧波动,限制无约束形变。原模型也会错;0.7 rad 增量范围不是生理活动范围或自碰撞约束。
有效性门控当前证据不足则不输出完整手;世界位姿缺失只影响世界输出。减少幻觉手;避免世界跟踪掉了连左栏手也消失。会保留空缺,不能把“少显示错误手”说成“漏检全部解决”。
实际参数与运行差异

0907:119 条均 360 步,其中 89 条姿态时序权重 0.8,30 条为 2.0;0910:16 条均 720 步、权重 0.8;RGB 八条:360 步、权重 2.0。均联合估计腕部深度。0910 采用姿态感知的深度初始化与 720 步配套。

RGB 批次:姿态学习率 0.012、根部 0.002、姿态先验权重 0.08、深度时序权重 200、根部时序权重 0.015;共享形状优化学习率 0.004。不同损失的数值尺度不同,不能只按权重大小判断谁起主导作用。

Adam 与损失 ↗ 实际配置继承 ↗ RGB 深度因子关闭 ↗ 深度初始化对照 ↗

05 / V9P3R2

改善了部分跳变和漏显,但有代价

以下数值全部是 P3R1 → P3R2,不是旧 V9 融合版 → R2。

掌面突翻

0907 clip18,f19→20:108.92° → 9.29°。同 R2 输入关闭掌面保护又到 152.22°。

裁剪突变

0910_11,f630:关节旋转步长 126.64° → 9.51°;f631 的双手漏显恢复。

搬桶漏显

0910_10,f1031–1032:原本双手消失,R2 在相邻 5 帧保持双手输出;隐藏指姿仍未验证。

相同当前帧观测上的配对统计

P95:95% 的可比值不超过此数。重投影与深度偏差针对模型观测,不是 GT;速度、加速度和旋转步长包含真实运动。它们下降不能单独证明“更准”。

多数统计改善

全部数据:手腕加速度 P95 7.61 → 6.60 m/s²;深度偏差 P95 75.02 → 55.91 mm。侧别冲突候选事件 70 → 2。

不能忽略退化

0907 贴合 P95 6.41 → 7.51 px 变差;已有至少 8 处相对 R1 明显新增的可见坏例。

消融做了哪些?候选数该怎么读?

R2 全量完成后做 34 项整段对照:关闭身份边界、归属判断、掌面保护、部分初始化、场景约束,以及改变深度时序项、取消部分邻帧旋转借用。卷曲专项另有 26 组条件:5 条序列 × 5 个主要条件,加 1 个歧义指链剔除控制;其中 23 次新拟合、3 组复用旧控制。两组统计不能直接加成“60 种不同方法”。

4,908 是连续异常候选事件,不是真实坏帧数。2,412 条新增异常记录去重后是 2,372 个帧内手实例;排除网格相交后为 452 个。合法接触也能触发相交,不能用这些数字算准确率。

配对统计与 8 处退化 ↗ 34 项控制 ↗ 26 组卷曲条件 ↗

06 / V9P3R2

具体画面:改善、退化和卷曲原因

点击图像可放大。静态图用于看形状;运动结论结合邻帧与已有完整序列消融。

0910_11 · f630:网格突变减轻

从左到右:原图 / R1 / R2。同一帧,R1 右手明显变大扭转,R2 更贴近手部区域。

对应前后帧 f628–632,R2 保持双手输出;物体后面的手指仍不能由图像独立验证。查看完整五帧

170110 · 5.1–5.4 秒:修正指链身份,不增加平滑

原图 / 原 R2 / 已接受的 identity_R2 修复;f158。图中文字 identity_R2 对应 RIGHT_IDFIX。

MMPose 四指顺序在 f154–158 反转,f159 恢复;错误高分点驱动掌面 PnP 大幅翻转。前后锚帧双向 RGB 光流验证后,纠正 74 个点的身份、恢复 6 个点的位置,再按原 R2 参数重拟合右手。

整体旋转步长 71.37° → 3.77°同片右手专项接受;其余七条不变,左手 6–7 秒问题仍在。

已替换视频的 4–7 秒双栏节选,原速 30 fps。这里展示修复结果,不是旧 V9 对比。

专项修复报告 ↗
07 / V9P3R2

目前的主要问题

三类问题要分开:观测不足、拟合选错,以及场景/相机估计误差。

问题可定位的案例目前判断
遮挡 / 边缘漏检080134 搬箱;165923 f434;160047 f659 / f711。手部分露出、关键点不足、身份弱;尚未解决,不能靠跨缺口补手掩盖。
侧别 / 身份不稳0910_11 f998–1002 在轨迹 22/19 间切换。R2 强侧别规则有效但不万能;仅取消邻帧旋转借用无效。
掌面翻转 / 手指卷曲RGB 160047 8 秒;170110 左手 6–7 秒;0907 / 0910 多例。2D 对应、初始化和拟合补偿共同作用;基模也有错误。
初始化保护的退化0910_17 f3214、0910_10 f2319、0910_05 f46。硬置信阈值会误拒绝或改变候选选择;不能全局简单开关。
深度 / 近景形状 / 接触近景模糊、握物、遮挡指尖;165923 场景尺度对齐被拒绝。手部深度与形状有歧义,低二维误差不能保证正确 3D。
场景与世界系RGB 移动物体残影、点云孔洞;0910 未对齐 XR 物体世界系。不是手指卷曲的起点,但限制了物理接触与联合仿真用途。

八条 RGB 成片逐条状态

视频标识帧 / 时长截至本次汇报的状态
20000101T080048.619358+0800
source_00000
720
24.000 s
重复手已处理;近景轮廓、截断膨胀和 f175 模糊漏检仍在。
20000101T080134.889593+0800
source_00000
900
30.000 s
弱短片段深度跳变已抑制;搬箱漏检及隐藏指姿仍明显。
20000101T080134.889593+0800
source_00001
5
0.167 s
5 帧尾段,无可靠手输出;不能作为手部重建成功例。
20260818T165923.310573+0800
source_00000
900
30.000 s
线缆/底边漏检、快速动作形状错误;场景尺度对齐未通过。
20260818T165923.310573+0800
source_00001
80
2.667 s
80 帧尾段,无可靠手输出;短序列尺度约束不足。
20260818T170110.207199+0800
source_00000
873
29.100 s
右手 5.1–5.4 秒指链反转已专项修复;左手 6–7 秒、搬箱漏检仍在。
20260824T160047.570868+0800
source_00000
900
30.000 s
侧别竞争/重复手已处理;8 秒左手卷曲未修好,仍有搬箱漏检。
20260824T160047.570868+0800
source_00001
30
1.000 s
30 帧尾段,底角极小手片段证据不足,仍无可靠完整手。

打开已有 HF 八视频目录 ↗

可作为当前成果汇报

完整重建与双栏展示已跑通;部分跳变、漏显、身份错误有明确同片对照;局部失败有消融证据。

还不能声称

抖动/卷曲全部修好;全部检测正确;隐藏关节和接触准确;RGB 尺度为 GT;已满足统一训练 GT 标准。

下一步优先级(尚未完成)

  1. 先修观测对应:推广整条指链身份一致性检查,验证是否会误改正常交叉手指。
  2. 再修掌面选择:结合腕部、拇指、时间上下文和可信深度选候选,替代单一硬置信门槛。
  3. 最后约束不合理形变:实验验证关节活动与自碰撞约束,同时检查快动作是否被压平。

0907 / 0910 坏例 ↗ 八条原交付 ↗ 卷曲实验 ↗ 170110 更新 ↗

08 / V9P3R2

证据、版本与讲述口径

正文以已执行的配置和交付记录为准。历史报告里的“未上传 / 尚未运行”等状态只代表当时。

主要结论

“我们取消了旧 V9 的双模型三维融合,改为 S9 初值加整段几何拟合。R2 修复了部分身份、遮挡和初始化问题,减少了一些跳变;但错误观测和姿态歧义仍会导致卷曲与退化。”

最容易混淆的三点

① R1→R2 指标不等于旧 V9→R2。
② 时序正则在拟合时约束相邻帧,不是输出后的平滑滤镜。
③ RIGHT_IDFIX 是单片接受,EXP-CURL01 没有成为通用 R2。

模型、代码与检查范围

模型:FoundationHand-S9L10(1e-6),checkpoint SHA256:29018790a9c72454dd41b088d910ecd7488f4eaa85b9675e67d16f6ef139bf24。S9:T8 / stride4 / center stitching;输入 letterbox 512×896。

仓库 HEAD:a98666665036d9471b38a5bf3ac8d52570eee09b。工作树含未提交修改,HEAD 不是完整运行版本;原运行源码快照和回执仍保留在任务目录。本网页保存了所引用文档和当前相关实现的 SHA256,见 sources.json。

本次仅整理文档、核对运行配置和已有画面,未重跑模型、未修改生产管线。页面内截图来自既有消融/验收;视频为已交付成片的原速节选。

135/135 参数重解码、相机/世界/时间合同检查通过,是输出一致性检查,不是 135/135 视觉无错误。尚无这些实拍视频的逐帧 3D GT 和全量语义坏帧标注。

全部证据快照(可离线查看,有行号)

更新:2026-09-17 · 独立汇报页面 · 图片、流程图、节选视频均可离线打开;只有 HF 外链需要网络。

放大诊断图