这篇论文到底在干什么?
先给一个最直白的解释,读完这一段你就知道这篇论文在解决什么问题。
自动驾驶的轨迹规划可以理解为:给车看它周围的环境(图像、LiDAR 点云),让它决定接下来 4 秒怎么开。目前主流的方法是「生成式规划」——用扩散模型(DDPM、Flow Matching 等)从随机噪声开始,逐步去噪生成一条轨迹。
生成式规划的好处是多模态:同一个场景下,可能有多种合理的开法(让行、变道、缓行),扩散模型应该能覆盖这些不同的行驶模式。
但实际中遇到一个严重问题:模式坍缩(mode collapse)。不同随机噪声输入,经过扩散模型去噪后,输出的轨迹往往差不多。就像你让一个画家画 5 幅「秋天的树林」,结果 5 幅画几乎一模一样——都是差不多的色调、差不多的构图,看不出多样性。
上图左侧展示的就是模式坍缩:5 个不同的随机噪声 z1~z5,经过去噪解码器后,生成的 5 条轨迹几乎重叠在一起。右侧是加上去相关后的效果:5 条轨迹明显不同,有的直行、有的左转、有的右拐、有的缓行——这才是扩散模型应有的多模态能力。
TransDiffuser 的核心洞察:模式坍缩的根源不在于扩散模型本身,而在于条件特征不够丰富。当去噪解码器的条件输入(图像特征、LiDAR 特征、BEV 特征、历史轨迹嵌入等)的各维度之间存在冗余和耦合时,条件信号的信息量被压缩,导致不同噪声输入收敛到相同输出。解法就是——强制让不同特征维度去相关,使条件信号更丰富。
论文信息
- 标题:TransDiffuser: Diverse Trajectory Generation with Decorrelated Multi-modal Representation for End-to-end Autonomous Driving
- arXiv:2505.09315
- 作者:Xuefeng Jiang(中科院计算所),Yuan Ma(清华),Pengxiang Li(清华),Kun Zhan(理想汽车)等
- 一句话总结:用多模态表示去相关解决扩散轨迹生成中的模式坍缩,无需任何锚点/先验达到 SOTA(PDMS 94.85)
一、动机:为什么扩散轨迹生成会模式坍缩
1.1 端到端规划的三代范式
要理解 TransDiffuser 的贡献,先看端到端自动驾驶规划的三条技术路线:
| 范式 | 工作原理 | 代表工作 | 优点 | 缺点 |
|---|---|---|---|---|
| 确定性回归 | 网络直接输出一条轨迹 | Transfuser、UniAD | 简单直接 | 只能输出一条,无法应对多模态场景 |
| 打分式 Scoring | 从预定义轨迹词表中选最优 | VADv2、Hydra-MDP | 确定性高 | 依赖预定义锚点,泛化受限 |
| 生成式 Generative | 扩散/流匹配采样多候选 | DiffusionDrive、GoalFlow | 多模态好 | 模式坍缩严重 |
生成式规划本是用来解决「多模态」问题的——同一场景下,让行、变道、缓行都是合理选择。但实际中,不同随机噪声采样出的轨迹却高度相似,失去了多模态的优势。
1.2 现有方法怎么解决模式坍缩
| 方法 | 解决思路 | 手段 | 代价 |
|---|---|---|---|
| DiffusionDrive | 约束初始分布 | 用锚点高斯分布替代标准高斯噪声(截断扩散) | 需预定义轨迹词表,引入归纳偏置 |
| GoalFlow | 约束生成路径 | 用目标点稠密词表限制生成范围 | 需预计算场景先验,对未见场景泛化难 |
| TrajHF | 后处理筛选 | 偏好优化 + 拒绝采样,NEES 100 条候选 | 推理效率低,候选量大 |
这些方案有一个共同点:都引入了额外的先验信息(锚点轨迹、场景先验)。虽然它们确实缓解了坍缩,但在未见过的场景中,预定义的锚点或目标点可能不适用。
1.3 TransDiffuser 的不同视角
TransDiffuser 的出发点完全不同。它认为模式坍缩的根本原因不在于生成过程,而在于条件特征的信息瓶颈。如果把去噪解码器看作一个「画家」,那么条件特征就是给画家看的「参考照片」。当参考照片的各个区域(特征维度)高度相似时,画家画出来的画自然也都差不多。
所以 TransDiffuser 的解法是:在特征进入动作解码器之前,强制让不同特征维度去相关,使参考照片的各个区域携带更多独立信息。
二、架构总览:编码器-解码器扩散模型
TransDiffuser 的整体架构包含三个核心组件。下面这张架构图建议先看 30 秒,有个整体印象,然后我们逐块拆解:

上图是论文中的架构图,从左到右看数据流:
- 左侧输入:Camera(前视相机)和 LiDAR 点云,一起送入 Scene Encoder
- Scene Encoder:基于 Transfuser 骨干,多阶段 Transformer 跨模态融合,输出 BEV 特征
- Motion Encoder:编码历史轨迹和当前自车状态
- Denoising Decoder(中间核心):DDPM 扩散解码器,以编码特征为条件,从噪声逐步去噪生成动作
- 右侧输出:去噪后的动作序列,累加得到 8 个 waypoint 的轨迹
关键设计:Scene Encoder 在整个训练过程中被冻结(frozen),不参与梯度更新。消融实验显示,如果 Scene Encoder 参与全量训练,PDMS 反而从 94.9 下降到 93.5。论文分析认为,预训练的感知特征已经足够好,规划任务的微调反而可能「扭曲」感知表示。
2.1 问题形式化
模型输出 8 个 waypoint,覆盖未来 4 秒(采样频率 8Hz):
$$\mathbf{x} = \{s_1, s_2, \dots, s_T\}, \quad T=8$$其中 $s_\tau = (x_\tau, y_\tau)$ 是自车中心坐标系下的 waypoint 位置。但模型不直接预测 waypoint,而是预测动作序列(相邻帧的位移):
$$\hat{x}_\tau = s_\tau - s_{\tau-1}, \quad \hat{x}_1 = s_1$$这个变换叫动作投影(action space projection)。它的好处是缓解异方差性(heteroscedasticity)——waypoint 的绝对位置方差很大,但相邻帧之间的位移方差相对稳定。轨迹可以通过动作累加简单恢复,是可逆变换。
2.2 多模态特征组
编码器输出的所有特征汇聚为一个多模态特征组:
$$feat = \{F_{bev}, F_{img}, F_{LiDAR}, Emb_{action}, Emb_{ego}\}$$| 特征 | 来源 | 维度 | 含义 |
|---|---|---|---|
| $F_{bev}$ | Scene Encoder 融合输出 | BEV 空间 | 场景的鸟瞰图表示 |
| $F_{img}$ | 图像 CNN 分支 | 图像空间 | 前视相机的视觉特征 |
| $F_{LiDAR}$ | LiDAR CNN 分支 | 点云空间 | 激光雷达的几何特征 |
| $Emb_{action}$ | Action Encoder (MLP) | 动作空间 | 历史轨迹的运动嵌入 |
| $Emb_{ego}$ | Ego Status Encoder (MLP) | 状态空间 | 当前车速/加速度等状态 |
这 5 个特征通过去噪解码器中的多头交叉注意力顺序融合,作为去噪过程的条件信号。这就是去相关正则化要作用的对象——如果这 5 个特征的维度之间存在冗余,条件信号的信息量就会被压缩。
三、Scene Encoder:多模态感知融合
3.1 Transfuser 骨干
Scene Encoder 使用被 Nav-train 预训练权重冻结的 Transfuser 骨干。它处理两种传感器的输入:
| 传感器 | 输入 | 处理方式 | 输出特征 |
|---|---|---|---|
| 前视多视角相机 | RGB 图像序列 | CNN Backbone | $F_{img}$ |
| LiDAR 点云 | 3D 点云 | CNN Backbone | $F_{LiDAR}$ |
| 两者融合 | 上述两特征 | 多阶段 Transformer 跨模态注意力 | $F_{bev}$ |
3.2 多阶段融合 —— 关键设计
「多阶段融合」不是简单的「最后拼一起」,而是图像和 LiDAR 分支在每个阶段(stage)都通过 Transformer block 做一次跨模态交互。论文中 Figure 2 的架构图里,可以看到图像和 LiDAR 分支之间有多个交叉箭头——每经过一个 stage,两个分支就交换一次信息。
这种设计让多模态信息在多个尺度上相互增强:低层的几何细节(LiDAR 的边界信息)和高层的语义信息(图像的纹理信息)在不同阶段反复融合,比只在最后阶段做一次融合的效果好得多。
3.3 冻结 Scene Encoder 的启发
论文特别强调 Scene Encoder 从训练开始到结束都被冻结。消融实验显示:
| 设置 | PDMS | 说明 |
|---|---|---|
| Scene Encoder 冻结 | 94.9 | 推荐配置 |
| Scene Encoder 全量训练 | 93.5 | 反而下降 |
| 可训练参数量 | 62.8M / 251M (25%) | 大部分参数来自去噪解码器 |
这说明两件事:
- 预训练的感知特征已经足够好,无需在规划任务上微调
- 保持感知特征不变能防止规划任务「扭曲」感知表示
从工程角度看,冻结 Scene Encoder 也减少了约 75% 的可训练参数量,加速了训练。
四、Motion Encoder:运动上下文
Motion Encoder 由两个独立的 MLP 组成:
| 编码器 | 输入 | 输出 | 作用 |
|---|---|---|---|
| Action Encoder | 历史自车轨迹(多帧 waypoint) | $Emb_{action}$ | 告诉模型「车过去怎么开的」 |
| Ego Status Encoder | 当前自车状态(速度、加速度等) | $Emb_{ego}$ | 告诉模型「车现在什么状态」 |
这两个编码器都很轻量(MLP 几层而已),但提供了重要的运动上下文。没有它们,去噪解码器只知道「场景长什么样」,不知道「车过去几秒怎么运动、当前速度多少」。这些信息对预测未来轨迹至关重要——一个以 60km/h 行驶的车和一个静止的车,未来轨迹的分布完全不同。
五、Denoising Decoder:DDPM 轨迹生成
5.1 DDPM 基本原理
去噪解码器采用 Denoising Diffusion Probabilistic Model(DDPM) 框架。如果你还不熟悉扩散模型,下面用最直白的方式解释:
扩散模型分两步:
前向过程(加噪):拿一条真实轨迹,逐步往上加噪声,直到变成纯噪声。这个过程是固定的,不需要学。
$$\mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(\mathbf{0}, \mathbf{I})$$反向过程(去噪):从纯噪声出发,让模型一步步「预测噪声」并去掉,最终恢复出干净轨迹。模型学的是这个过程。
$$\mathbf{x}_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \epsilon_\theta(\mathbf{x}_t, t, feat)\right) + \sigma_t \mathbf{z}$$其中 $\epsilon_\theta$ 是去噪解码器网络,它的输入是:
- $\mathbf{x}_t$:当前步的噪声动作
- $t$:当前步数(0 到 T)
- $feat$:条件特征组(来自 Scene Encoder 和 Motion Encoder)
| 参数 | 含义 | 配置 |
|---|---|---|
| $T$ | 总去噪步数 | 10(训练和推理一致) |
| $\mathbf{x}_0$ | 原始动作序列 | 8 步 waypoint 的位移 |
| $\epsilon$ | 模型预测的噪声 | 与真实噪声做 MSE 损失 |
5.2 推理采样
推理时,从标准高斯噪声出发,经过 T=10 步去噪,生成动作序列,再累加得到未来 4 秒的 8 个 waypoint。模型生成 N=30 条候选轨迹,然后通过后处理过滤(基于运动学可行性),最终选择 PDMS 评分最高的轨迹。
对比其他方法的候选数量:
| 方法 | 候选轨迹数 | 依赖先验? |
|---|---|---|
| GoalFlow | 128 ~ 256 条 | 是(场景先验) |
| TrajHF | 100 条 | 否 |
| TransDiffuser | 30 条 | 否 |
| DiffusionDrive | 20 条 | 是(锚点先验) |
TransDiffuser 用更少的候选轨迹就达到了 SOTA,说明去相关机制让每条轨迹的质量更高,不需要靠量取胜。
六、核心创新:多模态表示去相关
这是整篇论文最核心的贡献。下面这张 SVG 图完整展示了去相关模块在整个架构中的位置和计算过程:
上图从上到下依次展示:
- Scene Encoder + Motion Encoder:编码多模态特征
- Denoising Decoder (DDPM):以多模态特征为条件去噪
- Decorrelation Module:插在去噪解码器和动作解码器之间,对融合后的多模态表示施加去相关正则化
6.1 问题定义
当特征组 $feat = \{F_{bev}, F_{img}, F_{LiDAR}, Emb_{action}, Emb_{ego}\}$ 被多头交叉注意力融合后,得到一个融合表示矩阵 $\mathbf{M} \in \mathbb{R}^{B \times d}$($B$ 是 batch size,$d$ 是特征维度)。
问题在于:$\mathbf{M}$ 的不同维度之间往往存在相关性。如果两个特征维度高度相关,那它们携带的信息基本是冗余的。在这种条件下,特征空间的有效维度远低于原始维度,条件信号的信息量下降,导致不同噪声输入收敛到相同输出。
6.2 去相关正则化
TransDiffuser 在每个训练 batch 中,对 $\mathbf{M}$ 施加一个去相关正则化项:
def decorrelation_loss(M):
# Step 1: 标准化每个维度(均值为 0,方差为 1)
mean = M.mean(dim=0, keepdim=True)
std = M.std(dim=0, keepdim=True)
M_norm = (M - mean) / sqrt(std**2 + 1e-8)
# Step 2: 计算相关矩阵 (d x d)
corr = M_norm.T @ M_norm
# Step 3: 去掉对角线元素(只惩罚非对角线)
corr_off = corr - diag(diag(corr))
# Step 4: 非对角线元素的均方值
return mean(corr_off**2) / batch_size
最终损失函数:
$$\mathcal{L} = \mathcal{L}_{diff} + \beta \cdot \mathcal{L}_{reg}$$其中 $\beta = 0.02$ 在整个训练过程中固定。
6.3 去相关正则化的直观理解
想象你有一个 5 维特征向量,但其中 3 个维度几乎完全相关——那它实际上只提供了 2 个有效维度的信息。去相关正则化强制让各个维度「各说各话」:每个维度都携带其他维度无法替代的独立信息。
为什么这能缓解模式坍缩? 因为条件特征的信息量增加了,不同的噪声输入在去噪过程中能「看到」更丰富的条件信号,从而生成不同的轨迹。就像给画家看 5 张不同的参考照片,他自然会画出 5 幅不同的画。
6.4 为什么去相关比对比学习更实用
| 方法 | 实现方式 | batch 需求 | 计算开销 |
|---|---|---|---|
| 对比学习(SimCLR 等) | 正负样本对拉近/推远 | 大 batch(4096+) | 高 |
| 去相关正则化 | 强制相关矩阵对角化 | 任意 batch | < 1‰ FLOPs |
与对比学习不同,去相关正则化不需要构造正负样本对,也没有大 batch 需求——它在每个 batch 内自监督地优化表示分布。论文指出,其计算量仅占前向传播的不到千分之一,几乎可以忽略。
6.5 去相关为什么有效:奇异值分解视角

上图是论文中的 Figure 3,展示了去相关前后相关矩阵和奇异值分布的变化。从左到右看:
| 指标 | 去相关前 | 去相关后 |
|---|---|---|
| 相关矩阵分布 | 对角线集中 + 大量非零非对角元 | 趋近对角矩阵 |
| 奇异值分布 | 能量集中在前几个主成分 | 能量分布更均匀 |
| 有效表示维度 | 低(信息冗余) | 高(信息丰富) |
| 生成轨迹多样性 | 低(模式坍缩) | 高 |
论文从**奇异值分解(SVD)**的角度解释了去相关的作用。去相关前,特征矩阵的奇异值能量集中在少数几个主成分上;去相关后,奇异值分布更均匀,有效维度更高。这意味着条件信号能更精细地指导去噪过程,让不同的噪声输入收敛到不同的轨迹。
七、模式坍缩的量化度量
为了定量评估模式坍缩程度,TransDiffuser 引入了一个多样性分数 D:
$$D = 1 - \frac{1}{N} \sum_{i=1}^{N} \frac{\text{Area}(\tau_i \cap \bigcup_{j=1}^{N} \tau_j)}{\text{Area}(\tau_i \cup \bigcup_{j=1}^{N} \tau_j)}$$其中 $\tau_i$ 是第 $i$ 条去噪轨迹,$N$ 是采样总数。$D$ 衡量各条轨迹与全部轨迹并集之间的 mIoU:
- $D=100$:完全多样,所有轨迹都互不相同
- $D=0$:完全坍缩,所有轨迹重合
这个指标最先在 DiffusionDrive 中被提出,TransDiffuser 沿用了它。
八、实验结果
8.1 NAVSIM 性能对比
| 方法 | 范式 | LiDAR | Anchor/先验 | PDMS |
|---|---|---|---|---|
| Transfuser | AR | ✓ | — | 83.9 |
| UniAD | AR | — | — | 83.4 |
| PARA-Drive | AR | ✓ | — | 84.0 |
| VADv2 | Scoring | — | ✓ | 80.9 |
| Hydra-MDP | Scoring | ✓ | ✓ | 91.3 |
| DiffusionDrive | Diffusion | ✓ | ✓ (锚点) | 88.1 |
| GoalFlow | Diffusion | ✓ | ✓ (场景先验) | 90.3 |
| TrajHF | Diffusion | ✓ | — | 94.0 |
| TransDiffuser | Diffusion | ✓ | — | 94.9 |
关键发现:TransDiffuser 是第一个完全不依赖任何锚点轨迹或场景先验仍能达到 SOTA 的扩散式规划方法。与 TrajHF(同样无先验)相比,PDMS 提升约 0.9 分,且 TrajHF 使用了更大的 ViT 图像编码器,而 TransDiffuser 仅用 ResNet-34。
8.2 多样性提升
| 方法 | 候选数 | 多样性 D |
|---|---|---|
| DiffusionDrive | 20 | 74(受益于锚点初始化) |
| TransDiffuser (w/o decorr) | 30 | 66 |
| TransDiffuser (w/ decorr) | 30 | 70 |
| TransDiffuser | 15 | 63 |
| TransDiffuser | 10 | 56 |
去相关正则化将多样性从 66 提升至 70(+4 分)。虽然仍比 DiffusionDrive 的 74 略低,但注意 DiffusionDrive 的多样性来自预定义的锚点分布(先验信息),而 TransDiffuser 单纯通过优化表示质量就接近了这个水平。
8.3 消融实验
超参敏感性
| 参数 | 配置范围 | 最优 | 结论 |
|---|---|---|---|
| 去噪步数 T | 5 / 10 / 20 | 10 | 更多步提升多样性,但 PDMS 饱和 |
| Batch size B | 32 / 64 / 128 | 64 | 太小去相关不稳定,太大无额外收益 |
| 权重 β | 0 / 0.02 / 0.05 / 0.1 | 0.02 | β=0 多样性最低(66→70),太大反而下降 |
组件消融
| 变体 | PDM Score | 多样性 D | 说明 |
|---|---|---|---|
| Baseline (30 candidates) | 94.9 | 70 | 完整方法 |
| w/o decorrelation | 94.3 | 66 | β=0,PDMS 和多样性均下降 |
| Inner decorrelation | 93.5 | 69 | 去相关放在去噪循环内部 |
| Fully-trained | 93.5 | 68 | Scene Encoder 参与训练 |
关键发现 1:去相关放在哪里? 去相关放在去噪循环「内部」(每个去噪步都做)的效果不如放在「外部」(去噪完整结束后、动作解码前)。论文分析认为:内部去相关可能干扰了去噪过程的稳定性,而外部去相关专注于优化最终表示的质量。
关键发现 2:冻结 Scene Encoder 反而不损性能。 这在工程实践上是好消息——预训练的感知特征足够通用,无需在规划任务上微调即可保持高质量。
8.4 跨方法泛化
论文将去相关模块应用到 Transfuser(自回归模型)上,发现 PDMS 从 78.0 提升到了 78.8。这说明去相关不限于扩散模型——它对任何使用多模态条件特征的规划方法都有帮助,具有通用性。
8.5 定性分析

上图是论文中的定性对比图,展示了 TransDiffuser 与 Transfuser 在单条轨迹生成上的差异。在简单场景中,TransDiffuser 能给出比 Transfuser 更积极的驾驶方案——更早加速、更平滑的路径。这是因为扩散模型的生成式过程比自回归的确定性输出更灵活。

上图展示了多模态轨迹的多样性。在复杂场景中,TransDiffuser 生成的候选轨迹能覆盖比 GoalFlow 更广的可行驾驶区域——去相关让条件表示更丰富,探索了更多可能性。注意图中不同颜色的轨迹代表不同的候选路径,覆盖了左转、直行、缓行等多种合理选择。
九、与同类方法的深度对比
| 维度 | DiffusionDrive | GoalFlow | TrajHF | TransDiffuser |
|---|---|---|---|---|
| 缓解模式坍缩 | 锚点高斯初始化 | 目标点词表约束 | 偏好优化 | 表示去相关 |
| 依赖先验 | ✓ (锚点) | ✓ (场景先验) | — | — |
| 可训练参数量 | — | — | — | 62.8M / 251M |
| 候选数 | 20 | 128~256 | 100 | 30 |
| 训练时长 | — | — | — | 2h @4xH20 |
| PDMS (ResNet-34) | 88.1 | 90.3 | 94.0 | 94.9 |
十、总结与个人思考
贡献总结
- 编码器-解码器扩散规划架构:用冻结的 Transfuser 骨干编码场景,用 DDPM 解码器生成多候选轨迹
- 多模态表示去相关机制:首个在端到端驾驶规划中利用表示去相关缓解模式坍缩的工作,无需任何锚点或先验
- SOTA 性能:PDMS 94.85(ResNet-34 + LiDAR),超越了同期依赖锚点/先验的方法
- 通用性:去相关模块可插拔,对自回归模型同样有效
个人思考
1. 归因视角的转变是最优雅的贡献。 之前的工作都把模式坍缩归咎于「扩散模型本身容易坍缩」,因此解法要么是约束初始分布(DiffusionDrive 的截断扩散),要么是约束生成路径(GoalFlow 的目标点限制)。TransDiffuser 的攻击点完全不同——它认为模式坍缩的核心原因是「条件信息不够丰富」,而不是「生成过程不够受控」。这个视角转变在方法论上非常优雅:不需要动采样过程,只需要优化表示质量。
2. 去相关正则化的工程价值被低估了。 现在多模态融合已经成为自动驾驶规划的标配,但很少有人关注「多模态特征融合后的表示质量」问题。去相关正则化的极低开销(< 1‰ FLOPs)和即插即用特性,使其非常适合作为任何多模态融合方法的标配组件——无论是扩散模型还是自回归模型。论文将其移植到 Transfuser 上验证了这一点。
3. 冻结 Scene Encoder 的反直觉发现。 虽然论文提到「full training 反而降分」可能有个案因素,但这至少在实践上确认了:感知预训练的特征在规划任务上已是强特征,过度适配可能对多任务泛化反而有害。这对于 VLA 模型的训练策略也有参考价值——不是所有模块都需要随任务微调。
4. 两个不足。 第一,多样性 D=70 相比于 DiffusionDrive 的 74 仍有差距,说明去相关虽然有效但还未完全消除与锚点方法的多样性鸿沟。如果在去相关的基础上再增加一个「多样性奖励」项,可能会进一步提升多样性。第二,论文仅在 NAVSIM 开环评测下验证,缺乏闭环仿真测试和多场景泛化分析,实际的驾驶安全性还需更多验证。
📖 论文精读系列。本文基于 arXiv:2505.09315v2 撰写。