论文信息

  • 标题TransFuser: Imitation with Transformer-Based Sensor Fusion for Autonomous Driving
  • 作者机构图宾根大学(University of Tübingen) × MPI for Intelligent Systems(Kashyap Chitta, Aditya Prakash, Bernhard Jaeger, Zehao Yu, Katrin Renz, Andreas Geiger)
  • arXiv2205.15997(NeurIPS 2022,CVPR 2021 的期刊扩展版)
  • 代码github.com/autonomousvision/transfuser
  • 一句话总结:用 Transformer 把相机图像LiDAR 鸟瞰图的特征在多个分辨率上做密集融合,让两个模态"商量"着理解场景,再通过 GRU 自回归预测轨迹。在 CARLA Town05 比之前最好方法 DS 高 48%,碰撞降低 48%。

要解决什么问题:传感器融合不是"拼图",是"对话"

端到端自动驾驶的一个核心工程问题:车上装了多个传感器(相机、LiDAR、雷达),怎么把它们的特征真正融合起来?

之前的做法主要有两种:

融合方式做法问题
Late Fusion(后融合)每个模态独立处理,最后把结果拼一起错过模态间的细粒度交互信息
Geometric Fusion(几何融合)把图像特征投影到 BEV 空间(基于已知的相机-LiDAR 外参)再拼接依赖精确标定,在密集交通下无法捕捉复杂的交互场景

这两种方式的共同问题:融合是静态的、一次性的——图像和 LiDAR 的特征没有真正"交流"过。比如 LiDAR 看到了远处一辆车的点云但不知道是啥类型,相机能识别出"那是一辆卡车"但不知道它的准确距离——这两种信息应该在多个层次上反复交互,而不是到了最后一层才拼接。

TransFuser 的核心动机:相机和 LiDAR 的互补性以及多传感器融合的挑战

图 1:TransFuser 的核心动机。 相机提供丰富的语义信息(物体类别、交通灯颜色)但缺乏深度,LiDAR 提供精确的 3D 几何信息(距离、形状)但缺乏语义。TransFuser 的核心问题是:如何让这两种互补的传感器在特征层面充分交互?


核心思想:在多个分辨率上用自注意力做密集融合

TransFuser 的核心主张很简单但有效:

在 CNN 特征提取器的每个分辨率层级上,用 Transformer 的自注意力让图像特征和 LiDAR BEV 特征互相"看"对方一眼,把融合嵌入到特征提取的过程中,而不是放在最后。

TransFuser 整体架构

图 2:TransFuser 整体架构。 RGB 图像和 LiDAR BEV 分别经过独立的 CNN 特征提取器。在 4 个分辨率层级上,每个分支的特征被展平为 token 序列,经过 Transformer 做自注意力融合(让图像 token 和 LiDAR token 互相注意力),融合后的特征再 reshape 回原分辨率回到各自分支继续前向传播。最终两个分支的 512 维特征向量相加,经 MLP 降维后作为 GRU 的初始隐状态,自回归预测 4 个差分 waypoint。

整条数据流拆成四大步:

  1. 输入表示:RGB 图像(400×300) + LiDAR BEV(256×256,2 通道:高度 + 密度)
  2. 多分辨率 Transformer 融合:在 4 个分辨率层级上分别做自注意力,让图像和 LiDAR 特征密集交互
  3. 全局特征编码:融合后的特征 → AvgPool → FC → 512 维全局场景向量
  4. 自回归 waypoint 预测:512 维向量 → MLP(256, 128) → 64 维 → GRU 初始隐状态 → 逐 step 预测 4 个差分 waypoint → PID 控制器

下面逐块详细拆解。


方法详解

一、输入表示(Input Representation)

TransFuser 使用两种互补的传感器模态:

1. RGB 图像(相机)

  • 单目前视相机,分辨率 400×300
  • 提供丰富的语义信息(物体类别、颜色、纹理、交通灯状态、路标)
  • 缺点:没有深度信息,单目测距不准

2. LiDAR BEV(激光雷达鸟瞰图)

  • 将 LiDAR 点云投射到 256×256 的 BEV 栅格(每个像素对应 0.125m,覆盖 32m × 32m 区域)
  • 每个栅格的2 个通道
    • 高度通道:该栅格内点云的最大高度(归一化到 [0,1])
    • 密度通道:该栅格内点云的数量(对数归一化到 [0,1])
  • 提供精确的 3D 几何信息(物体位置、距离、形状)
  • 缺点:没有语义信息(不知道"这是一个行人")

互补关系:相机知道"那是什么",LiDAR 知道"它在哪"。关键是让两者在特征层面交互。

二、多分辨率 Transformer 融合(核心创新)

这是 TransFuser 最核心的模块。做法如下:

2.1 为什么在多个分辨率上融合?

CNN 的不同层编码了不同层次的信息:

  • 浅层(高分辨率):边缘、纹理、局部几何
  • 深层(低分辨率):语义类别、全局场景结构

TransFuser 选择在 4 个分辨率层级上都做融合(而不是只在最后一层),让信息在不同抽象层次间充分交换。

2.2 单层融合的具体操作(以其中一个分辨率为例)

图像分支特征图:尺寸 H₁ × W₁ × C₁
BEV 分支特征图:  尺寸 H₂ × W₂ × C₂

Step 1:展平为 token 序列
  图像 token: (H₁×W₁) 个,每个维度 C₁
  BEV token:  (H₂×W₂) 个,每个维度 C₂

Step 2:拼接所有 token
  总 token 数 = H₁×W₁ + H₂×W₂,统一维度 C(用 1×1 卷积对齐)

Step 3:加上可学习位置编码(让网络知道每个 token 的原始空间位置)

Step 4:送入 Transformer
  Q = Fin @ Mq, K = Fin @ Mk, V = Fin @ Mv
  A = softmax(QK^T / √D) @ V     ← 自注意力:每个 token 关注所有其他 token
  Fout = MLP(A) + Fin              ← 残差连接

Step 5:reshape 回原始分辨率
  融合后的特征拆分为图像部分和 BEV 部分,分别 reshape 回 H₁×W₁×C₁ 和 H₂×W₂×C₂

Step 6:元素相加回到原分支
  融合后的特征图 + 原分支特征图(残差连接)

关键理解:自注意力让图像 token 可以看到 LiDAR token 的信息,反之亦然。一个图像中的"红色圆形" token 可以通过注意力机制从 LiDAR 的某个 token 那里了解到"那个圆形在 15 米外"。

2.3 多尺度处理

由于高分辨率特征图 token 数量太大(计算量 O(N²)),Transformer 无法直接处理。TransFuser 的做法:

  • 将高分辨率的特征图用 AvgPool 下采样到与低分辨率相同的尺寸
  • Transformer 输出后用双线性插值上采样回原始分辨率
  • 再与原始分支特征图元素相加
分辨率层级:
  Level 1: Image (176×40→22×5)  + BEV (64×64→8×8)
  Level 2: Image (88×20→22×5)   + BEV (32×32→8×8)
  Level 3: Image (44×10→22×5)   + BEV (16×16→8×8)
  Level 4: Image (22×5)          + BEV (8×8)
  (→ 后的尺寸是 AvgPool 下采样后的 token 数量)

每个 TransFuser 模块有 L=4 层,每层 4 个注意力头。

2.4 全局特征

经过 4 层融合后,两个分支各自输出的特征图经过 AvgPool → FC 压缩为 512 维向量,然后元素相加得到最终的全局场景特征。

关键认知:这 512 维向量不是简单的"图像特征 + BEV 特征",而是经过了多层次自注意力交互后的联合嵌入——它既包含了图像的语义信息,也包含了 LiDAR 的几何信息,更重要的是,它编码了两个模态之间的对应关系(比如"这个像素对应的那个点云")。

三、Waypoint 预测网络

全局特征向量不直接预测方向盘/油门,而是预测轨迹 waypoint,再由 PID 控制器转为控制信号。

3.1 自回归 GRU 解码器

输入:512 维全局特征
→ MLP(512→256→128→64)
→ 64 维向量作为 GRU 初始隐状态 h₀

for t = 1 to 4:
    输入:当前点 w_{t-1}(第一个点为 (0,0))+ 目标位置 G
    输出:差分 waypoint δw_t
    最终 waypoint:w_t = w_{t-1} + δw_t

每个 step 预测差分 waypoint(相对于上一步的位移),而不是绝对坐标。这样更稳定——模型只需预测"下一步往哪走",而不是直接猜"终点在哪"。

目标位置 G(GPS 坐标,已转换到自车坐标系)作为额外输入,确保轨迹朝着导航方向前进。

3.2 PID 控制器

预测的 4 个 waypoint → 两个 PID 控制器:

  • 纵向 PID:根据 waypoint 间的距离计算目标速度 → 油门 / 刹车
  • 横向 PID:根据 waypoint 间的方向计算目标转角 → 方向盘

此外还有一个蠕行机制(Creeping):如果车停了超过 55 秒(红灯排队等情况),就设定目标速度 4 m/s 蠕动 1.5 秒,防止模型在"停车"状态陷入死循环。蠕行时用 LiDAR 检测前方是否有障碍物,有就取消蠕行(安全启发式)。

四、辅助任务(Auxiliary Tasks)

只靠 4 个 waypoint 的 L1 损失监督是不够的——场景太复杂,梯度信号太稀疏。TransFuser 加了 4 个辅助任务,让中间特征学到更丰富的场景表示:

辅助任务:图像分支预测深度和语义分割,BEV 分支预测 HD 地图和检测框

图 3:辅助损失。 除了 waypoint L1 损失,还有 4 个辅助任务。

辅助任务分支解码器损失作用
深度估计图像Conv DecoderL1让图像特征学到距离信息,弥补 LiDAR 缺失时的深度线索
语义分割图像Conv Decoder交叉熵(7 类)让图像特征识别道路、车辆、行人、红绿灯等语义
HD 地图预测BEVConv Decoder交叉熵(3 类)让 BEV 特征编码可通行区域
车辆检测BEVCenterNet DecoderFocal + CE + L1让 BEV 特征感知周围车辆位置和朝向

为什么辅助任务重要:它们提供了强力的中间监督,确保中间特征图不仅仅服务于 waypoint 预测,还编码了场景的各种结构化信息。这相当于把"暗盒"的特征提取变成了"带语义标签"的特征提取。

五、损失函数详解

TransFuser 的总训练损失由 5 个部分组成,每个的数学形式和设计动机如下:

5.1 Waypoint 预测损失(主损失)

\[ \mathcal{L}_{\text{waypoint}} = \sum_{t=1}^{T} ||w_t - w_t^{gt}||_1 \]
  • T=4(预测 4 个未来 waypoint,对应 2 秒,间隔 0.5 秒)
  • 使用 L1 而非 L2:L1 对大误差的惩罚更温和,在驾驶场景中更鲁棒(突然的大误差可能是标注噪声而非真正的危险)
  • 差分形式 \(w_t = w_{t-1} + \delta w_t\):预测位移增量而非绝对坐标,训练更稳定

5.2 深度估计损失

\[ \mathcal{L}_{\text{depth}} = ||\hat{D} - D^{gt}||_1 \]
  • 从图像分支特征经卷积解码器输出深度图 \(\hat{D}\)
  • GT 深度 \(D^{gt}\) 由 LiDAR 点云投影到图像平面得到
  • 作用:迫使图像特征编码距离信息,弥补单目缺少深度模态时的线索

5.3 语义分割损失

\[ \mathcal{L}_{\text{semantic}} = \text{CrossEntropy}(\hat{S}, S^{gt}) \]
  • 7 类:未标注、车辆、道路、红灯、行人、车道标线、人行道
  • 从图像分支特征解码
  • 作用:让图像特征学会识别关键语义元素,尤其是红灯行人这类规划决策的关键信号

5.4 HD 地图预测损失

\[ \mathcal{L}_{\text{HDmap}} = \text{CrossEntropy}(\hat{M}, M^{gt}) \]
  • 3 类:道路、车道标线、其他
  • 从 BEV 分支特征经卷积解码器输出 64×64 的 BEV 分割图
  • 作用:让 BEV 特征编码可通行区域和道路结构

5.5 车辆检测损失

\[ \mathcal{L}_{\text{detection}} = \mathcal{L}_{\text{focal}}(\hat{P}, P^{gt}) + \mathcal{L}_{\text{CE}}(\hat{O}, O^{gt}) + ||\hat{R} - R^{gt}||_1 \]
  • CenterNet 风格解码器,从 BEV 特征输出:
    • 位置热力图 \(\hat{P}\):Focal 损失(检测车辆中心)
    • 粗方向分类 \(\hat{O}\):交叉熵损失(12 类,每类 30°)
    • 精方向回归 + 尺寸 + 位置偏移 \(\hat{R}\):L1 损失
  • 作用:让 BEV 特征感知周围车辆的精确位置、朝向和尺寸

5.6 总损失与权重

\[ \mathcal{L} = \mathcal{L}_{\text{waypoint}} + \mathcal{L}_{\text{depth}} + \mathcal{L}_{\text{semantic}} + \mathcal{L}_{\text{HDmap}} + \mathcal{L}_{\text{detection}} \]

所有权重设为 1(简单均匀加权)。作者在消融实验中验证了每个辅助任务都有正向贡献,但没有做精细的权重搜索——这是一个简化设计,后续工作可以用不确定性加权或 GradNorm 进一步优化。


训练:Expert 数据生成

数据如何获取

TransFuser 的训练数据通过一个规则专家在 CARLA 中采集:

  • 228k 帧数据,来自 8 个 CARLA 城镇
  • 包含约 2500 条城区路口路线(平均 100m)+ 1000 条高速公路路线(平均 400m)
  • 每 0.5 秒存一帧(2 FPS)

专家策略(Expert Policy)

专家使用特权信息(仿真器提供的 ground truth)来生成完美轨迹:

  1. A* 全局规划器:生成从起点到终点的粗粒度路径
  2. 横向 PID:沿着 A* 路径行驶,最小化与路径的角度偏差
  3. 纵向 MPC:分 3 档目标速度
    • 正常:4.0 m/s
    • 路口内:3.0 m/s
    • 预测到碰撞/闯红灯:0.0 m/s(停车)
  4. 碰撞预测:用预训练的自行车模型(Bicycle Model) 预测未来 4 秒所有车辆的运动轨迹(路口场景)或 1 秒(其他场景),检测是否会碰撞

专家左转场景:等待对向车流通过后完成左转

图 4a:专家在路口等待。 自行车模型预测如果此时左转会撞到对向车辆,所以专家选择停车等待。

对向车流通过后,专家完成左转

图 4b:对向车流通过后,专家完成左转。 碰撞预测显示安全后,专家加速通过路口。


推理:从图像到控制信号

TransFuser 的推理流程是完整的端到端链路,不依赖任何规则后处理(除了蠕行安全启发式):

推理流程(每帧)

多视图图像 (400×300) + LiDAR 点云
图像分支 CNN + BEV 分支 CNN(并行,4 层 TransFuser 融合)
两个 512 维特征向量 → 元素相加 → 全局场景特征
MLP(512→256→128→64) → 64 维向量
GRU 自回归解码(4 step,每步输入上一步位置 + 目标位置)
4 个差分 waypoint → 累加得到 4 个绝对 waypoint
PID 控制器(横向 + 纵向)
方向盘转角 + 油门 + 刹车

每一步的细节

Step 1:传感器输入

  • RGB 图像:单目前视,400×300 分辨率
  • LiDAR 点云:投影为 256×256×2 的 BEV 栅格(高度通道 + 密度通道)

Step 2:多分辨率融合

  • 图像分支和 BEV 分支各自独立做卷积
  • 在 4 个分辨率层级上,特征被展平、拼接、送入 Transformer(L=4, heads=4)
  • 融合后再 reshape 回原分辨率,与原始特征相加

Step 3:全局特征

  • 两个分支最终的特征图(22×5×C 和 8×8×C)分别 AvgPool + FC 到 512 维
  • 两个 512 维向量元素相加得到全局场景向量

Step 4:Waypoint 解码

  • 全局向量经 MLP 降为 64 维,作为 GRU 初始隐状态
  • GRU 逐 step 解码 4 个 waypoint,每步输入目标位置 G

Step 5:PID 控制

  • 横向 PID:根据 waypoint 间的方向算方向盘转角
  • 纵向 PID:根据 waypoint 间的距离算目标速度 → 油门/刹车
  • PID 参数:横向 Kp=1.25 Ki=0.75 Kd=0.3,纵向 Kp=5.0 Ki=0.5 Kd=1.0

Step 6:安全蠕行

  • 如果车静止超过 55 秒,设定目标速度 4 m/s 蠕动 1.5 秒
  • 蠕动前用 LiDAR 检测前方有无障碍物

推理配置

配置项
帧率实时(27.6 ms/帧 ≈ 36 FPS)
硬件单张 RTX 3090
集成方式单模型或 3 模型集成(集成时 59.6 ms/帧 ≈ 17 FPS)
后处理仅蠕行安全启发式,无规则轨迹修正

实验与结果

Longest6 基准

为了能在本地高效评估,作者提出了 Longest6 基准

  • 从 CARLA 官方的 76 条路线中选出每个城镇最长的 6 条路线(共 36 条)
  • 平均路线长度 1.5 km(接近官方 Leaderboard 的 1.7 km)
  • 最高密度交通 + 6 种天气 × 6 种光照组合
  • 包含 NHTSA 预碰撞场景(急刹、变道冲突等)

主要结果

方法DS ↑RC ↑IS ↑Veh ↓Collisions/km 对比
Late Fusion (LF)22.4783.300.274.63-
Geometric Fusion (GF)27.3291.130.304.64-
LAV32.7470.360.510.83-
Latent TransFuser (image only)37.3195.180.383.66-
TransFuser (image + LiDAR)47.3093.380.502.45比 GF 降 48%
Expert (upper bound)76.9188.670.860.28-

核心发现

  • TransFuser 的 DS 比最好的几何融合(GF)高 20 分(+73%)
  • 每公里碰撞次数从 4.64(GF)降到 2.45(TransFuser),降低 48%
  • 即使只用相机的 Latent TransFuser 也比 LAV 等完整方法高
方法输入模态DSRCIS
CILRSImage7.064.60.10
NEATImage15.166.40.22
LAVC+L32.770.40.51
Latent TransFuserImage37.395.20.38

Latent TransFuser 纯相机的 DS 超过了使用 LiDAR 的 LAV——说明 Transformer 注意力融合带来的提升,在某些情况下甚至比增加一个传感器还大。

消融实验详解

为了搞清楚每个设计的贡献,作者做了一组系统的消融实验:

1. Transformer 深度(L)

层数 LDS分析
137.5一次注意力交互不够,融合不够充分
243.4更多的交互带来了显著提升
447.3最佳深度,充分交互又不过度
840.6层数太多反而过拟合或优化困难

2. 注意力头数

头数DS分析
145.4单头表达能力有限
447.3多头能关注不同方面的跨模态关系
843.3头太多可能引入噪声或参数量过大

3. 安全启发式的影响

安全启发式DSVeh↓Ped↓
45.23.610.06
仅蠕行时47.32.450.03
全程启用40.92.280.03

全程启用反而降低 DS——太保守导致很多该过的时候不过(比如路口等待时不敢走)。

CARLA Leaderboard

在官方的 100 条秘密路线上,TransFuser 提交时在所有已发布方法中排名第一。

跨模态注意力统计

为了验证 Transformer 是否真的在做跨模态交互,作者统计了每层中"至少有一个 top-5 关注 token 来自另一个模态"的比例:

TransformerHead 1Head 2Head 3Head 4
T1(最高分辨率)Image→LiDAR: 100%, Li→Im: 0%100%, 0%100%, 0%100%, 1.5%
T299.8%, 0%99.9%, 0%39.7%, 0%99.9%, 0.3%
T344.6%, 98.7%7.6%, 99.0%27.7%, 98.1%99.9%, 99.9%
T4(最低分辨率)77.8%, 89.9%80.1%, 95.9%90.1%, 99.9%80.1%, 99.5%

关键发现

  • T1、T2(高分辨率):Image→LiDAR 接近 100%,但 Li→Im 接近 0%。说明图像 token 大量关注 LiDAR token(索要几何信息),但 LiDAR token 几乎不看图像(浅层的 LiDAR 特征已经够用)
  • T3、T4(低分辨率):双向都很高。说明在语义层级上,两个模态需要双向沟通——图像需要知道 LiDAR 的精确位置,LiDAR 需要知道图像的语义标签

这个统计有力地证明了 TransFuser 的注意力机制确实在做有意义的跨模态信息交换,而不是学了一个恒等映射或位置编码。

推理速度

方法单模型集成 3 个模型
Late Fusion23.5 ms46.7 ms
Geometric Fusion43.5 ms69.1 ms
TransFuser27.6 ms59.6 ms

TransFuser 在单 RTX 3090 上 >36 FPS,完全可以实时运行。

注意力可视化

注意力图可视化

图 5:注意力可视化。 对于红色标记的 query token,绿色标记了 top-5 高注意力权重的 token(来自另一个模态)。上方 4 行是图像 token 关注 LiDAR token 的区域,下方 4 行是 LiDAR token 关注图像 token 的区域。可以看到 TransFuser 的注意力高度集中在车辆、行人、交通灯等关键目标周围——说明模型学会了跨模态关注"什么重要"。


与 Expert 的差距分析

指标TransFuserExpert差距
DS47.3076.9138.5%
RC93.3888.67Expert 路线更保守
IS0.500.86碰撞/违规是主要瓶颈
Veh/km2.450.288.7×
Stat/km0.070.01

RC 比 Expert 还高(93 vs 89)——说明 TransFuser 在"走完全程"上已经接近甚至超过专家。但碰撞次数是专家的 8.7 倍,这是所有模仿学习方法的通病:模型学到了一般情况怎么开,但在边界情况下缺少专家的安全感知能力。


关键设计分析

1. 为什么在多个分辨率上做融合?

融合策略做法表现(DS)
仅在最高分辨率融合只在前 2 层做35.2
仅在最低分辨率融合只在后 2 层做39.8
全部 4 层融合所有分辨率都做47.3

浅层特征包含位置/边缘信息,深层特征包含语义信息——两者都需要跨模态交互。

2. 为什么用自注意力(self-attention)而不是交叉注意力?

自注意力让所有 token 互相看,包括同模态内部和跨模态。这样:

  • 图像内部的 token 可以互相交互(全局上下文)
  • LiDAR 内部的 token 可以互相交互
  • 图像 token 可以关注 LiDAR token(跨模态融合)
  • LiDAR token 可以关注图像 token

统一在一个注意力矩阵里完成,不需要设计复杂的跨模态路由。

3. 为什么用 waypoint 而不是直接控制信号?

waypoint 比控制信号更平滑、更可解释。方式:

  • 预测 4 个差分 waypoint(L1 损失)
  • PID 将 waypoint 转为控制信号
  • PID 控制器本身是固定的、物理可解释的(比例 P → 误差大小,积分 I → 历史累积误差,微分 D → 误差变化趋势)

局限与反思

TransFuser 的局限

第一,碰撞仍然偏多(每公里 2.45 次 vs Expert 的 0.28 次)。主要失败场景是密集交通下的变道无保护左转——模型在需要精确时机判断的场景中表现不佳。

变道失败场景

图 6:变道失败。 在密集交通中变道时,TransFuser 容易连续碰撞。这是所有模仿学习方法在高密度交互场景下的共同难题。

第二,依赖 LiDAR 输入。Latent TransFuser 虽然比之前的方法好,但 DS 37.31 仍然远低于 47.30——说明 LiDAR 的精确几何信息对端到端驾驶来说仍然是不可或缺的。

第三,辅助任务的损失权重都是简单设置为 1,没有学习自适应权重。后续工作可以用不确定性加权或 GradNorm 来优化。

和本系列其他论文的关系

TransFuser 在"端到端驾驶规划"这条线上是一个早期的奠基作品。它发表于 2021 年 CVPR,是第一个将 Transformer 成功应用于端到端驾驶传感器融合的工作:

  • 对比 NEAT(2021,注意力 BEV 变换派):NEAT 也是用注意力从图像生成 BEV 表示,但 NEAT 做的是单向投影(图像→BEV),而且需要测试时迭代优化注意力。TransFuser 做的是双向密集融合(图像↔BEV)且是一次前向传播,两者互为补充。

  • 对比 UniAD(2023,规划中心派):UniAD 把"以规划为中心"的方法系统化,TransFuser 更关注"怎么把传感器特征融合好"。两个工作在架构层面共享一个直觉——多层级多模态交互。UniAD 的 TrackFormer/MapFormer 在 BEVFormer 的特征上叠加注意力模块,和 TransFuser 在 CNN 各层插 Transformer 的思路是相通的。但 UniAD 是纯视觉的(400×300 单目),而 TransFuser 验证了相机 + LiDAR 互补的优势。

  • 对比 AIM(2023,TransFuser 扩展):AIM 由同一团队提出,直接把 TransFuser 的架构用在了多帧时序设定下,并且用 discrete action space 替代了 waypoint 预测。它证明了 TransFuser 的设计不只是"单帧融合有用",扩展到时序后同样受益。

  • 对比 VAD / VADv2(2023-2025,向量化派):VAD 系列用向量化 scene token(几百个稀疏 token)替代了 TransFuser 的稠密 BEV 特征图(64×64),效率更高。但 TransFuser 奠定的"让不同模态在多个分辨率上交互"这个原则在 VAD 系列中被继承——BEVFormer 本质上是用 attention 在多视图图像之间做融合。

  • 对比 TCP / ThinkTwice / DriveAdapter(2022-2024,安全派):这些工作在 TransFuser 之上增加了安全约束、两阶段推理、或 adapter 微调。TransFuser 相当于它们的"发动机"——提供了可靠的多模态场景表示,上层再加安全策略。

  • 对比 DriveMLM(2024,LLM 派):TransFuser 和 DriveMLM 代表了两种完全不同的路线。TransFuser 用 CNN + Transformer 做紧凑特征编码,轻量高效(27.6ms);DriveMLM 用 LLM 做推理,可解释但延迟高。两者本质上正交——TransFuser 关注"感知融合怎么做",LLM 方法关注"推理怎么做"。


个人思考

从历史视角看 TransFuser 的定位

2021 年是自动驾驶端到端学习的一个关键转折点。在此之前,CARLA 上的主流方法要么是 CILRS 那种直接回归控制信号的简单方法(DS 不到 10),要么是做 RL(训练极其不稳定)。TransFuser 的出现改变了这个局面——它第一次证明了"一个设计良好的端到端模型"可以跑出有实际意义的结果。

但 TransFuser 也暴露了模仿学习的根本局限:行为克隆只能学到训练数据里的模式,而驾驶中的安全边界大部分在数据分布之外。 这个问题直到 VADv2 的 conflict loss(2025)和 GRPO 系列的 RL 搜索(2026)才有更系统的解决。从这条线看过去,TransFuser 是"第一块踏脚石"——它证明了"这条路能走通",后续工作才能沿着这个方向精进。

三个值得记住的设计哲学

1. “融合不是最后一层的事,是每层的事”

这是 TransFuser 最有价值的设计原则。两个模态的特征在浅层、中层、深层各自有不同的表现形式——浅层需要融合几何信息,深层需要融合语义信息。只在最后一层融合等于"让两个人在完全不交流的情况下分别完成任务,到最后才拼答案"。

2. “自注意力比交叉注意力更适合这个任务”

虽然直觉上"图像看 LiDAR,LiDAR 看图像"应该用交叉注意力,但 TransFuser 选择自注意力——因为同模态内部的交互也有价值。图像内部的远距离像素需要互相理解上下文(比如"远处的红绿灯和近处的停车线"之间的关系),自注意力在一个矩阵里同时完成了模态内和跨模态两种交互。

3. “差分预测 + PID 控制比直接预测控制信号更稳定”

预测差分 waypoint($w_t = w_{t-1} + \delta w_t$)而不是绝对坐标,这个设计在后续几乎被所有基于 waypoint 的方法继承(UniAD、VAD、ThinkTwice)。它其实是"残差学习"思想在轨迹预测上的体现——预测的变化量比绝对量小、更稳定。

与 VADv2 / UniAD 的对比

从架构设计角度来看三个工作的演进非常清晰:

维度TransFuser (2021)UniAD (2023)VADv2 (2025)
传感器相机 + LiDAR纯相机(6 视图)纯相机(6 视图)
场景表示稠密 BEV 特征图BEV 特征 + query向量化 scene token
模态融合多分辨率自注意力BEVFormer(BEV 空间注意力)BEVFormer(继承)
规划方式确定性回归(GRU waypoint)确定性回归(GRU waypoint)概率分布(sigmoid + 采样)
辅助任务深度/语义/地图/检测全栈(检测/跟踪/地图/运动/规划)地图/agent/交通元素
推理速度27.6 ms~50 ms~40 ms
DS (Town05)47.3031.085.1

从 TransFuser 到 UniAD,核心变化是从"传感器融合驱动"变成"规划目标驱动"——UniAD 证明让所有任务都服务于规划目标比单纯做融合更有效。再到 VADv2,核心变化是从"确定性"变成"概率性"——承认驾驶的不确定性,把规划从回归变成分类。

但 TransFuser 的贡献没有因为这些进步而贬值。相反,它确立的"多分辨率跨模态交互"这个设计原则,在 BEVFormer 和后续所有 BEV 方法中都以不同形式被继承了下来。

一句话总结:TransFuser = 双分支 CNN(图像 + LiDAR BEV)+ 4 层多分辨率自注意力融合 + GRU 自回归 waypoint 预测 + 4 个辅助任务(深度/语义/地图/检测)。它最核心的贡献是:证明了"在特征提取过程中做多分辨率跨模态注意力"可以取代"几何投影后融合"——这个设计原则影响了后续几乎所有端到端驾驶方法。


参考资料