Trace and Pace: Controllable Pedestrian Animation via Guided Trajectory Diffusion
论文信息: CVPR 2024, Davis Rempe et al., NVIDIA/Stanford/CMU/SFU/Toronto
Link: CVF Open Access
一、核心问题
1.1 研究背景
行人动画是自动驾驶、城市规划和建筑设计等领域的核心问题。一个完整的行人动画系统需要生成真实的 2D 轨迹和全身动作。
现有方法的局限:
| 方法类型 | 代表工作 | 局限性 |
|---|---|---|
| 规则/算法模型 | 最短路径、社会力模型 | 轨迹不自然,看起来机械 |
| 学习型预测模型 | 单次前向传播预测 | 控制能力有限,只能采样或潜在空间遍历 |
| 物理基控制器 | AMP、ASE | 需要针对每个任务重新训练规划器 |
| VAE 轨迹模型 | STRIVE | 需要耗时的测试时优化 |
1.2 核心问题
如何构建一个行人动画系统,能够:
- 在测试时通过用户指定的目标(如路径点、速度、社交组)进行控制
- 生成真实自然的轨迹和全身动作
- 适应不同地形(楼梯、斜坡、不平整地面)
- 支持不同体型的人物角色
- 避免碰撞(障碍物之间、行人之间)
1.3 本文方法
论文提出了 Trace and Pace 框架,包含两个核心组件:
1. TRACE (TRAjectory Diffusion Model for Controllable PEdestrians)
- 基于扩散模型的轨迹生成器
- 测试时通过 guidance 实现控制
- 支持路径点、避障、社交组等控制目标
2. PACER (Pedestrian Animation ControllER)
- 基于强化学习的物理控制器
- 使用对抗运动先验学习真实动作
- 支持不同体型和地形
系统架构:
TRACE (高层规划器)
↓ (2D 轨迹)
PACER (底层控制器)
↓ (关节控制)
物理仿真环境
↓ (状态反馈)
TRACE (重新规划)
二、核心贡献
-
TRACE:可控制的轨迹扩散模型
- 使用 classifier-free sampling 实现测试时控制
- 提出 clean guidance 公式,在干净轨迹上操作
- 支持多种分析性引导目标(路径点、避障、社交组)
-
PACER:通用行人动画控制器
- 从少量动作数据学习真实步态
- 地形感知:楼梯、斜坡、不平整地面
- 社交感知:避免与其他行人碰撞
- 体型感知:支持不同身体形态
-
闭环行人动画系统
- TRACE 和 PACER 独立训练,运行时闭环集成
- 使用 PACER 的价值函数指导 TRACE 去噪
- 支持大规模人群仿真
三、大致方法
3.1 框架概述
┌─────────────────────────────────────────────────────────────────┐
│ Trace and Pace System │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ TRACE: 轨迹扩散模型 (高层规划器) │ │
│ │ - 输入:过去轨迹 + 邻居轨迹 + 语义地图 │ │
│ │ - 输出:未来 5 秒 2D 轨迹 (x, y, θ, v) │ │
│ │ - 控制:测试时 guidance (路径点、避障、社交组) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PACER: 物理控制器 (底层执行器) │ │
│ │ - 输入:2D 轨迹 + 环境特征 + 体型参数 │ │
│ │ - 输出:PD 控制器目标 (关节角度/速度) │ │
│ │ - 学习:对抗运动先验 + PPO │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 物理仿真 (Isaac Gym) │ │
│ │ - 地形:楼梯、斜坡、障碍物 │ │
│ │ - 反馈:角色状态 + 高度图 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 闭环:每 2 秒重新规划,PACER 状态反馈给 TRACE │
│ │
└─────────────────────────────────────────────────────────────────┘
3.2 核心组件
(1) TRACE:轨迹扩散模型
问题定义:
- 输入:ego 行人过去轨迹 \(x_{ego} = [s_{t-T_p}, ..., s_t]\)
- 输入:邻居行人过去轨迹 \(X_{neigh} = {x_i}_{i=1}^N\)
- 输入:语义地图 \(M \in \mathbb{R}^{H \times W \times C}\)
- 输出:未来轨迹 \(\tau = [\tau^s; \tau^a]\)
- 状态 \(\tau^s = [s_{t+1}, ..., s_{t+T_f}]\),\(s = [x, y, \theta, v]^T\)
- 动作 \(\tau^a = [a_{t+1}, ..., a_{t+T_f}]\),\(a = [\dot{v}, \dot{\theta}]^T\)
扩散过程:
- 前向:添加高斯噪声 \(\epsilon \sim \mathcal{N}(0, I)\) $$\tau^k = \sqrt{\bar{\alpha}_k} \tau^0 + \sqrt{1-\bar{\alpha}_k} \epsilon$$
- 反向:学习去噪分布 $$p_\phi(\tau^{k-1} | \tau^k, C) := \mathcal{N}(\tau^{k-1}; \mu_\phi(\tau^k, k, C), \Sigma_k)$$
训练目标: $$\mathcal{L} = \mathbb{E}_{\epsilon, k, \tau^0, C} \left[ ||\tau^0 - \hat{\tau}^0||^2 \right]$$
(2) Classifier-Free Sampling
目的:提高测试时对条件输入的遵循能力
训练:随机丢弃条件输入(10% 概率)
- 同时学习条件模型 \(\mu_\phi(\tau^k, k, C)\)
- 同时学习无条件模型 \(\mu_\phi(\tau^k, k)\)
测试时组合: $$\tilde{\epsilon}\phi = \epsilon\phi(\tau^k, k, C) + w \left( \epsilon_\phi(\tau^k, k, C) - \epsilon_\phi(\tau^k, k) \right)$$
- \(w > 0\):增强条件影响
- \(w < 0\):减弱条件影响
- \(w = 0\):纯条件模型
- \(w = -1\):纯无条件模型
(3) Clean Guidance
问题:传统 guidance 在噪声轨迹上评估损失函数,需要训练噪声鲁棒的损失函数
解决方案:在干净轨迹预测 \(\hat{\tau}^0\) 上操作
传统方法 (Noisy Guidance): $$\tilde{\mu} = \mu - \alpha \Sigma_k \nabla_\mu \mathcal{J}(\mu)$$
本文方法 (Clean Guidance): $$\tilde{\tau}^0 = \hat{\tau}^0 - \alpha \Sigma_k \nabla_{\tau^k} \mathcal{J}(\hat{\tau}^0)$$
优点:
- 可以直接使用分析性损失函数
- 不需要训练噪声鲁棒的损失函数
- 样本质量更好,目标遵循度更高
(4) 引导目标函数
路径点引导: $$\mathcal{J}{waypoint}(\tau) = ||(x{target}, y_{target}) - (x_T, y_T)||^2$$
障碍物避免: $$\mathcal{J}{obs}(\tau) = \sum_t \max(0, r{ped} + r_{obs} - ||p_t - p_{obs}||)^2$$
行人避免: $$\mathcal{J}{agent}(\tau) = \sum_t \max(0, 2r{ped} - ||p_t - p_{neighbor}||)^2$$
社交组: $$\mathcal{J}{group}(\tau) = \sum_t ||(x_t, y_t) - (x{group}, y_{group})||^2$$
3.3 PACER:物理控制器
状态空间
$$s_t = [h_t, o_t, \beta, \tau^s]$$
- \(h_t\): 角色状态(关节位置/速度/旋转)
- \(o_t \in \mathbb{R}^{64 \times 64 \times 3}\): 局部高度图和速度图
- \(\beta\): SMPL 体型参数
- \(\tau^s\): 目标 2D 轨迹
动作空间
$$a_t = \text{PD 控制器目标}$$
- 目标关节旋转
- 目标关节速度
奖励函数
$$r_t = r^{amp}_t + r^{\tau}_t + r^{energy}_t$$
- \(r^{amp}_t\): 对抗运动奖励(来自判别器)
- \(r^{\tau}_t\): 轨迹跟踪奖励
- \(r^{energy}_t\): 能量惩罚
对称性损失
问题:RL 训练可能产生不对称步态(如跛行)
解决方案:运动对称性损失
$$\mathcal{L}{sym}(\theta) = ||\pi{PACER}(h_t, o_t, \beta, \tau^s) - \Phi_a(\pi_{PACER}(\Phi_s(h_t, o_t, \beta, \tau^s)))||^2$$
- \(\Phi_s\): 沿矢状面镜像状态
- \(\Phi_a\): 沿矢状面镜像动作
3.4 价值函数引导
目的: tighter coupling between TRACE and PACER
方法:使用 PACER 的 RL 价值函数 \(V(s)\) 作为引导
$$\mathcal{J}{value}(\tau) = -V(s{follow}(\tau))$$
- \(s_{follow}(\tau)\): 跟随轨迹 \(\tau\) 的状态
- \(V(s)\): 预测未来期望奖励
优点:
- 价值函数感知身体姿态、地形、其他行人
- 引导 TRACE 生成更容易跟随的轨迹
- 不需要额外训练奖励函数
四、训练细节
4.1 TRACE 训练
| 参数 | 值 |
|---|---|
| 过去轨迹长度 | 3s (30 帧 @ 10Hz) |
| 未来轨迹长度 | 5s (50 帧 @ 10Hz) |
| 扩散步数 K | 100 |
| 条件丢弃概率 | 10% (地图和邻居独立) |
| 网络架构 | U-Net + 1D 时序卷积 |
| 地图编码 | 2D CNN → 特征网格 |
训练技巧:
- 混合数据集训练(有地图 + 无地图)
- Classifier-free sampling 权重 \(w \in [-0.5, 0]\)
4.2 PACER 训练
| 参数 | 值 |
|---|---|
| 控制频率 | 30Hz |
| RL 算法 | PPO |
| 地形类型 | 楼梯、斜坡、不平整地面、障碍物 |
| 体型变化 | 从 AMASS 采样性别和体型 |
| 模拟器 | NVIDIA Isaac Gym |
训练技巧:
- 对抗运动先验(AMP)
- 对称性损失
- 碰撞终止(学习避障)
4.3 数据集
| 数据集 | 特点 | 用途 |
|---|---|---|
| ORCA-Maps | 合成数据,多障碍物,少行人 | 避障训练 |
| ORCA-Interact | 合成数据,无障碍物,多行人 | 社交交互训练 |
| ETH/UCY | 真实数据,密集人群,无地图 | 真实性训练 |
| nuScenes | 真实数据,街道场景,详细地图 | 地图条件训练 |
五、实验与结论
5.1 评估指标
控制能力:
- 引导误差:目标达成程度(如路径点误差)
- 碰撞率:障碍物碰撞、行人碰撞
真实性:
- EMD (Earth Mover's Distance):生成分布与真实分布的差异
- 平均加速度:假设行人运动平滑
5.2 主要结果
ORCA 数据集对比(合成数据)
| 方法 | 引导误差 | 障碍物碰撞 | 行人碰撞 | 速度 EMD |
|---|---|---|---|---|
| VAE [45] | - | 0.076 | 0.118 | 0.038 |
| TRACE (无引导) | - | 0.050 | 0.132 | 0.029 |
| TRACE (避障) | 0.014 | 0.014 | 0.124 | 0.020 |
| TRACE (避行人) | 0.000 | 0.058 | 0.000 | 0.025 |
| TRACE (路径点) | 0.105 | 0.048 | 0.093 | 0.057 |
结论:
- TRACE 优于 VAE 潜在空间优化
- Clean guidance 优于 Noisy guidance
- 多样本采样 + 选择 (Filtering) 提升性能
nuScenes 结果(真实数据)
| 训练数据 | w | 路径点误差 | 纵向加速度 | 横向加速度 |
|---|---|---|---|---|
| nuScenes only | -0.5 | 0.421 | 0.177 | 0.168 |
| Mixed | 0.0 | 0.551 | 0.159 | 0.145 |
| Mixed | -0.5 | 0.366 | 0.140 | 0.132 |
结论:
- 混合数据训练提升 OOD 泛化
- \(w < 0\) 提升多样性
5.3 完整系统评估
| 场景 | 引导 | 失败率 | 轨迹跟踪误差 | 判别器奖励 |
|---|---|---|---|---|
| 随机地形 | 无 | 0.093 | 0.104 | 1.887 |
| 随机地形 | 路径点 | 0.107 | 0.111 | 2.113 |
| 障碍物 | 无 | 0.125 | 0.093 | 2.512 |
| 障碍物 | 避障 | 0.063 | 0.089 | 2.521 |
| 平坦 (人群) | 无 | 0.087 | 0.082 | 2.5xx |
5.4 消融实验
Clean vs Noisy Guidance:
- Clean guidance 在引导误差和真实性上都更好
TRACE-Filter vs Full Guidance:
- Filtering(多样本选择)有效但有限
- Full guidance 进一步提升性能
Mixed Training:
- 混合数据集训练提升多样性
- Classifier-free sampling 权重 \(w < 0\) 提升 OOD 控制
六、局限性
-
开环 vs 闭环
- 长时间闭环操作可能积累误差
- 每 2 秒重新规划缓解但未完全解决
-
计算成本
- 扩散模型需要 100 步去噪
- 虽然支持实时,但比单次前向传播慢
-
地形泛化
- TRACE 不直接感知地形(通过 PACER 价值函数间接感知)
- 极端地形可能需要额外训练
-
人群密度
- 高密度人群仿真时计算成本增加
- 需要为每个行人运行扩散模型
-
动作多样性
- 依赖 AMASS 数据集的多样性
- 数据集中没有的动作难以生成
七、启发
7.1 方法学启发
-
两阶段范式:规划 + 控制
高层规划 (TRACE) → 低层控制 (PACER) → 物理仿真 ↑_____________反馈_______________↓- 独立训练,运行时集成
- 模块化设计便于调试和扩展
-
Diffusion Guidance 的力量
- 测试时控制无需重新训练
- 分析性损失函数直接可用
- 多个目标可以组合
-
价值函数作为引导
- RL 价值函数包含丰富信息
- 可用于指导扩散模型生成
- 实现规划器和控制器的双向耦合
7.2 工程实践启发
-
Classifier-Free Sampling
- 训练时随机丢弃条件
- 测试时灵活调整条件权重
- 支持混合数据集训练
-
Clean Guidance 公式
- 在干净预测上操作
- 避免噪声鲁棒性训练
- 样本质量更高
-
对称性损失
- 简单有效防止不对称步态
- 无需额外监督信号
7.3 与相关工作对比
| 方法 | 规划器 | 控制器 | 训练方式 |
|---|---|---|---|
| DeepLoco | 分层 RL | RL | 联合训练 |
| ASE | 高层策略 | 低级策略 | 预训练 + 微调 |
| CLOSD | 扩散规划器 | RL 跟踪 | 独立训练 |
| Trace & Pace | 扩散规划器 | RL 跟踪 | 独立训练 + 价值引导 |
八、遗留问题
8.1 开放性问题
-
更高效的扩散采样
- 能否用一致性模型减少采样步数?
- 能否用蒸馏加速推理?
-
更长视野规划
- 当前预测 5 秒未来
- 能否扩展到更长时序?
-
多模态条件
- 能否结合语言指令?
- 能否结合视觉输入?
-
在线适应
- 能否在测试时适应新地形?
- 能否学习新的避障策略?
8.2 未来方向
-
统一扩散模型
- 同时生成轨迹和动作
- 端到端训练
-
世界模型集成
- 学习可微物理引擎
- 在 latent space 规划
-
大规模预训练
- 类似 ASE 的预训练范式
- 通用行人行为模型
九、关键公式总结
| 公式 | 含义 |
|---|---|
| \(\mathcal{L} = \mathbb{E}[ | |
| \(\tilde{\epsilon} = \epsilon + w(\epsilon_C - \epsilon)\) | Classifier-free sampling |
| \(\tilde{\tau}^0 = \hat{\tau}^0 - \alpha \Sigma_k \nabla_{\tau^k} \mathcal{J}(\hat{\tau}^0)\) | Clean guidance |
| \(r_t = r^{amp}_t + r^{\tau}_t + r^{energy}_t\) | PACER 奖励 |
| \(\mathcal{L}_{sym} = |
十、代码与资源
- 项目主页: https://trace-pace.github.io/
- 代码: 项目主页提供
- 视频: 项目主页提供演示视频
十一、与 Locomotion 控制的关系
Trace and Pace 是 locomotion 控制的一个特例,专注于行人导航场景:
- 高层规划:TRACE 生成 2D 轨迹(位置 + 朝向 + 速度)
- 低层控制:PACER 跟踪轨迹并生成物理真实的动作
- 闭环反馈:环境状态反馈给规划器重新规划
这种两阶段架构是 locomotion 控制的经典范式:
- 优点:模块化、可解释、便于调试
- 缺点:需要协调两个组件
与 ASE、AMP 等工作的区别:
- Trace and Pace 专注于行人场景
- 强调测试时控制(guidance)
- 集成地形和社交感知
笔记说明:本文是 CVPR 2024 关于行人动画的工作,结合了扩散模型和强化学习。理解本文有助于学习 diffusion 在 locomotion 控制中的应用,以及两阶段规划 - 控制架构的设计。