GMD:让扩散模型学会「按路线走」的人体动作生成
🎯 为什么重要:动作生成从「会说」到「会听话」
2022 年起,扩散模型(MDM、MLD 等)已经能在文本提示下生成像样的人体动作(走、跑、跳)。但真实场景——游戏、VR、机器人动画——光有文本不够:
这其实是扩散模型做条件生成的通病:当条件信号在维度或时间上太稀疏时,去噪过程会把它当成噪声擦掉。GMD 把这个问题挑明,并给出了三个互相配合的解药。
💡 核心思想:两阶段管线 + 把稀疏信号「放大、加密、再注入」
GMD 的整体架构是一个两阶段管线:先用一个小型 轨迹 DPM 生成合理的盆骨轨迹 z,再用 动作 DPM 在轨迹条件下生成全身动作 x。三个核心 trick 分布在两阶段里。
三个技巧的共同哲学:既然稀疏信号会被噪声「擦」掉,那就:(1) 把它在特征维度上 放大(投影),(2) 把它在时间维度上 加密(反向传播),(3) 把模型自身的 偏置压低(ε 模型)。
🛠️ 三个关键设计的工程细节
| 设计 | 具体做法 | 为什么有效(论文溯源) |
|---|---|---|
| ① Emphasis projection (特征放大) |
用一个随机矩阵 $A=A'B$ 把动作 $x$ 投影到 $x^\text{proj}$,其中 $B$ 是对角矩阵,把轨迹相关维度(rot, x, z)放大 $c$ 倍。推理时所有 imputation / guidance 都在 $x^\text{proj}$ 空间进行。 | 放大后轨迹维度占总能量的比例从 ~1.5% 提升到可控范围,模型不再把它当噪声。 (§4.1,Table 2:MDM 基线 Foot skating 0.284 → Ours c=10 降至 0.128) |
| ② Dense signal propagation (时间加密) |
对稀疏的 goal function $G_z$,直接对去噪器 $f(x_t)=x_{0,\theta}$ 求反向传播,得到 $\nabla_{x_t}\log p(G_x(X_t)=0|x_t) \approx -\nabla_{x_t} G_z(P_{xz} f(x_t))$。关键:不需要训练额外模型,原 DPM 自己就能当「上采样器」。 | 借鉴 RL 中 sparse reward 的 credit assignment 思路;通过去噪器内部的时序依赖把单点信号扩散到邻近帧。 (§4.2,Fig.6:没有它的话关键帧完全被忽略) |
| ③ ε 建模替代 x0 (去偏置) |
把轨迹 DPM 改成 预测噪声 ε 而非 $x_0$;动作 DPM 仍用 $x_0$ 模型(它靠 imputation 接收已加密的密集轨迹,不直接受 sparse classifier guidance)。 | 分析 Eq.1 的系数发现:$x_0$ 模型在 $t\to 0$ 时影响最大,但此时引导信号 $\Sigma_t$ 最弱,模型偏置会把生成结果「拉回」训练分布。ε 模型的影响峰值在 $t=T$,与引导强度同步衰减。 (§4.2 Problem 3,Fig.4 对比) |
传统做法要训练一个额外的「条件模型」才能处理新约束。GMD 的洞察是:去噪器本身就在学「相邻帧之间怎么协调」——这正是稀疏约束需要的先验。所以只要对它做一次 autodiff,稀疏信号就顺着学到的时序结构「扩散」开了。零额外参数、零重训。
📊 关键结果(HumanML3D 数据集,PDF 溯源)
1. 文本→动作(无空间约束,证明 base 模型不弱)
| 模型 | FID ↓ | R-Precision (Top-3) ↑ | Diversity → |
|---|---|---|---|
| Real motion | 0.002 | 0.797 | 9.503 |
| MDM (2022) | 0.556 | 0.608 | 9.446 |
| MLD (2022) | 0.473 | 0.772 | 9.724 |
| PhysDiff (2023) | 0.433 | 0.631 | — |
| GMD (Ours) | 0.212 | 0.670 | 9.440 |
2. 轨迹条件生成(核心目标,消融)
| 配置 | 空间 | Emphasis c | FID ↓ | Foot skating ↓ |
|---|---|---|---|---|
| MDM baseline | x | loss 1× | 0.904 | 0.284 |
| MDM + emphasis loss 10²× | x | loss 100× | 0.320 | 0.265 |
| Ours(emphasis projection) | x_proj | c=10 | 0.198 | 0.128 |
3. 关键帧条件 + 障碍规避(新任务)
| 任务 | 关键指标 | 效果 |
|---|---|---|
| 关键帧条件(5 个稀疏关键帧) | Avg. keyframe error (m) ↓ | 0.109(two-stage, τ=100)vs MDM 单阶段完全失败 |
| 关键帧条件 | Location error (50cm) ↓ | 0.020(two-stage) |
| 障碍规避 | 定性结果 | Fig.7 展示了角色成功绕开 SDF 定义的红区到达目标 |
4. 计算成本
| 资源 | 数值 |
|---|---|
| 训练(trajectory DPM, RTX 3090) | ~4.34 GPU 小时 |
| 训练(motion DPM, RTX 3090) | ~34.7 GPU 小时 |
| 推理(单个样本,1000 步 DDPM) | ~110 秒 |
| 硬件需求 | 单卡 RTX 2080Ti / 3080 / 3090 即可 |
🌐 在领域中的位置
GMD 在 motion diffusion 谱系里是第一个把「稀疏空间约束」系统化解决的论文。它对 classifier guidance / imputation / inpainting 在动作域的失效分析,后来被广泛借鉴到机器人动作扩散(Diffusion Policy 系列处理轨迹约束)和世界模型条件生成中。关联线索:T05 扩散谱系。
❓ 常见误区
Emphasis projection 不就是给轨迹维度加更大的 loss 权重吗?
不是。论文 Table 2 专门做了对比:把 loss 权重加到 10²×(即 100×)后 FID 反而恶化(0.320 vs 0.198),foot skating 也只小幅改善。原因是 loss 权重只影响训练,而 DPM 在推理时仍按原始分布生成;而 emphasis projection 是改变推理时的表示空间,让每一步去噪都「看见」放大的轨迹信号。
为什么不能直接用 classifier guidance 就完事?
论文 §1 给出了「图像 diffusion 只给 5 个像素指导」的类比:稀疏信号在多步去噪中会被逐步稀释,最后等于没指导。Dense signal propagation 就是为此而生——它通过反向传播把单点信号铺开到整条时间轴。
GMD 能用于机器人控制吗?
不能直接用。GMD 处理的是 kinematic motion(无物理、无接触),输出是关节角度序列。把它迁移到机器人要解决:物理真实性(PhysDiff 后续做了)、实时性(110 秒/样本太慢)、闭环纠错。但它的核心方法论(投影 + dense propagation + ε 建模)已经被机器人动作扩散方法借鉴。
ε 模型一定比 x0 模型好吗?
不是普遍真理,是针对 guidance 场景的结论。论文 §4.2 Problem 3 的分析显示:x0 模型在 $t\to 0$ 时权重最大,正好压过衰减的引导信号;ε 模型的权重峰值在 $t=T$,与引导同步衰减,因此更适合 guidance pipeline。无条件生成场景这个差异可能不重要。