跳转至

Raw HOI Mocap 到可执行轨迹:InterMimic / PhysHOI / SkillMimic 实验报告

状态:实验进行中。本文先固定审计结论、比较协议和已完成校准;正式 scratch 与 shared-sequence 数值将在同一文档持续回填。

1. 目标

本实验暂停 PHC-X action residual 路线,直接比较三种 from-scratch HOI tracker 如何把 raw human-object mocap 变成可物理执行的 rollout:

  1. 在官方代码、官方 raw 单序列和原生 skeleton/object 上分别训练 InterMimic、PhysHOI、SkillMimic;
  2. 用 deterministic rollout 测量 human、object、contact、lift/hold 和完整率;
  3. 把三种方法适配到同一个项目 pre-contact pick clip [0,219)、相同 153D SMPL-X/SAGE physics contract;[68,219) 保留为 post-contact reset control;
  4. 选择 shared pick 上最好的方法,再扩展到 full HOI [0,597)
  5. 在 winner 上比较 full-body direct policy 与 hand/arm-focused adaptation。

原生实验回答“该方法的官方训练闭环是否成立”;只有 shared-sequence 实验能回答“哪一种最适合本项目”。

2. 原生方法审计

项目 InterMimic PhysHOI SkillMimic
teacher input single InterAct-corrected and simulation-packed OMOMO_new/sub2_woodchair_000.pt[269,591] packaged BallPlay/walkpick.pt[66,331] packaged BallPlay-M/pick_40/001_007pickle_pick_000.pt[281,337]
action direct 153D SMPL-X PD direct 153D SMPL-X PD direct 156D humanoid PD
actor obs 3198D 1198D 902D
actor reference t+1,t+16 完整 HOI、surface relation、contact current state + raw t+1 full HOI current state + 64D skill condition;无 dense actor reference
object actor encoding reference-simulation pose/velocity error + joint-surface relation actual object state + next-frame raw object state actual object state;task由 skill one-hot 表示
reward rb * ro * rig * rcg rb * ro * rig * rcg rb * ro * rig * rcg * smoothness
object rotation reward 弱,weight 0.1 发布实现关闭 发布实现关闭
init Hybrid reference-state init Random reference-state init 60-frame RRSI
termination IET:human/object/interaction/contact catastrophic failure fall/episode end fall/clip end
explicit physical reference refinement PSI multi-slot physical buffer

2.0 InterAct offline correction is upstream of InterMimic

“InterMimic 从 raw mocap 训练”必须拆成两层。发布的 OMOMO_new/*.pt 不是未经处理的原始 OMOMO,而是 InterAct pipeline 的 teacher input:先做离线几何修正,再转成 InterMimic 591D tensor,最后才进入 PPO。InterAct 发布代码给出的顺序是:

  1. full-body HOI correction:联合优化 human root/body/hand 与 object translation/rotation;loss 包含 human-object penetration/contact distance、foot/ground contact、object/body reference regularization、velocity/acceleration smoothness和 hand prior;
  2. wrist correction:先只优化左右 wrist,再优化 collar/shoulder/elbow/wrist;显式使用 palm-facing、finger-distance balance、shallow hand penetration、reference deviation和 hand-joint velocity/acceleration smoothness;
  3. hand-pose correction:按 pre-contact → contact → post-contact temporal weights优化 finger pose;使用掌侧 hand vertices减少为了贴近物体而造成的穿插,并联合 contact attraction、penetration、joint-limit/prior、initialization和 temporal smoothness;
  4. interact2mimic.py simulation packing:生成 SMPL-X MJCF/object URDF,把姿态重算到 simulator skeleton,并从 mesh distance、object是否在地面/静止/自由落体以及 SMPL-X vertex-to-joint assignment构造逐 body 三态 contact labels {-1,0,1};随后写入 591D reference;
  5. InterMimic PPO:在上述 corrected kinematic target上学习 dynamic rollout;PSI 只维护可用于 reset 的实际物理 state slots,并不替代前四步的 kinematic correction。

官方 converter 的 contact 语义也比当前项目 adapter更细。它以约 2 cm 几何阈值和 object dynamics判定 object contact;对每个 body,用 skinning vertex assignment标正接触,并在该 body 全部 vertices 距物体 >10 cm 时标为 -1 forbidden contact。当前项目 adapter只要任一 MANO hand vertex距杯面 <5 cm,就把该手 16 个 wrist/finger bodies全部设为 1,其余为 0,没有 -1。InterMimic 的 hand reward会把正 hand label先压成 any-contact,所以正标签稀疏度不是当前 frame-145 no-lift 的充分解释;但 forbidden/noninteraction contact、release timing和 actor contact-difference observation并不等价。

因此 native woodchair成功证明的是:InterAct offline correction + official packing + InterMimic PPO 闭环成立;它不能单独证明 PPO 能把任意未经 wrist/hand correction 的生成轨迹直接修成稳定 grasp。项目 [0,219) strict run 刻意保留当前 direct packing以测量这道 gap;若其失败,下一条主因果实验不应只继续加 PPO epochs,而应先比较 current Kimodo referenceInterAct-style corrected wrist/hand reference,再在完全相同的原版 InterMimic teacher上训练。

2.1 InterMimic

InterMimic 的 actor 每步拼接两个 future horizon。每个 horizon 不只是 human pose 和 object root,还包含 current/reference object error、1024-point object surface 到 human joints 的 interaction representation,以及 reference/actual contact。

Human tracking 不是全身等权:human position reward 使用 exp(-5 * reference interaction distance) 对靠近 object 的关节加权,ankle/toe 仍强制保留稳定权重。这是其同时兼顾 interaction fidelity 与 locomotion/balance 的核心,而不是 hand-only action mask。

PSI 的真实行为是:episode 存活超过约 30 帧,并且由 segment coverage 计算的 adjust_reward > 0.5 后,把实际执行的 root/dof/object segment 写入额外 physical-state slot。这里的 slot 分数不是 PPO task reward 或单独的 contact-promotion score;它主要反映该 rollout segment 离目标 rollout window 末端还有多远。后续用 ref_reward 选择 raw 或 corrected slot作为 episode reset state。必须特别澄清:发布代码的 actor future observation 和 tracking reward 仍读取 raw hoi_data,PSI 不会直接改写成一条新的 dense 591D mocap reference。它是 progressive physical state initialization pool,依赖 policy 先产生局部可行段,不会在 random policy 第一步直接生成完整 physical trajectory。

本次单序列将 rolloutLength 从官方 300 改为 128。原因是 sequence 只有 269 帧;若保持 300,PSI update 条件永远不会触发。这是启用发布机制所需的最小实验配置修改,不改变 actor、reward、PPO 或 action。

2.2 PhysHOI

PhysHOI 从 raw 331D tensor 提取 root、153D dof、52-body positions、object pose/velocity 和 contact。原生 dataFramesScale=1.2 将 25 Hz reference 线性重采样到控制频率。Actor 显式读取下一帧完整 HOI reference,因此是 full-reference direct tracker,而不是只有 reward 看 reference。

Reward 同样为 body、object、interaction graph、contact graph 四组乘积。发布代码把 object orientation error 直接置零,因此其目标是 human/object position、relation 与 contact 可执行性,而不是严格 6D object trajectory reproduction。原生训练使用 Random reference-state init,没有 PSI buffer。

2.3 SkillMimic

SkillMimic 原生 humanoid 有 156D action 和 53 bodies。Low-level actor 读取 current human/object state 与 64D skill condition,不读取 next/future dense reference;但训练 reward 仍逐帧使用 demonstration 的 human/object/interaction/contact reference。因此它是 skill-conditioned imitation policy,不是 reference-free physics optimizer。

原生训练以最长 60-frame RRSI clips 从 281-frame pick sequence 随机取段。发布代码只允许 deterministic state init 从 frame 2 或之后开始;正式评估因此从 source frame 2 运行剩余 279-frame reference,避免把末尾 padding 当成 motion。Project adaptation 在 shared task 中可以显式从 clip frame 0 开始,并把 156D/53-body contract 改到 shared 153D/52-body SMPL-X;这属于必要 skeleton adaptation。

3. 公平比较协议

3.1 Native reproduction

  • policy 全部随机初始化,不加载发布 checkpoint;
  • 保留每种方法自己的 observation、reward、init、termination 和 physical-refinement 机制;
  • GPU1,seed 42,优先 1024 parallel envs;
  • 同时记录 PPO environment steps、wall time、peak memory、reward 和 episode length;
  • deterministic rollout 保存逐帧 simulated/reference human、object pose、object contact force 和 action。

Native 数据、skeleton、object 和 episode init 不同,所以原生 reward、epoch、fps 不直接跨方法排序。

3.2 Shared project pick

三种 adaptation 统一:

  • reference:left/motion.npz[0,219),219 frames,包含约 64 帧真实 pre-contact approach;旧 [68,219) 仅作为 post-contact reset control;
  • action/asset:153D SMPL-X PD,同一 SAGE dynamic object 和 scene;
  • physics、control frequency、seed、parallel envs、PPO sample budget;
  • deterministic start eval 和统一 metrics。

只保留三条方法差异:

  • InterMimic:t+1,t+16 + surface/contact relations + PSI/IET;
  • PhysHOI:full raw t+1 HOI actor reference + Random init,无 PSI;
  • SkillMimic:current state + skill condition actor,60-frame RRSI,reference 只进 reward。

Object rotation reference 是弱指标,不作 hard termination。核心成功定义为完整运行、形成 reference-required contact、lift、hold、无错误 drop,同时保持 human/arm/hand fidelity 和无 catastrophic fall/launch/penetration。

项目 pick 的 contact 语义必须区分两套信号。任务/阶段计划把 source frame 98(clip-local 30)记作 interaction marker,但 canonical geometry 显示 [68,219) 内左手 MANO 顶点到杯子 mesh 的最近距离全程只有约 0.01--0.17 cm,右手约 28--79 cm;因此 InterMimic 的 geometry-derived contact label 正确地成为“左手 151/151、右手 0/151”。这不是 converter 把 pre-contact 错标为 contact,而是 raw Kimodo reference 已把物体绑定在左手上的数据事实。物体实际 lift >2 cm 从 local frame 48 开始、最大 lift 40.94 cm 在 frame 99。故当前 strict pick run 测的是“从已接触/预抓状态学习 lift 与 hold”,不能把 local frame 30 宣称为几何接触建立时刻;后续若要评估 reach-to-grasp,必须使用真正包含手物分离前缀的 reference,而不是只修改 contact label。

Strict project pick 保留官方 4096 env / rolloutLength=300 / horizon=32 / high-fidelity physics。因为 clip 只有 151 帧,合法 start-time support 退化为 frame 0,PSI slot 不会更新;这是预期的 frame-0 single overfit,而不是配置错误。rolloutLength=300 约束 reference-state initialization/PSI 窗口,PPO 仍按 32-step horizon 更新,不要求 reference 真有 300 帧。

4. 指标

Metric 定义
Completion deterministic rollout 运行帧数 / reference 帧数
Human MPJPE simulated body points 到 reference 的 mean Euclidean error
Arm/hand MPJPE shoulders/elbows/wrists/finger bodies 的子集误差
DOF RMSE direct PD dof 与 reference dof 的 RMSE
Object position mean/RMSE/max Euclidean error
Object rotation quaternion geodesic mean/RMSE,只报告、不作主 gate
Contact P/R/F1 |object contact force xy| > 0.1 对 reference contact label
Lift/Hold/Drop reference-active interval 内高度、连续接触与释放状态
Action abs mean/max、rate、saturation
Efficiency simulation steps、wall time、fps、peak GPU memory

5. 已完成校准

5.1 InterMimic 发布 checkpoint

发布的 sub2.pth 在同一 native woodchair sequence 上 deterministic evaluation:

  • 268/268 steps;
  • success 100%;
  • human pose error 约 7.79–8.08 cm
  • object surface error 约 5.74–6.17 cm
  • episode reward 约 150–154

这证明本地 Isaac Gym、SMPL-X、object data 和发布 runtime 可用,也说明有效 physical teacher 不要求逐帧零误差。

5.2 InterMimic raw/new/retarget reference 差异

sub2_woodchair_000

  • OMOMO -> OMOMO_new:dof 不变,body position RMSE 10.78 cm,root/object position 仅约 0.8 mm shift;human contact labels 在 43.5% frames 发生变化;
  • OMOMO_new -> OMOMO_retarget:root position RMSE 6.37 cm、root rotation mean 11.67°、dof RMSE 0.314 rad、body position RMSE 7.23 cm、object position RMSE 3.79 cm、object rotation mean 7.10°

因此“refine”不等于严格复现 raw mocap;它允许显著 pose/object 调整来换取物理可执行性和正确 interaction。

5.3 Scratch smoke

Method 真实 scratch smoke 结果
InterMimic 128 env,5 warm-up epochs reward 1.12;PSI slot0=269 frames,slot1/2 尚未填充
PhysHOI 128 env,2 epochs reward 0.43 -> 0.35,约 900–1000 fps
SkillMimic 128 env,2 epochs reward 0.44 -> 1.42,约 1175 fps

Smoke 只验证随机初始化和训练代码,不作为收敛结论。

6. 正式结果

6.1 Native scratch

Method Epoch / steps Wall time Final train reward Episode length Deterministic completion Human Obj. pos Obj. rot Contact F1 Lift/hold
InterMimic, 1024 env / rolloutLength=128 200 / 6.55M 10.70 at epoch 200 ~43 late-train mean 88/268, failure MPJPE 19.28 cm mean 5.13 cm mean 5.53° 0.932 no full lift/hold
InterMimic strict, 4096 env / rolloutLength=300 500 / 65.01M ~2 h 29 min 102.12 263.23/268 train mean 268/268, success 100% MPJPE 14.54 cm mean 7.27 cm mean 13.46° 0.979 full pick/lift/place/release
PhysHOI 200 / 6.55M 1.68 at epoch 200 random-start episodes 42/~79, failure MPJPE 26.95 cm mean 5.10 cm disabled 0 before contact stage no contact/lift
SkillMimic 200 / 6.55M 4.83 at epoch 200 60-frame RRSI 116/279, failure key-body MPJPE 63.26 cm mean 0.83 cm before object motion mean 0.05° 0 before contact stage no contact/lift

三条结果都是真实 scratch,而不是发布 checkpoint。它们只证明 6.55M-sample 小预算不足以完成 native single overfit,不能据此判定官方方法本身失败。特别是 PhysHOI/SkillMimic 的 object error 很小发生在 object 尚未运动的前段,不能解释为 manipulation 成功。

6.1.1 Official-aligned InterMimic single budget audit(已通过)

为隔离“小预算/配置 adaptation”与方法本身,新增 strict single:除 motion directory 只保留 OMOMO_new/sub2_woodchair_000.ptmax_epochs=5000 和编号 checkpoint instrumentation 外,训练配置与官方 high-fidelity train_teacher_new.sh 对齐:

  • 4096 envepisodeLength=300rolloutLength=300
  • Hybrid init 0.1physicalBufferSize=3
  • 官方 observation/reward、4 substeps、8 position iterations、network/PPO/minibatch/seed;
  • 每 epoch 4096 x 32 = 131072 transitions;5000 epochs 上限为 655.36M samples。

若官方 100k-epoch、27-motion 训练近似均匀采样,每条 motion 平均约获得 4096 x 32 x 100000 / 27 = 485.45M transitions。因此 strict single 的 5000-epoch 上限约为官方 per-motion 平均 sample budget 的 1.35x;但它没有多轨迹带来的 locomotion/contact/lift 辅助 curriculum,样本数相当不保证优化难度相当。

另一个关键代码事实是:woodchair_000 只有 269 帧,小于官方 rolloutLength=300。本地 27 条 sub2 motion 中有 25 条小于 300,只有 woodchair_007=304woodchair_008=309 大于 300。发布代码对此有两层行为:

  • cal_cdf() 截取到 max(1, motion_length-rolloutLength),所以短轨迹只剩 time 0;其 Hybrid initialization 实际退化为 Start,而不是任意 raw-reference frame random start;
  • _update_reference() 对全短 batch 直接返回,并再次逐 motion 排除 motion_length < rolloutLength,所以短轨迹的 learned PSI slots 不会更新。两条长轨迹也只允许非常靠前的 start range(分别约 0--4、0--9)。

因此该官方 OMOMO_new 配置中的 PSI 对绝大多数轨迹实际近乎休眠;短轨迹主要依靠从 frame 0 的 full-reference PPO,以及 27-motion shared policy 的技能迁移来学习。strict single 测的是“4096-env、frame-0 full rollout 能否 overfit”,不是 progressive PSI curriculum。因而后续必须同时报告:

  1. strict rolloutLength=300 是否仅靠 frame-0 full-reference PPO 收敛;
  2. 若不收敛,独立的 rolloutLength<=269 PSI-enabled 对照,而不能把两者混为同一结果。

运行中 milestone(2026-07-17 epoch 200):seed 8383,累计约 25.69M transitions,train reward 34.48,mean episode length 90.25/268。reference stage audit 显示 frame 47 为左肘首次接触、frame 67 为右腕/右拇指首次接触、frame 74--79 开始 lift、frame 81 左手进入接触、frame 130 达到最大高度;frame 85/87/90 的 reference lift 已分别约为 29.3/37.3/50.3 cm。训练先后跨过右手接触和初始 lift,在约 88--90 帧形成首个平台。相较早期 1024 env / 6.55M 实验约 43 帧的 late-train mean,官方规模在 epoch 200 已把可执行前缀约翻倍,但仍未完成 single overfit。

这个平台给出一个待 trace 验证的 hand/contact 假设:发布代码对 reference-required 的左、右手接触分别累计连续 mismatch,超过 10 帧才 IET;左手 reference contact 从 frame 81 开始,所以约 88--91 帧的失败位置与“未能稳定建立/维持左手接触”高度一致。其他 IET 候选是 human/object surface mean error 超过 0.5 m 或 interaction-graph relative error 超阈值。训练 reward/length 不能区分这些原因,首个 checkpoint 的 deterministic trace 必须同时导出左右手 contact mismatch counter、human/object reset 和 IG reset,才能下结论。

继续训练后该平台被自然突破:epoch 207--214 的 mean length 从 92.93 连续升至 95.52,epoch 237 越过 100,epoch 248 达到 103.06/268(约 31.98M transitions,reward 38.94)。reference frame 100 的物体 lift 已约 87.0 cm,所以它不再只是接触或低高度碰撞式 lift,而是已经进入双手高举阶段。epoch 270 首次越过 frame 110,epoch 299 首次达到 120.02;reference frame 110/120 的 lift 分别约为 100.7/103.8 cm。epoch 327--333 中 6/7 个 mean-length 点稳定在 130.15--130.83,训练 rollout 已覆盖 frame 130 的约 106.5 cm 最大高度。后续新增前缀主要对应物体下降、放置和最终 release。这一曲线支持短项目 clip 先做 strict frame-0 overfit;但 training mean 仍不是 deterministic success。

下降/放置阶段随后快速收敛:epoch 355 mean length 156.59,epoch 365 达到 185.27,此时物体已从最高点回落到接近支撑面;epoch 373--377 从 212.63 连续增至 221.40,跨过约 frame 213 的 reference contact 结束点。因此训练 rollout 已覆盖完整 pick--lift--high hold--place--release transition,剩余约 47 帧主要是 release 后人体与物体稳定。仍需 numbered checkpoint 的 deterministic rollout 才能确认单一 policy mean 也能完整执行,而非仅训练分布中的部分 stochastic episodes。

epoch 500 checkpoint 的 deterministic policy-mean evaluation 最终完整执行 268/268,官方 success rate 100%,episode reward 120.19。统一 trace 指标为 human body MPJPE 14.54 cm、human position RMSE 17.41 cm、object position mean/RMSE/max 7.27/8.35/21.87 cm、object rotation mean 13.46°、object contact P/R/F1 0.960/1.000/0.979。模拟物体最大高度 1.408 m,低于 raw reference 的 1.508 m10 cm,但完整完成 pick--lift--place--release;这正是“物理可执行 refinement 不等于逐帧复制 raw mocap”的实证。末帧 human/object/IG reset 均为 false,左右手 contact mismatch counter 均为 0。训练期 stochastic mean length 仍只有 263.23/268,但 deterministic rollout 完整通过,验证了不能用含探索噪声的训练均值替代 policy-mean gate。

6.2 Shared project pick

Method Steps to pass Completion Human MPJPE Arm/hand MPJPE Obj. pos Contact F1 Lift Hold Drop
InterMimic adaptation, 200 epochs not passed 100/151 valid, terminate at 101 19.88 cm 23.19 cm mean 22.65 cm 1.0, but not sufficient 2.05 cm vs ref 40.94 cm no yes/failure
InterMimic strict [68,219), stopped after epoch 1240 not passed best saved checkpoint 101/151 valid-prefix boundary(epoch 1140 terminate at 102) 21.43 cm 25.52 cm mean 28.33 cm terminal mismatch false 0.70 cm vs同期 ref 40.94 cm no yes/failure
InterMimic pre-contact [0,219), official-aligned training from scratch epoch 280 screen: terminate at 145 12.52 cm 15.13 cm mean 6.20 cm binary contact active but insufficient -0.22 cm vs ref 38.35 cm no failure
PhysHOI adaptation paused at epoch 181 by user request not evaluated
SkillMimic adaptation paused before formal run

6.2.1 Strict project-pick frame-0 convergence audit

为避免含 sigma=0.1 探索噪声的 train mean 掩盖 policy mean,epoch 500 后每 100 epochs 保存并做 1-env deterministic evaluation。Isaac Gym GPU PhysX 跨设备并非 bitwise deterministic;下表全部统一在 GPU 0 重评,不能与早期 GPU 1 的单次终止帧混用。Lift 只统计首次 termination 前的 physics-valid 帧,排除 player 为诊断继续 step 的无效后缀。

Epoch Approx. samples First termination frame Terminal cause Human MPJPE Object pos mean Valid actual lift Same-prefix ref lift
500 65.54M 40 human tracking 19.19 cm 9.92 cm 0.61 cm 0.12 cm
600 78.64M 80 human tracking 23.46 cm 20.06 cm 2.21 cm 38.35 cm
700 91.75M 70 object tracking 17.32 cm 18.32 cm 4.73 cm 36.70 cm
800 104.86M 81 object tracking 19.52 cm 25.67 cm 5.14 cm 38.35 cm
900 117.96M 31 human tracking 20.62 cm 21.27 cm 2.89 cm 0.12 cm
1000 131.07M 43 human tracking 23.95 cm 26.26 cm 6.07 cm 0.12 cm
1100 144.18M 34 human tracking 20.10 cm 6.33 cm 1.88 cm 0.12 cm
1120 146.80M 98 object tracking 21.24 cm 30.54 cm 0.62 cm 40.90 cm
1140 149.42M 102 object tracking 21.43 cm 28.33 cm 0.70 cm 40.94 cm
1160 152.04M 97 object tracking 19.15 cm 25.92 cm 0.53 cm 40.90 cm
1180 154.66M 96 object tracking 20.37 cm 29.60 cm 1.38 cm 40.47 cm
1200 157.29M 84 object tracking 18.10 cm 25.40 cm 2.30 cm 38.35 cm

因此 strict frame-0 初始化本身有效:training stochastic mean 从约 58 帧逐步扩展,epoch 1182 附近达到局部最高 81.5/151;deterministic best 也从 epoch 800 的 termination frame 81 推进到 epoch 1140 的 frame 102。但截至 epoch 1200 尚未 single-case overfit,且 actor mean 非单调。主要失败模式在两者间振荡:一是人体全身 key-body mean error 超过官方 0.5 m IET;二是 1120--1200 密集 checkpoints 已把人体稳定到 84--102 帧,却选择让杯子留在支撑面,实际 lift 只有 0.5--2.3 cm,远落后于同期 38.4--40.9 cm reference,最终触发 object point-cloud IET。epoch 700/900/1000 还出现 reference lift 前过早抬杯,说明策略在搜索 grasp/lift 时序,而不是单纯缺少 frame-randomization。contact mismatch 在所有 terminal frame 均为 false,所以“reference contact 全程为真”没有直接触发 termination,也不能证明抓持成功。

项目 reference 的首步物理一致性明显弱于已通过的官方 woodchair。项目不同 deterministic checkpoints 在 reset 后第一个 physics step 会产生约 200--365 N 物体接触力,杯子的单步位移为 1.4--14.7 cm;其中 epoch 700/800/1000/1100 的首步 object-reference 误差为 11.2/11.6/14.8/13.7 cm。相比之下,官方 woodchair 成功 policy 前两步的 object-reference 误差仅为 0.44/0.93 cm。项目 epoch 500/600/900 能把首步位移压到 1.4--3.8 cm,因此这不是一个固定坐标转换错误,而是 clip-local frame 0 已处于左手–杯子–支撑面接触状态时,首步全身 PD target 对接触冲量高度敏感。评估 trace 直接读到项目杯子的 Isaac Gym 刚体质量为 0.15 kg(官方密度 1000 kg/m³);而 woodchair 网格的体积估计约 4.69 L,同密度下质量约为数 kg。因此同量级接触力对轻杯的加速度大数十倍,这也解释了为什么官方 sigma=0.1 的 153D full-body 探索在杯子接触上更容易产生冲量。官方 woodchair 另外有约 47 帧无手接触前缀,右手和左手接触分别到约 frame 67 和 81 才建立。这些都是当前项目学习难度高于官方 single 的直接证据;它不否定 frame-0 overfit,但若严格长预算仍不通过,“从真正分离的手物状态开始的 lead-in”应作为明确的 reference-preprocessing ablation,而不应把失败只归因于 PPO epoch 不够。

全序列几何重算进一步给出了可复现的 lead-in 定义:左手的 5 cm 接触阈值到 source frame 64 才首次达到;frame 56--66 的手–杯最小距离从 30.22 cm 连续降到 0.10 cm,frame 67/68 均已只有约 0.04 cm。因此当前 [68,219) 仅在几何接触开始 4 帧后 reset,并没有真正的 pre-contact rollout。若 strict 长预算失败,下一个主要 ablation 仍应固定从局部 frame 0 开始,只把 clip 扩为 [0,219),使策略在 64 帧 approach 中逐步建立接触,而不是引入 random start。

符号距离审计进一步证明 frame 68 不只是“很近”:778 个 canonical 左手顶点中有 32 个已在杯子网格内部,最大穿入约 2.29 cm。frame 100/130 则没有手部顶点在杯内,最近顶点仅位于表面外约 0.065/0.091 cm。因此 post-contact control 的 reset 是可量化的几何穿插初始化,这与其首步大冲量一致;pre-contact rollout 不是仅仅增加简单帧,而是避免了不物理的 reset state。

epoch 1220 的 GPU 1 机理筛查(不进入跨 GPU 正式表)进一步验证了 no-lift 局部最优:termination frame 99,实际/reference lift 为 1.60/40.92 cm,但 multiplicative reward 因子前缀均值仍有 rb=0.494ro=0.742rig=0.836rcg=0.534。也就是说,不抬杯时 object 和 interaction-graph 奖励并未立即塌缩;policy 可以通过稳定人体、维持一般接触并延迟 0.5 m object IET 获得局部回报。这不是说要立即改 reward;先保留 pre-contact rollout,检验是否能通过渐进接触跨过该局部最优。

训练监控同时暴露出工程约束:GPU 1 在 epoch 800 后的重新建场中发生一次 PhysX illegal memory access,随后又出现约 156 MB allocator failure;换到空闲 GPU 0 后相同 checkpoint/config 正常续训。该故障不归因于 policy,但后续正式长跑应固定 GPU 0,并将 checkpoint evaluation 固定在同一设备。

6.2.2 Pre-contact [0,219) frame-0 overfit

根据上述证据,[68,219) 续训在 epoch 1240 后停止;已有 checkpoints、trace 和 metrics 完整保留,它的正式定位是“post-contact reset control”。新的项目 pick 主实验改为 source [0,219),从 scratch 训练,仍使用官方 4096 env / rolloutLength=300 / horizon=32 / Hybrid init / high-fidelity physics / reward / observation / PPO。由于 219 帧仍小于 300,所有 episode 仍从 local frame 0 开始,PSI 仍不写入;唯一实验变量是保留 source frame 0--63 的真实 pre-contact approach。通过条件改为完整 deterministic 219/219、接触在 frame 64 附近逐步建立、完成 lift/hold,并且无 human/object/IG/contact IET。

epoch 20 的 GPU 1 早期机理筛查已验证窗口修正生效:reset 后首步杯子位移仅 0.264 cm、接触力 1.28 N,而 post-contact control 常见 11--15 cm / 200--365 N。未收敛 policy 已运行到 source frame 74;terminal 时 human/object/IG reset 均为 false,唯一原因是 reference 在 frame 64 开始要求左手接触后,policy 连续 11 帧未建立接触,触发官方 contact-mismatch IET。这把学习瓶颈从错误的“reset 冲量”转成正确的“approach 后建立 grasp”,与官方 woodchair 先学 locomotion/approach、再跨过手接触阶段的收敛模式一致。该 GPU 1 数字只作机理证据;正式 checkpoint 排名仍固定 GPU 0。

epoch 60 的下一次 deterministic 筛查已推进到 source frame 144/219。左手在 frame 64--66 短暂 mismatch 后,从 frame 67 开始建立并维持接触到 frame 133;随后 reference 手臂/物体进入抬升,策略手臂继续运动但杯子仍留在支撑面,frame 134 起丢失接触,累计 11 帧后 IET。该前缀 actual/reference lift 约为 -0.22/38.35 cm,human/object/IG reset 仍全为 false。因而当前收敛阶段可严格描述为 approach 已学会 -> grasp/contact 已学会 -> load-bearing lift 尚未学会,不再是起始冲量问题。

epoch 80--500 的 deterministic termination长期停在frame 145且actual lift约-0.22 cm,说明policy已形成稳定的“接触但不承载”平台;但epoch 500约65M transitions仍远低于官方训练上限,不能直接把平台归因为finger observation不足。为区分训练预算和representation瓶颈,strict run从同seed 9885 的epoch-500 checkpoint做有上限续训:保持4096 env / rolloutLength=300 / horizon=32 / 3198D observation / 153D action、reward、IET、physics和init不变,保存并评估epoch 600/700/800/900/1000。若termination超过160或actual lift超过2 cm,预算可延长到1500--2000;若epoch 800--1000仍停在145且lift接近0,则停止strict并从头训练interaction_fingertips对照。该顺序不允许直接无监控运行到epoch 5000。

bounded resume 的正式 deterministic milestone统一在GPU 0评估。epoch 600仍在frame 145终止,actual/reference lift为-0.220/38.354 cm,terminal仍是object/kinematic tracking reset;相较epoch 500,human body mean error从10.87 cm降至10.50 cm,left arm/hand mean error从14.45 cm变为14.54 cm。required-contact区间内左手接触body count mean由1.46微增到1.51、max由3增到4,但actual lift完全不变。该结果说明继续训练改善了少量人体和接触覆盖,却尚未跨过承载局部最优;按预注册规则仍继续到epoch 800--1000,而不是在600提前切换representation。

Bounded epoch Termination frame Actual / ref lift Required left contact bodies mean / max Human / left-arm-hand mean error Decision
500 145 -0.220 / 38.354 cm 1.46 / 3 10.87 / 14.45 cm resume strict
600 145 -0.220 / 38.354 cm 1.51 / 4 10.50 / 14.54 cm no breakthrough; continue to 800--1000
700 145 -0.220 / 38.354 cm 1.40 / 2 10.94 / 15.71 cm no breakthrough; regression after epoch 645--650 reward collapse
800 145 -0.220 / 38.354 cm 2.05 / 4 10.04 / 13.97 cm contact/human improved but no lift; first 800--1000 plateau point
900 145 -0.220 / 38.354 cm 1.65 / 4 9.98 / 14.11 cm no lift; second consecutive 800--1000 plateau point
1000 145 -0.220 / 38.354 cm 1.49 / 3 10.02 / 14.07 cm plateau confirmed; stop strict and switch to fingertip ablation

epoch 645--650 的 stochastic mean reward曾从约55快速降至30.6,随后到epoch 700前恢复至约53--54;但GPU 0 deterministic epoch-700 policy mean相对600仍表现为接触覆盖和human/left-hand tracking退化,termination与lift完全不变。因此该波动不是单纯被训练均值平滑掉的无害噪声。epoch-600 checkpoint保留为bounded-resume当前最佳稳定点;strict训练仍按预注册规则继续到800--1000,800是第一个允许触发“持续平台”停止判断的milestone。

epoch 800时stochastic mean reward已恢复到约56.1,GPU 0 deterministic human和left-arm-hand mean error分别改善到10.04/13.97 cm,required-contact左手body count mean也首次超过2;但termination仍逐帧相同地发生在145,actual lift仍精确为-0.220 cm。这说明更密集的接触仍未变成承载抓取。800记为800--1000连续平台判断的第一个点;仍需900和1000确认,且当前不满足termination >160或actual lift >2 cm的1500--2000扩展条件。

epoch 900时stochastic mean reward约为57.45,GPU 0 deterministic human和left-arm-hand mean error进一步保持在9.98/14.11 cm,required-contact左手body count mean/max为1.65/4,接触区间任一左手body接触率为82.72%。然而termination仍在frame 145,actual lift仍逐位相同为-0.220 cm,terminal仍首先触发object/kinematic tracking reset。900因此是第二个连续平台点:继续优化human/contact coverage没有产生load-bearing grasp;仍等待epoch 1000完成预注册的三点平台判定。

epoch 1000训练正常结束并写出完整checkpoint;末次stochastic mean reward为57.81。GPU 0 deterministic eval仍在frame 145终止,actual/reference lift仍为-0.220/38.354 cm,required-contact左手body count mean/max为1.49/3,human和left-arm-hand mean error为10.02/14.07 cm,任一左手body接触率仍为82.72%。因此800/900/1000构成三个连续且逐帧一致的平台点;没有满足termination >160或actual lift >2 cm的扩展条件。按预注册规则,official-key-body strict run在epoch 1000停止,不延长到1500--2000;下一实验切换为同seed 9885、同reference/PPO/physics/reward/init/IET/full-action的interaction_fingertips单因素对照。

GPU 1 早期筛查的当前阶段性汇总如下;它用于定位收敛阶段,不代替最终 GPU 0 排名:

Epoch Deterministic termination Contact/grasp Actual / same-prefix ref lift Human MPJPE Terminal cause
20 74 未建立;frame 64 起 mismatch -0.22 / 0.01 cm 37.09 cm contact mismatch 11 frames
60 144 frame 67--133 稳定 -0.22 / 38.35 cm 24.72 cm contact loss 11 frames
80 145 接触不再为 terminal 原因 -0.22 / 38.35 cm 19.91 cm object tracking
100 145 保持接触,但不承载 -0.22 / 38.35 cm 17.24 cm object tracking
120 145 保持接触,但不承载 -0.22 / 38.35 cm 16.10 cm object tracking
140 145 保持接触,但不承载 -0.22 / 38.35 cm 15.63 cm object tracking
160 145 保持接触,但不承载 -0.22 / 38.35 cm 14.97 cm object tracking
180 145 保持接触,但不承载 -0.22 / 38.35 cm 14.49 cm object tracking
200 145 保持接触,但不承载 -0.22 / 38.35 cm 13.90 cm object tracking
220 145 平均约 1.05 个左手接触体 -0.22 / 38.35 cm 13.52 cm object tracking
240 145 平均 0.90、最多 2 个左手接触体 -0.22 / 38.35 cm 13.04 cm object tracking
260 145 平均 1.21、最多 3 个左手接触体 -0.22 / 38.35 cm 12.74 cm object tracking
280 145 平均 0.86、最多 3 个左手接触体 -0.22 / 38.35 cm 12.52 cm object tracking

epoch 120 前缀内 lower-body / torso-head / left-arm-hand 平均误差分别为 8.25 / 8.59 / 21.33 cm;到 epoch 200,human / left-arm-hand / lower-body 误差继续降为 13.90 / 17.62 / 7.44 cm,但 termination 仍固定在 frame 145,杯子仍无任何正向 lift。因而 100--200 epochs 的 reward 提升主要来自人体/接触前缀精度,误差的确已集中到交互侧手臂与不承载抬升,而不是下肢 locomotion 或躯干姿态全面失败。但当前仍继续官方 full 153D action 到预定 500-epoch gate;只有该设置明确停滞后,才会将 hand/arm-focused action 作为单因素对照。

刚体接触覆盖率解释了为什么“有 contact”仍然不能承载。项目 epoch 200 在 source frame 64--144 内,左手 16 个 wrist/finger bodies 平均只有 1.05 个接触体,最大仅 3,81 帧中只有 63 帧存在任一手部接触。已通过的官方 woodchair policy 在 lift 段 frame 81--130 的左/右手平均接触体数为 5.60/4.16,最大为 9/8。因此项目 policy 当前学到的是单指触碰,而不是具有 force closure 的多点抓持;这比仅看 binary contact F1 更能预测是否可 lift。若 500-epoch full-action gate 仍失败,后续 grasp adaptation 必须报告每手 active contact-body count/coverage,而不能只用“任一接触成立”作成功信号。

代码审计给出了该局部最优的更具体来源。官方 InterMimic keyBodies 只有 21 个非手指 body:actor 的 future position/velocity error、reference interaction-graph error,以及 body-position/IG reward 都只追踪到 wrist,不包含任何 finger segment;future rotation error还显式移除了两侧手指。相比之下,PhysHOI/SkillMimic 的发布 keyBodies 明确包含两手十个 distal fingertips。项目 reference 本身并非缺少包夹几何:source frame 80--140 每帧约有 14--15/16 个左 wrist/finger body center 距离杯面小于 5 cm,其中 7--9 个小于 2 cm;但 epoch 240 rollout 在 source frame 64--144 的左手指平均位置误差约为 20--27 cm,进入 lift 段 source 120--144 后进一步升至 37.3 cm,而 shoulder/elbow 在更早的接触段只有约 5--6 cm。因此瓶颈不是全身 locomotion,也不是 raw grasp 完全不可用,而是官方 InterMimic 对细小单手物体缺少 future fingertip tracking signal。

contact label 也做了反证审计。官方 woodchair 的正 hand labels 通常每手每帧只有 4 个 body,而项目 converter 在 active 段把左手 16 个 body 全标正;但发布 compute_cg_reward() 会先把 reference hand contact 压缩成 any,再用同一个 hand-level flag 比较全部 16 个 actual contacts。因此正标签的稀疏度不会改变 active-hand reward target,不能解释当前失败;项目缺少官方 -1 forbidden-contact 时段会影响非交互/释放约束,但不是 frame 145 无 lift 的直接原因。

若 official-key-body strict run 在 epoch 800--1000 的 bounded gate 仍停滞,下一个单因素对照定为 interaction_fingertips:保持 full 153D action、PPO、physics、reward 公式、initialization、IET 和 reference 不变,仅把 reference-active interaction hand 的五个 distal fingertips 加入 keyBodies。每个新增 key body 在 t+1,t+16 两个 horizon 中增加 position error、reference position、velocity error和 reference IG error共 24D,本例 observation 从 3198D 变为 3318D。这不是 hand-only action mask,而是把 PhysHOI/SkillMimic 已使用的 fingertip key-body signal最小化移植到 InterMimic teacher。

该对照曾在 GPU 1 启动。第一次 seed 由官方 -1 随机解析为 710,在 epoch 15 主动停止,仅保留为不计入结果的启动 pilot;随后用 strict run 的实际 seed 9885 从 scratch 重启,并验证环境 contract 为 3318D obs / 153D action。按用户要求,正式同-seed run 在 epoch 33 中断,保留 epoch 20 checkpoint但不作结果排名;GPU 1 已完全释放。若未来恢复,正式比较仍应共享 reference、seed、4096 env、network family、full action、PPO/physics/reward/init/IET,唯一结构变量是五个 left fingertips 带来的 120D/horizon-pair observation/reward key-body signal。

strict epoch-1000 gate确认失败后,interaction_fingertips正式对照已在GPU 1以全新输出目录从scratch启动:seed 98854096 envrolloutLength=300、horizon 32、clip [0,219)、full 153D action和其余环境/优化配置均与strict相同,唯一结构差异为3318D observation中的五个左手distal fingertips。该run先采用bounded 500 epochs、每100 epochs保存与deterministic评估;epoch 100 checkpoint完整写出时训练mean reward为23.88。GPU 0安全窗口中的deterministic eval在frame 74因contact mismatch终止:reference从frame 64要求左手接触,actual连续11帧没有任何左手body接触;actual lift为-0.220 cm,human/left-arm-hand mean error为17.32/10.85 cm。其object/human/IG tracking reset若独立计算分别到frame 145/173/183才触发,因此100-epoch短前缀不是tracking崩溃,而是新增fingertip任务尚未学会approach后的接触。该点明显弱于strict同阶段已达到的frame-145平台,但不足以否定representation,继续到epoch 200--500观察是否学习曲线只是更慢。

该4096-env fingertip run在epoch 163遇到CUDA OOM:3318D版本常驻约22.52 GiBcompute_ig_reward申请1.22 GiB临时张量时GPU仅余688.75 MiB,同时PyTorch报告3.85 GiB reserved-but-unallocated,故属于新增key-body张量使4096-env配置贴近24GB上限后的allocator fragmentation,而不是policy/physics失败。epoch 101--163没有新checkpoint;正式恢复点仍为epoch 100。仅增加PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128,garbage_collection_threshold:0.8的第一恢复尝试又触发PhysX GPU narrowphase illegal access,说明单靠allocator参数不足。

为避免降低env数引入PPO batch混杂,最终采用数学等价的interaction-graph分块:compute_ig_reward不再一次性构造完整[4096,keyBodies,objectPoints,3]临时张量,而按512个env计算同一组逐env reward/reset reduction再拼接。随机张量回归测试中旧/新reward最大绝对差为0且reset逐项完全相同;4096-env恢复后初始显存从约23.5 GiB降至19.8 GiB,稳定缓存后约22.35 GiB,训练已无故障越过原epoch-163失败点并到达epoch 164。因此该修改只修复内存峰值,不改变observation、reward、IET、PPO、physics或env数量。

fingertip epoch 200 checkpoint完整写出时训练mean reward为34.91。GPU 0 deterministic termination从epoch 100的frame 74推进到113;required-contact区间的左手接触body count mean/max从0/0提高到0.245/2,任一左手body接触率为22.45%,human/left-arm-hand mean error为18.47/8.73 cm。actual lift仍为-0.220 cm,terminal仍由contact mismatch触发;若独立计算,object/human/IG tracking reset分别到frame 145/196/203才出现。该结果尚未优于strict的frame-145 load-bearing平台,但证明新增fingertip任务在100--200 epochs间正从“完全不接触”向部分接触推进,因此继续到epoch 300--500,而不是在200提前判负。

fingertip epoch 300时训练mean reward为39.92,GPU 0 deterministic termination进一步推进到frame 145,追平strict平台。contact mismatch counter最大仅8,已不再触发terminal;首次terminal转为object tracking reset。required-contact左手body count mean/max提高到0.59/4,任一接触率为39.51%;human/left-arm-hand mean error为17.61/10.29 cm。新增key bodies因而显著改善了交互侧手臂/手的局部跟踪并跨过contact IET,但全身误差仍高于strict,接触body均值仍低于strict约1.5--2.0,actual/reference lift仍逐位相同为-0.220/38.354 cm。到300为止它只是用更准确的手部运动重新到达同一个“不承载”平台,仍需400/500判断更长训练能否把局部手指精度转化为多点承载。

fingertip epoch 400时训练mean reward为43.49,deterministic仍在frame 145由object tracking reset终止,actual/reference lift仍为-0.220/38.354 cm。required-contact左手body count mean/max继续提高到0.77/4,任一接触率为45.68%,contact mismatch counter最大降到6;human/left-arm-hand mean error改善到15.23/9.53 cm。因此300--400的额外训练确实提高了手部局部精度与接触覆盖,但没有改变承载结果;继续完成预定epoch 500最终gate,若termination/lift仍逐帧相同,则判定“仅增加distal-fingertip future tracking signal不足以产生force-closure grasp”。

fingertip epoch 500 checkpoint完整写出时训练mean reward为46.11,但deterministic actor mean非单调回退到frame 85并由contact mismatch终止;required-contact左手body count mean/max仅0.095/1、任一接触率9.52%,actual lift仍为-0.220 cm。该短前缀的human/left-arm-hand mean error虽降到10.13/6.18 cm,由于rollout比300/400短60帧,不能直接解释为全clip tracking更优。它更说明高future-fingertip tracking精度没有自动转化为物理接触,actor mean甚至会为位置拟合牺牲接触。bounded对照到此停止,不因训练mean reward继续上升而延长。

Fingertip epoch Termination frame Actual / ref lift Required left contact bodies mean / max Human / left-arm-hand mean error Terminal / interpretation
100 74 -0.220 / 0.006 cm 0.00 / 0 17.32 / 10.85 cm contact mismatch; no contact learned
200 113 -0.220 / 0.125 cm 0.24 / 2 18.47 / 8.73 cm contact mismatch; partial contact
300 145 -0.220 / 38.354 cm 0.59 / 4 17.61 / 10.29 cm object tracking; reaches strict plateau
400 145 -0.220 / 38.354 cm 0.77 / 4 15.23 / 9.53 cm best fingertip contact/tracking tradeoff, still no lift
500 85 -0.220 / 0.086 cm 0.095 / 1 10.13 / 6.18 cm contact mismatch regression; actor mean non-monotonic

因此该single-case实验已经区分出两个假设。第一,official-key-body strict从500续训到1000仍逐帧停在145,失败不能再简单归因于训练预算不足。第二,加入PhysHOI/SkillMimic式distal-fingertip key-body supervision能改善手部局部tracking并暂时提高接触覆盖,却没有产生load-bearing grasp,说明“缺少fingertip observation/reward”也不是唯一瓶颈。下一步不应继续无上限训练这两条run;应把实验变量移到物理抓取目标本身,例如显式多点接触数量/持续性、接触法向与相对滑移、hand-object relative pose或先做reference grasp/contact geometry refinement,并继续保留human tracking与actual lift作为独立指标。

6.3 Winner [0,597) full HOI

待 shared pick 选定 winner 后填写。

7. Hand/arm-only 分析协议

三种官方方法原生都输出全身 action。InterMimic 通过 interaction-distance reward 自动强调 hands/arms,同时继续约束 ankle/toe 和全身 rotation;它并不是 action-space hand mask。PhysHOI/SkillMimic 也依赖 full-body balance 和 interaction graph。

因此第一轮使用 full action。只有 full-body shared pick 成功后,再做单因素对照:

  1. full 153D direct policy;
  2. policy 仍观察全身,但非 interaction joints 使用 reference PD target,仅让 hand/arm action 由 policy 输出;
  3. full action + noninteraction-body stronger tracking weight。

比较是否减少搜索空间、是否保持 contact/lift,以及 carry 时 torso/root/balance 是否因此变差。不能仅因 raw lower-body 已较准就预设手臂局部控制一定足够。

8. 当前结论

  1. InterMimic、PhysHOI、SkillMimic 都是可从 raw demonstration 训练的 policy family;三者必须实际训练,不能只做 reward 静态对照。
  2. InterMimic 唯一显式维护 learned physical reference pool;PhysHOI 和 SkillMimic 是 policy rollout 本身吸收并修正 reference inconsistency。
  3. Object rotation 在 PhysHOI/SkillMimic 发布 reward 中关闭,支持本项目弱化不可靠 object orientation reference,但不能忽略 position/contact/lift/hold。
  4. 200-epoch shared InterMimic 的 contact F1 为 1 但 lift 只有 2.05 cm,证明 contact force 不能单独作为成功条件;必须联合 completion、lift、hold/drop。
  5. Official-aligned native InterMimic single 已用 65.01M transitions 在 epoch 500 deterministic 268/268 通过,证明 4096-env frame-0 full-reference PPO 在官方 woodchair reference 上可以从 scratch 收敛且不依赖 PSI。
  6. 相同 strict 方法用于项目 [68,219) 后,训练保留至 epoch 1240 并停止;统一 GPU 0 deterministic best 为 epoch 1140 的 termination frame 102,实际 lift 仅 0.70 cm,而同期 reference 已抬升 40.94 cm。它现在被定义为 post-contact reset control,不再继续消耗预算。
  7. 项目杯子实际刚体质量只有 0.15 kg,clip-local frame 0 又已经是手–杯–支撑面接触状态;首步 200--365 N 级接触冲量可导致 1.4--14.7 cm 单步位移。这是比单纯“预算不够”更具体的难点,也解释了为什么后期 policy mean 会倾向稳定人体并把杯子留在台面。
  8. 新的项目 pick 主实验已按 source [0,219) 从 scratch 启动:仍是 frame-0 overfit,但保留 64 帧 pre-contact approach;除 reference window 外,InterMimic observation/reward/PPO/physics/init 不变。现在尚不能宣布 shared-project winner;新 pick 和 full HOI 尚未完成。

9. 可复现入口

  • InterMimic native runner:tools/run_intermimic_native_single.py
  • PhysHOI/SkillMimic native runner:tools/run_native_hoi_teacher_single.py
  • deterministic trace summary:tools/summarize_native_hoi_trace.py
  • PSI reset-state pool summary:tools/summarize_intermimic_physical_buffer.py
  • InterMimic project adapter:tools/run_intermimic_baseline.py