DiffusionDrive Truncated Diffusion Model for End-to-End Autonomous Driving

Task: End-to-End Autonomous Driving (Multi-Mode Planning)
Method: Truncated Diffusion Policy, Cascade Diffusion Decoder
Venue: CVPR 2025 Highlight
Year: 2025
Paper: https://arxiv.org/abs/2411.15139
Code: https://github.com/hustvl/DiffusionDrive

摘要

扩散模型(Diffusion Model)因其强大的多模态分布建模能力,在机器人策略学习中展现了巨大潜力。然而,将其直接应用于端到端自动驾驶面临两大挑战:去噪步数过多(20 步,仅 7 FPS)和模式坍塌(不同随机噪声收敛至相似轨迹,多样性仅 11%)。本文提出 DiffusionDrive,核心创新是截断扩散策略(Truncated Diffusion Policy)——将扩散起点从随机高斯噪声替换为围绕 K-Means 聚类锚点的锚定高斯分布,仅需 2 步去噪(10× 加速)即可生成高质量多模态轨迹(多样性 74%)。配合高效的级联扩散解码器(Cascade Diffusion Decoder),DiffusionDrive 在 NAVSIM navtest 上达到 88.1 PDMS,以 45 FPS 实时运行于 4090 GPU。

核心论点:端到端自动驾驶规划本质上是多模态问题——扩散模型天然适合建模多种合理驾驶行为,但需要截断扩散调度以利用驾驶先验(锚点轨迹),将去噪步数从 20 降至 2,同时用 Transformer 级联解码器替代 UNet 以增强场景交互。

问题与动机

现有端到端规划方法在多模态建模上的探索可分为三类,各有局限:

范式 代表方法 局限
单模态回归 UniAD, VAD, Transfuser 无法表达多种合理行为(如直行 or 变道)
固定词汇表采样 VADv2 (4096), Hydra-MDP (8192) 受限于锚点数量和质量,OOV 场景失败
标准扩散策略 TransfuserDP (20 steps) 20 步去噪拖慢至 7 FPS + 模式坍塌

DiffusionDrive 的洞察来源于人类驾驶行为的规律性:人类并非从”随机噪声”中做决策,而是在有限的驾驶模式中根据实时路况动态调整。因此可以:

  1. 用 K-Means 聚类提取少量驾驶模式锚点(仅 20 个)
  2. 在锚点附近加小噪声,而非从纯高斯噪声出发
  3. 截断扩散调度,大幅减少去噪步数

核心洞察

洞察 1:截断扩散——用驾驶先验替代随机噪声

传统做法(Diffusion Policy):从纯高斯噪声 $\tau^T \sim \mathcal{N}(0, \mathbf{I})$ 出发,经 20 步 DDIM 去噪生成轨迹。每步都需运行完整的 UNet 前向传播。

DiffusionDrive 做法

  1. 从训练集用 K-Means 聚类 20 条锚点轨迹 $\{\mathbf{a}_k\}_{k=1}^{20}$
  2. 训练时截断扩散调度($T_{\text{trunc}}=50$,而非 $T=1000$),仅在锚点上加少量噪声:$\tau_k^i = \sqrt{\bar{\alpha}_i} \mathbf{a}_k + \sqrt{1-\bar{\alpha}_i} \epsilon$
  3. 推理时从锚定高斯分布采样,仅需 2 步去噪

为什么更好:Tab. 2 的 Roadmap 清晰展示了收益:

  • TransfuserDP(标准扩散):84.6 PDMS,20 步,7 FPS,多样性 11%
  • TransfuserTD(截断扩散):85.7 PDMS,2 步,27 FPS,多样性 70%
  • DiffusionDrive(+级联解码器):88.1 PDMS,2 步,45 FPS,多样性 74%

截断扩散通过合理的起点大幅压缩了去噪路径——不需要从纯噪声”摸索”到合理轨迹,而是从”接近答案的位置”微调。

洞察 2:级联 Transformer 解码器——替代笨重的 UNet

传统做法:机器人扩散策略统一使用 UNet 作为去噪网络,参数量大(102M)、每步耗时长(6.5ms)。

DiffusionDrive 做法:设计轻量级 Transformer 扩散解码器,包含四个关键交互:

  1. 可变形空间交叉注意力:用轨迹坐标从 BEV/PV 特征中提取局部场景信息
  2. Agent/Map 交叉注意力:利用感知模块的结构化查询(检测框、地图元素)
  3. 时间步调制层:编码当前去噪步数信息
  4. 级联机制:堆叠 2 层解码器,在每个去噪步内迭代精炼轨迹

为什么更好:消融实验(Tab. 3)显示:

  • 仅用 Ego Query(无空间/Agent 交互):PDMS 暴跌至 55.1(ID-2)
  • 加入空间交叉注意力:PDMS 跃升至 87.1(ID-3,+32.0)
  • 再加 Agent 交叉注意力:87.4(ID-5)
  • 再加级联机制:88.1(ID-6)
  • 参数量从 UNet 的 102M 降至 60M(-39%),每步耗时从 6.5ms 降至 3.8ms

洞察 3:锚点实现真正的多模态——20 个锚点 > 8192 个

传统做法(VADv2/Hydra-MDP):用 4096~8192 个固定锚点离散化动作空间,按分数采样。锚点越多越好?实际上 VADv2 仅达 80.9 PDMS。

DiffusionDrive 做法:仅用 20 个 K-Means 锚点作为扩散起点。扩散模型的连续生成能力允许每个锚点”演化”出一族连续轨迹,而非固定在离散位置。推理时可灵活采样 $N_{\text{infer}}$ 条轨迹(默认 20,可动态调整到 40+)。

为什么更好

  • DiffusionDrive(20 锚点)88.1 PDMS > Hydra-MDP(8192 锚点)83.0 PDMS
  • 模式多样性 74% 远超标准扩散的 11%
  • 定性可视化显示 top-10 轨迹涵盖直行、变道等多种合理行为

要记住的 3 个数字

  • 88.1 PDMS:NAVSIM navtest 新 SOTA,超越 Hydra-MDP-W-EP 1.6 分
  • 2 步去噪:比标准扩散策略加速 10×,比 Transfuser MLP 仅慢 38×(7.6ms vs 0.2ms)
  • 45 FPS:4090 满足实时要求,标准扩散策略仅 7 FPS

方法设计

整体架构

DiffusionDrive 架构图
传感器输入 (Camera + LiDAR)
           │
           ▼
┌────────────────────────┐
│ 感知编码器(可替换)      │
│ • NAVSIM: Transfuser   │
│ • nuScenes: SparseDrive│
└─────┬────────┬─────────┘
      │        │
   BEV/PV   Agent/Map
   Feature   Queries
      │        │
      ▼        ▼
┌──────────────────────────────────────────────┐
│             截断扩散策略                       │
│                                              │
│   K-Means 锚点 {a_k}  ──加少量噪声──→  τ_k^i   │
│         (20 条)         T_trunc=50           │
│                                              │
│   ┌─────────── 级联扩散解码器 ────────────┐    │
│   │ Layer 1:                            │    │
│   │   Deformable Spatial Cross-Attn     │    │
│   │   → Agent/Map Cross-Attn            │    │
│   │   → FFN → Timestep Modulation       │    │
│   │   → MLP (score + offset)            │    │
│   ├─────────────────────────────────────┤    │
│   │ Layer 2 (cascade):                  │    │
│   │   同上结构,输入为 Layer1 输出         │    │
│   └─────────────────────────────────────┘    │
│                                              │
│   重复 2 个 DDIM 去噪步(共享参数)              │
│   → 输出 {s_k, τ_k} → Top-1 scoring 轨迹      │
└──────────────────────────────────────────────┘

关键组件

模块 输入 输出 核心设计
感知编码器 多视图图像 + LiDAR BEV/PV 特征 + Agent/Map 查询 可替换(Transfuser / SparseDrive)
锚点初始化 训练集全部 GT 轨迹 20 条聚类锚点$\{\mathbf{a}_k\}$ K-Means 聚类 + 截断噪声调度
级联扩散解码器 含噪轨迹 + 场景特征 分数 + 去噪轨迹 可变形注意力 + Agent 交互 + 级联精炼
DDIM 去噪 解码器输出 下一步输入 2 步,参数共享

损失函数

$$\mathcal{L} = \sum_{k=1}^{N_{\text{anchor}}} \left[ y_k \mathcal{L}_{\text{rec}}(\hat{\tau}_k, \tau_{\text{gt}}) + \lambda \cdot \text{BCE}(\hat{s}_k, y_k) \right]$$

正样本分配:距离 GT 最近的锚点为正($y_k=1$),其余为负。$\mathcal{L}_{\text{rec}}$ 为 L1 重建损失。

截断扩散的数学原理

标准扩散前向过程:$q(\tau^i | \tau^0) = \mathcal{N}(\tau^i; \sqrt{\bar{\alpha}_i} \tau^0, (1-\bar{\alpha}_i)\mathbf{I})$

截断后:仅扩散 $i \in [1, T_{\text{trunc}}]$,其中 $T_{\text{trunc}} = 50 \ll T = 1000$。这意味着噪声量级极小——锚点基本保持原始形状,仅添加微小扰动。模型只需学习”从接近正确的位置微调到精确位置”,而非”从纯噪声中重建”。

实验与分析

主要结果

方法 输入 锚点数 NC↑ DAC↑ TTC↑ Comf.↑ EP↑ PDMS↑
Transfuser C&L 0 97.7 92.8 92.8 100 79.2 84.0
VADv2 C&L 8192 97.2 89.1 91.6 100 76.0 80.9
Hydra-MDP C&L 8192 97.9 91.7 92.9 100 77.6 83.0
Hydra-MDP-W-EP C&L 8192 98.3 96.0 94.6 100 78.7 86.5
DiffusionDrive C&L 20 98.2 96.2 94.7 100 82.2 88.1

DiffusionDrive 用 20 个锚点(400× 少于 VADv2)达到最优 PDMS,且无需后处理。

nuScenes 开环规划(Table 7)

方法 Backbone L2 1s↓ L2 2s↓ L2 3s↓ avg L2↓ Col 1s↓ Col 2s↓ Col 3s↓ avg Col↓ FPS
VAD R50 0.41 0.70 1.05 0.72 0.07 0.17 0.41 0.22 4.5
SparseDrive R50 0.29 0.58 0.96 0.61 0.01 0.05 0.18 0.08 9.0
DiffusionDrive R50 0.27 0.54 0.90 0.57 0.03 0.05 0.16 0.08 8.2

在 SparseDrive 基础上集成 DiffusionDrive 的截断扩散规划头,avg L2 从 0.61 降至 0.57(-6.6%),碰撞率持平。

效率对比(Table 2 Roadmap)

方法 去噪网络 步时间 步数 总耗时 多样性 D↑ 参数 FPS
Transfuser MLP 0.2ms 1 0.2ms 0% 56M 60
TransfuserDP UNet 6.5ms 20 130.0ms 11% 101M 7
TransfuserTD UNet 6.9ms 2 13.8ms 70% 102M 27
DiffusionDrive Dec. 3.8ms 2 7.6ms 74% 60M 45

消融实验

解码器设计消融(Table 3)

ID UNet 空间交叉注意力 Agent 交叉注意力 级联 参数 PDMS↑
1 102M 85.7
2 57M 55.1
3 58M 87.1
5 59M 87.4
6 60M 88.1

关键发现

  • 空间交叉注意力是最关键组件(+32.0 PDMS,ID-2→ID-3)
  • 级联机制贡献明显(+0.7 PDMS,ID-5→ID-6)
  • Transformer 解码器比 UNet 小 39%(60M vs 102M)但性能更优(88.1 vs 85.7)

去噪步数(Table 4)

去噪步数 PDMS↑
1 87.9
2 88.1
3 88.1

采样数(Table 6)

采样数 $N_{\text{infer}}$ PDMS↑
10 84.9
20 88.1
40 88.2

2 步去噪已接近饱和;20 条采样轨迹足以覆盖动作空间。

失效场景分析

  • NAVSIM 数据集以简单场景为主:88.1 PDMS 在真实复杂城市环境中是否保持有待验证
  • 闭环评估为非反应式仿真:其他交通参与者不对 ego 行为做出反应,与真实驾驶有差距
  • LiDAR 依赖:NAVSIM 实验使用 Camera+LiDAR,纯视觉方案未充分验证
  • 感知模块固定:DiffusionDrive 仅替换规划头,感知误差传导到规划的影响需要更多研究

工程实践

训练配置

[NAVSIM]
Backbone: ResNet-34
Input: 3 front cameras → 1024×256 + rasterized BEV LiDAR
Perception: Transfuser 编码器
Anchors: 20 条 K-Means 聚类轨迹
Truncation: T_trunc = 50 / T = 1000
Diffusion Dec: 2 cascade layers
Training: 100 epochs, AdamW, lr=6e-4, bs=512, 8×4090
Inference: 2 DDIM steps, top-1 scoring, N_infer=20
Output: 8 waypoints / 4s
FPS: 45 (4090)

[nuScenes]
Backbone: ResNet-50
Perception: SparseDrive 编码器
Anchors: 18 条 K-Means 聚类轨迹
Diffusion Dec: 2 cascade layers
Training: 遵循 SparseDrive 训练 recipe

复现要点

  1. 锚点聚类质量至关重要:K-Means 在训练集全部 GT 轨迹上聚类,20 个中心即可覆盖主要驾驶模式(直行、左转、右转、变道等)
  2. 截断比例 50/1000:这是一个关键超参数。过大(如 100/1000)噪声太多,2 步难以去噪;过小(如 10/1000)锚点附近多样性不足
  3. 级联解码器参数共享:不同去噪步复用同一个解码器参数,避免参数膨胀
  4. 正样本分配:训练时为每个 GT 轨迹找最近锚点作正样本,类似 DETR 的匈牙利匹配但更简单
  5. 推理灵活性:$N_{\text{infer}}$ 可动态调整——简单场景用 10 条节省算力,复杂场景用 40 条提升覆盖率

性能优化方向

精度提升

  • 增加级联层数(2→4 可提升至 88.2,但参数和延迟增加)
  • 增加采样数(20→40 可微提升至 88.2)
  • 接入更强感知模块(如 SparseDrive-B 替代 Transfuser)

速度优化

  • 1 步去噪仍有 87.9 PDMS,可在延迟敏感场景使用
  • 减少采样数到 10(PDMS 84.9)换取更低延迟

研究启示

可迁移的思想

  • 截断扩散 = 先验 + 生成:当动作空间有结构化先验(如驾驶模式、抓取姿态)时,用锚点初始化扩散起点可大幅减少去噪步数,适用于机器人操控、导航等所有需要实时决策的场景
  • Transformer 替代 UNet 做去噪:在条件信息丰富(BEV 特征、结构化查询)的场景中,Transformer 解码器比 UNet 更高效且表达力更强
  • 少量锚点 > 大量锚点:扩散模型的连续生成能力使 20 个锚点覆盖的动作空间 > 8192 个固定锚点,因为每个锚点可”演化”出一族连续变体

方法局限

  • 依赖感知模块提供的 BEV/PV 特征和结构化查询——感知误差会传导到规划
  • 非反应式仿真(NAVSIM)的评估结果在闭环真实驾驶中可能大幅下降
  • 截断扩散依赖锚点质量——如果训练集不包含某些罕见驾驶模式,推理时也无法生成

技术影响与后续发展

DiffusionDrive 首次将扩散模型成功应用于实时端到端自动驾驶,证明了生成式规划的可行性。截断扩散策略作为通用加速技巧,可推广到其他需要实时生成的应用场景。

DiffusionDrive 发表后,端到端规划的两大路线竞争日趋激烈。生成派方面,DiffusionDriveV2 和基于 Flow Matching 的 GoalFlow 继续在去噪稳定性和 mode collapse 等问题上推进。但出人意料的是,地平线的 SparseDriveV2(arXiv 2026)从评分派的角度发起了反击——通过将轨迹分解为路径×速度的 26 万候选组合,配合粗到细层级评分,以 92.0 PDMS 反超了所有生成式方法,证明静态词表的天花板远高于此前的认知。这场”生成 vs 评分”的路线之争,连同正在兴起的 VLA 路线(DriveVLA-W0、AutoVLA 等),共同构成了端到端自动驾驶最前沿的技术版图。