枢纽
数据集HOI mocap
物理感知
输入模态vision

InterMimic:先「练好一手绝活」,再把千万绝活「蒸」进一个大脑

Sirui Xu, Hung Yu Ling, Yu-Xiong Wang, Liang-Yan Gui(UIUC + Electronic Arts)。arXiv:2502.20390 (2025)。 项目页 · motion priorHOI 物理模仿teacher–student distillation

🧠 一句话心智模型:你不可能让一个策略直接从「乱七八糟的 MoCap 数据」里学会「和任意物体交互」——它会先被脏数据搞崩。先把每个 subject 配一个「精修老师」(小数据、把 MoCap 错误修干净),再让一个 Transformer 「学生」把所有老师蒸成一个通用大脑,最后还像 LLM 那样 RL fine-tune 一把,跳出「只会模仿」的天花板。

🎯 为什么重要:HOI 物理模仿的最大绊脚石是「脏数据」

让物理仿真人去模仿人类与物体交互(human-object interaction, HOI),是动画与机器人共同的圣杯。理论上 DeepMimic 那套「RL 跟着参考动作学」就能做。但落到真实大规模 HOI 数据上,会崩得很惨。为什么?

三只拦路虎
  1. MoCap 不准:接触漂浮(手没真正贴物体)、手指细节缺失、对称物体旋转错乱(比如一个圆柱被记成「在地上滑」)。
  2. 形状不统一:每个 MoCap subject 体型不同,要让一个策略学到「通用技能」必须 retarget 到统一身体——而 IK 类 retarget 在复杂接触下会失败。
  3. RL 样本效率太差:直接大规模训练单一策略,训练成本指数爆炸。

InterMimic 的回答是一句口诀:「perfect first, then scale up」(先把每一段练准,再考虑规模化)。它把「校准 MoCap」和「学一个通用策略」拆成两个阶段,让难题各自有解。

💡 核心思想:Teacher 精修 → Student 蒸馏 + RL 微调

整张图就是论文 Figure 2 的简化版:左半 = 「把烂数据修成好数据」右半 = 「把好数据蒸成一个大脑」

阶段 ① Imitation as Perfecting 每个 subject 一个 teacher 阶段 ② Imitation with Distillation 所有 teacher 蒸成一个 student 脏 MoCap 参考 接触漂浮 / 手缺 体型不一 PSI 初始化 不直接用参考 用仿真过的「干净」状态 Teacher MLP × N PPO + 接触奖励 retarget 同时做 「干净」参考轨迹(修了接触/手/旋转) Student Transformer DAgger → PPO (SFT→RLHF 范式) 单一大脑 跨 subject 跨物体 零样本 reference distillation + policy distillation teacher 当在线 expert
图 1:InterMimic 两阶段。左:N 个 teacher 在小数据上各练一手「绝活」,顺便把 MoCap 修干净;右:一个 Transformer student 同时学所有 teacher 的输出和参考,再用 PPO 微调跳出模仿天花板。

这套设计有一个非常漂亮的类比:作者自己说它对应 LLM 的 SFT→RLHF——DAgger(行为克隆)是 SFT,PPO 微调是 RLHF。关键不是「换个损失」而是「让策略越过演示上限」:因为不同 teacher 跑相似技能时会有冲突,纯克隆会得到「平均的四不像」,RL 微调才能在冲突中选出最优解。

🛠️ 五个让它在脏数据上跑得通的关键设计

设计心智为什么必要
① Embodiment-Aware / -Agnostic 双奖励把 retargeting 直接塞进 RL 目标里:远的关节多看旋转,近的关节多看位置 + 接触避免 IK 类 retarget 在复杂接触下失败;不同 subject 共享同一基础身体,让 student 能跨 subject 学
② 三档接触奖励(红/绿/蓝)接触参考标三档:红=鼓励接触,蓝=惩罚,绿=中性缓冲带MoCap 接触距离本来就不准,硬约束会让策略发疯;缓冲带允许「差不多就行」
③ Hand Interaction Discovery手指尖/掌心靠近物体时自动激活接触标记 + 限制手部活动范围(RoM)OMOMO/BEHAVE 这些数据手部是「平均姿势」,没有真实抓握;让 RL 自己探索手部策略
④ PSI(Physical State Initialization)不用原始 MoCap 状态初始化 rollout,而用一个「仿真过的干净状态池」+FIFO 维护原始参考状态会因为接触漂浮/手错位导致一开始就崩;PSI 让 rollout 从「能成功」的起点出发
⑤ IET(Interaction Early Termination)在常规 ET 基础上加 3 条 HOI 专用终止:物体偏移>0.5m / 关节-物体距离>0.5m / 接触丢失>10帧不让策略把训练时间浪费在「已经无救」的 rollout 上
🔮 直觉:为什么不能让一个大模型直接吃所有原始 MoCap?
因为脏数据里相互矛盾的信号会让策略「学成一个平均值」。比如同一个「提椅子」动作,10 段 MoCap 里手的相对位置可能差好几厘米——直接学,策略就「将就」出一个永远抓不紧的动作。先让小模型在子集上把每段修干净,再蒸馏,本质上就是「去噪后再合并」,比「边学边去噪」容易得多。

📊 关键结果(全部源自论文 Table 1 / Table 2)

实验对比关键数字
BEHAVE yogamat 单 subject
(Table 1)
vs SkillMimic [89]追踪时长 42.6s vs 12.2s(3.5×);人体误差 $E_h$ 6.4cm vs 7.2cm;物体误差 $E_o$ 9.2cm vs 13.4cm
消融:去 PSIw/o PSI时长从 42.6s 掉到 36.1s(PSI 对脏数据初始化关键)
消融:去 IETw/o IET时长从 42.6s 掉到 40.3s
OMOMO 大规模(Table 2)
训练集
PPO-only → 全套成功率 23.9% → 90.7%(MLP)/ 88.8%(Transformer);$E_h$ 从 7.2cm 降到 5.5–6.0cm
OMOMO 测试集(未见 subject)同上成功率 9.6% → 98.1%(Transformer 版);retarget-by-RL 让未见形状不再是问题
InterDiff 生成数据(interaction prediction,out-of-dist)kinematic generator 输出成功率 6.7% → 76.7%(InterMimic 给生成模型加物理细节)
HOI-Diff 生成数据(text-to-HOI,out-of-dist)kinematic generator 输出成功率 0.0% → 12.5%(baseline 完全失败)
10× 重量物体测试时物体加重 10 倍(OMOMO-Test w×10)成功率 3.9% → 56.8–62.6%(MLP 62.6% / Transformer 56.8%)
零样本(Figure 7)BEHAVE / HODome 新物体无需再训练即可迁移
最值得记的一句话:在 OMOMO 测试集上,Transformer 版 student 把未见 subject 的模仿成功率从 9.6% 拉到 98.1%——这意味着 retarget 难题被他们塞进 RL 目标后基本解决。再加上对 InterDiff 这种纯 kinematic 生成的数据也能从 6.7% 提到 76.7%,说明 InterMimic 不只是「模仿器」,而是「物理精修器」

🌐 在领域中的位置

DeepMimic(单技能 RL 模仿) AMP / ASE(adversarial motion prior,多技能) PhysHOI / SkillMimic(特定 HOI 场景) InterMimic(通用 HOI + 脏数据 + scale)⭐ OmniH2O / HOMIE(人形机器人全身操作)

横向关系:InterDiff、HOI-Diff 这类 kinematic generator 是「不落地」的生成模型,InterMimic 给它们当「物理后处理器」;纵向看,InterMimic 是第一篇做到「多对象 + 多身体部位 + 大规模 MoCap」都跑通的 HOI 物理模仿,并明确把「MoCap 校准」和「策略学习」解耦

❓ 常见误区

InterMimic 是生成模型吗?

本身不是——它是个物理模仿策略。但论文展示它能零样本接驳 HOI-Diff(text-to-HOI)和 InterDiff(interaction prediction),把自己当成这些 kinematic 生成器的「物理执行层」。所以可以理解为「物理仿真里的 action expert」。

为什么 teacher 用 MLP,student 用 Transformer?

Teacher 在小数据子集上训,MLP 够用且快;Student 要处理跨 subject、跨物体的高维观察 + 长时序依赖,Transformer 的 inductive bias 在测试集和 OOD 数据上明显赢(Table 2 第 4 vs 5 行)。这是典型的「容量随任务复杂度匹配」。

PSI 和 reset-free RL 的 reset buffer 是一回事吗?

思路像但目标不同。PSI 解决的是「从脏参考状态起步会立刻崩」——所以维护一个「仿真过的干净状态池」作为起点;这是数据增强 / 课程学习性质,不是 reset-free RL。

「retarget 也塞进 RL」到底怎么做的?

核心是奖励分两半:embodiment-aware 部分对齐运动学(关节位置/旋转差,按到物体距离加权——近时多看位置、远时多看旋转);embodiment-agnostic 部分对齐动力学(物体轨迹、接触)。前者负责「换身体」,后者负责「物理真实」。两者一起 optimized,retarget 就成了 RL 的副产品。