PhysHOI:用「接触图」教物理仿真人玩转高动态物体
🎯 为什么重要:从「一任务一奖励」到「一个 reward 通吃所有 HOI」
物理仿真里的人-物交互(Human-Object Interaction, HOI)有个老痛点:DeepMimic、AMP 这类经典动作模仿方法只会动人不动物;而能玩球的方法(Vid2tennis、Hassan et al. 等)每个任务都要手写专门的奖励,篮球运球、网球挥拍、抓握箱子各写各的,不可扩展。
论文 Tab.1 把同期工作摆得很清楚——只有 PhysHOI 同时勾上四个属性:高动态 HOI ✓、接触引导 ✓、任务无关 reward ✓、全身(含手指)✓。
💡 核心思想:把「接触关系」做成一张图,乘进 reward 里
PhysHOI 的关键设计是 Contact Graph(CG,接触图)。给定一条 kinematic 参考动作(人和物的运动轨迹),除了「位置/旋转/速度」这些运动学量之外,再额外抽出一组二值接触标签:身体第 $i$ 部分和物体第 $j$ 部分,在该帧是否接触(1/0)。
🛠️ 四个让「一个 reward 通吃」的关键设计
| 设计 | 心智 | 为什么必要 / 怎么实现 |
|---|---|---|
| ① Contact Graph + Aggregated CG | 把接触关系做成完全图(每对身体部位+物体一条边,标签 0/1);再按场景聚合几组(如双手合并) | 原始 CG 在全身抓握下 154 节点/11781 边太重;聚合降到 3 节点(球/手/身 或 物/桌/身),抗噪 + 省内存 |
| ② 乘法 reward | $r_t = r_t^b \cdot r_t^o \cdot r_t^{ig} \cdot r_t^{cg}$(四项相乘) | 用加法会让一项塌了另一项仍能补;用乘法保证「人像 + 物像 + 相对位置对 + 接触对」必须同时满足——这是逃离局部最优的结构约束 |
| ③ Contact-Aware HOI 状态 | 状态 $s_t=\{g^t, \hat{h}^{t+1}\}$ 包含当前仿真 + 下一步参考;参考含 $\{\hat s^{sbj}, \hat s^{obj}, \hat s^{ig}, \hat s^{cg}\}$ | 把接触图作为参考状态的一部分喂给策略;策略既要追运动学也要追接触——信息密度翻倍 |
| ④ BallPlay 数据集 | 8 个篮球技能:back dribble / cross leg / hold / fingertip spin / pass / backspin / cross / rebound | 单目视频自动标注(深度估计 + 语义分割 + CAD 模型选择 + 接触标签 + 物理修正);填补「动态 HOI 数据集空白」 |
加法 reward 的潜台词是「可以打补丁」——身体姿势错了但球位置对了,仍然有奖励。这正好给了策略作弊空间:手不动,球用头蹭过去,奖励还是正的。乘法 reward 的潜台词是「全或无」——任何一项为 0,整体就是 0。这就把局部最优直接封死,逼策略必须找到「正确接触 + 正确轨迹」的全局解。这一点和 RLHF 里把 KL 惩罚放进 reward 的乘法形式有异曲同工之妙。
📊 关键结果:BallPlay 成功率 7.5% → 82.4%(DeepMimic → PhysHOI)
| 维度 | 数字(来自原文 Table 2 / Table 3) |
|---|---|
| 训练规模 | SMPL-X 全身模型:52 身体部位、51×3 DoF(30×3 手 + 21×3 身);Isaac Gym 60Hz 仿真 / 30Hz 策略;2048 并行环境;单卡 A100 |
| 训练时长 | GRAB 5000 epochs;BallPlay 15000 epochs(每 epoch 10 帧连续仿真) |
| HOI 模仿成功率(Tab.2) | GRAB 抓握:PhysHOI 95.4% vs Zhang et al. 38.6% vs DeepMimic 27.0%;BallPlay 篮球:PhysHOI 82.4% vs 13.6% vs 7.5% |
| 物体位置误差 $E_{o\text{-}mpjpe}$ | BallPlay:PhysHOI 82.9mm vs DeepMimic 1662.5mm vs Zhang 155.3mm(DeepMimic 几乎完全丢球) |
| 接触准确率 $E_{cg}$ ↓ | GRAB:PhysHOI 0.0260 vs Zhang 0.3370;BallPlay:PhysHOI 0.0877 vs Zhang 0.4124 |
| CGR 消融(Tab.3,BallPlay) | 纯运动学 reward(rtb·rto)→ 完整(+IG+CGR):Toss 20.7% → 84.8%;Backspin 0.2% → 70.3%;Cross leg 6.7% → 88.2%;Pass 4.8% → 71.2%。注:单独看 CGR 增量(rtb·rto·rig → full),Toss 7.7%→84.8%、Backspin 21.7%→70.3% |
| BallPlay 数据集 | 8 个篮球技能;含视频 + 估计 SMPL-X + 物体 motion + 接触标签 + 物理修正 |
🌐 在领域中的位置
PhysHOI 是「物理仿真 + 全身 + 动态 HOI」这条窄路上的里程碑——它把「为每个交互任务手写 reward」的传统范式,换成「一条 kinematic 参考 + 一张接触图」的统一范式。关联线索:action generation / physics-based imitation / motion prior。
❓ 常见误区
PhysHOI 是模仿学习还是 RL?
两者都是。整体是 RL(PPO)框架,但 reward 不是任务目标,而是「追像参考动作 + 接触图对齐」。所以叫 "physics-based imitation"——用 RL 实现模仿学习。物体被动、只能间接通过接触力推动,所以必须靠 RL 探索而非回归。
为什么不能直接用 motion matching / 重定向?
因为运动学方法会产生穿模、滑步、漂浮——手看上去握住球,物理上根本没接触。PhysHOI 用物理仿真强制约束动力学,所以需要 RL 学一个能产生正确接触力的策略,而不是把参考姿势硬贴上去。
「接触图」和「interaction graph(IG)」有什么区别?
IG 描述「接触点相对物体的位置」(连续向量,描述「手放在球的哪里」),来自 Zhang et al. 的工作。CG 描述「谁和谁接触了」(二值标签,描述「应该接触的身体部位对不对」)。前者管「精细位置」,后者管「该不该碰」——两者互补,都乘进 reward。
为什么物体在仿真里只能「间接控制」?
因为这是HOI 模仿——目标是「像人那样抓球/运球」,不是「把球瞬移到目标位置」。如果直接给物体施加外力,就失去了「 humanoid 通过接触推动物体」这个核心难点。物体的运动必须由 humanoid 的关节扭矩(PD controller 输出)经物理仿真产生。