枢纽
数据集HumanML3D, AMASS
物理感知
输入模态text

GMD:让扩散模型学会「按路线走」的人体动作生成

Korrawe Karunratanakul, Konpat Preechakul, Supasorn Suwajanakorn, Siyu Tang(ETH Zürich + VISTEC)。arXiv:2305.12577v3 (2023-10)。 项目页 · 开源 · action_gendiffusion + spatial guidance

🧠 一句话心智模型:扩散模型画图很行,但你说「画一个走路的人,并且要踩着这条曲线走、躲开那两块障碍」它就懵了——因为这种「空间约束」太稀疏,会被当成噪声擦掉。GMD 的核心是把稀疏约束「放大、加密、再注入」,让 diffusion 不得不听。

🎯 为什么重要:动作生成从「会说」到「会听话」

2022 年起,扩散模型(MDM、MLD 等)已经能在文本提示下生成像样的人体动作(走、跑、跳)。但真实场景——游戏、VR、机器人动画——光有文本不够:

核心矛盾:要让虚拟人绕过桌子、踩到指定地板砖、沿特定轨迹走,必须给它 空间约束(trajectory / keyframe / obstacle)。可问题来了:动作表示里 空间信息只占 4 维(盆骨 xy + 朝向),剩下 259 维都是关节局部姿态——模型根本「听不见」那 4 维的喊话。结果就是:给它一条轨迹,它无视;硬塞进去,就给你「脚底打滑」(foot skating)的怪动作。

这其实是扩散模型做条件生成的通病:当条件信号在维度或时间上太稀疏时,去噪过程会把它当成噪声擦掉。GMD 把这个问题挑明,并给出了三个互相配合的解药。

问题 ①:特征稀疏 轨迹只占 4/263 维 · 模型重局部姿态 · 空间信号被淹没 → 脚底打滑(foot skating) 解药:Emphasis projection 问题 ②:时间稀疏 只在 5 个关键帧给约束 · 类似「只画 5 个像素 指导整张图生成」 → 关键帧被忽略 解药:Dense signal propagation 问题 ③:DPM 偏置 x0 模型在 t→0 时太自信 · 把引导「拉回」训练分布 · 引导信号被反转 → 轨迹「收缩」回原型 解药:改用 ε 建模
图 1:GMD 识别的三大「引导失效」模式(论文 §1 & §4),分别对应三个互相正交的解药。

💡 核心思想:两阶段管线 + 把稀疏信号「放大、加密、再注入」

GMD 的整体架构是一个两阶段管线:先用一个小型 轨迹 DPM 生成合理的盆骨轨迹 z,再用 动作 DPM 在轨迹条件下生成全身动作 x。三个核心 trick 分布在两阶段里。

Stage 1:轨迹 DPM 输入:关键帧/起点终点 + Dense signal prop. (反向传播扩展稀疏信号) 输出:密集盆骨轨迹 z Stage 2:动作 DPM + Emphasis projection (投影到 x_proj 放大 轨迹维度的权重) 输出:全身动作 x 可控动作 ✓ 沿轨迹走 ✓ 踩中关键帧 ✓ 绕开障碍 文本提示 d(如 "a person walks forward then jumps")—— 经 CLIP 编码,两阶段共享
图 2:GMD 两阶段管线(论文 Fig.2a)。文本驱动两个 DPM;空间约束通过三类技巧注入。

三个技巧的共同哲学:既然稀疏信号会被噪声「擦」掉,那就:(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 motion0.0020.7979.503
MDM (2022)0.5560.6089.446
MLD (2022)0.4730.7729.724
PhysDiff (2023)0.4330.631
GMD (Ours)0.2120.6709.440

来源:论文 Table 1。FID 相对 MLD 进一步降低 55%,相对 MDM 降低 62%。

2. 轨迹条件生成(核心目标,消融)

配置空间Emphasis cFID ↓Foot skating ↓
MDM baselinexloss 1×0.9040.284
MDM + emphasis loss 10²×xloss 100×0.3200.265
Ours(emphasis projection)x_projc=100.1980.128

来源:Table 2。Foot skating ratio 从 0.284 砍到 0.128(降幅 55%),证明「投影」远胜「加大 loss 权重」。

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 不是「换一个更猛的模型」,而是把同一个 diffusion 主干重新接地(grounding)到空间约束。三个 trick 都不需要换骨干网络,全部可叠加到任何现有的 motion DPM 上——这是它对后续工作最大的启示。

🌐 在领域中的位置

文本→动作 GAN/VAE(动作质量差) MDM / MLD(text-to-motion diffusion,但无空间控制) GMD(空间可控 diffusion)⭐ PhysDiff / 通用可控 motion generation(物理 + 多约束)

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。无条件生成场景这个差异可能不重要。