1. 从“拼积木”到“一体化”:为什么自动驾驶需要UniAD这样的新范式?

如果你关注过自动驾驶技术的发展,可能会发现一个有趣的现象:早期的方案,很像是在“拼积木”。一个典型的自动驾驶系统,会包含感知(看见周围有什么)、预测(判断它们接下来会怎么动)、规划(决定我该怎么走)等多个独立的模块。每个模块都由一个独立的、高度复杂的模型负责,比如用一个模型做目标检测,另一个模型做轨迹预测,再一个模型做路径规划。这些模块像流水线一样串联起来,前一个模块的输出,作为后一个模块的输入。

这种“模块化”设计听起来很合理,分工明确,也便于开发和调试。但我在实际工作中,和很多同行交流时都发现,它存在一个根本性的“阿喀琉斯之踵”:误差累积。想象一下,感知模块识别车辆的位置有0.5米的偏差,这个偏差会毫无保留地传递给预测模块。预测模块基于这个有偏差的位置去预测未来轨迹,可能会产生更大的不确定性。最后,规划模块拿到一个充满“噪声”和“误差”的世界状态,即使它再聪明,也很难规划出一条既安全又舒适的路径。这就像用一把刻度不准的尺子去量布,再用量出的尺寸去裁剪衣服,最后成品很可能不合身。

更麻烦的是,各个模块是独立优化的。感知模型追求更高的检测精度,预测模型追求更低的轨迹误差,但它们的目标和最终“安全舒适地开到目的地”这个终极目标,并没有直接对齐。感知模型可能为了区分远处一个模糊的物体是车还是广告牌而绞尽脑汁,但这个细节对规划来说,也许远不如近处一个行人的粗略运动趋势重要。这种目标不一致,导致系统整体性能存在“天花板”。

而UniAD提出的“以规划为目标的端到端自动驾驶”新范式,正是要打破这个天花板。它的核心思想非常直接:一切子任务,最终都为“规划”服务。它不是把感知、预测、规划当成独立的积木,而是把它们设计成一个协同工作的“大脑”。在这个大脑里,感知和预测不再是终点,而是为最终规划决策服务的“中间特征”。所有模块在一个统一的框架下联合训练,用一个共同的“规划好”的目标来驱动所有中间环节的学习。

这就好比,我们不再分别训练一个“眼睛”(感知)、一个“预言家”(预测)和一个“司机”(规划),而是直接训练一个完整的“赛车手”。赛车手在比赛中,眼睛会下意识地聚焦在对手的轮胎和行车线上(为超车规划服务),大脑会瞬间预判对手的防守动作(为路径规划服务),所有感官和思维都统一于“赢得比赛”这个最终目标。UniAD做的就是这件事,它用一个基于Transformer的庞大网络,将检测、跟踪、建图、轨迹预测、占据预测和规划全部整合,让数据在其中端到端地流动,最终输出方向盘和油门的控制指令。接下来,我们就拆开看看,这个“赛车手”的大脑是如何工作的。

2. UniAD核心架构:一个为“规划”而生的Transformer流水线

UniAD的整体框架,可以看作是一条精心设计的Transformer特征处理流水线。它由五个核心模块组成,信息像接力棒一样从前向后传递,并且每个模块都贡献出对最终规划最有价值的“特征”。下面这张图清晰地展示了它的工作流程:

[感知层]                    [预测层]                [规划层]
  输入
  (多视角图像)
    |
    v
Backbone + BEV Encoder
    |
    v
BEV特征 (B) ————————————————————————————————————————————————┐
    |                                                        |
    v                                                        |
## 2.1 TrackFormer (目标跟踪)                                |
    |                                                        |
    v                                                        |
动态物体Query (Q_A) + 自车Query (Q_A^ego) ————————————————┐  |
    |                                                        |  |
    v                                                        |  |
## 2.2 MapFormer (在线建图)                                 |  |
    |                                                        |  |
    v                                                        |  |
地图元素Query (Q_M) ————————————————————————————————————————|——|——┐
    |                                                        |  |  |
    |                                                        |  |  |
    | [信息融合与交互]                                       |  |  |
    v                                                        v  v  v
## 2.3 MotionFormer (轨迹预测) ——————————————> 未来轨迹 (X_hat)
    |                                                        |     |
    v                                                        |     v
## 2.4 OccFormer (占据栅格预测) ——————————————> 未来占据 (O_hat)
    |                                                        |     |
    |                                                        |     |
    v                                                        v     v
## 2.5 Planner (轨迹规划) <———————————————————————————————————————
    |
    v
最终规划轨迹 (τ*)

流程解读:

  1. 输入与特征提取:系统接收多摄像头视频流,通过一个共享的Backbone(主干网络)提取图像特征,然后利用类似BEVFormer的技术,将这些来自不同视角的特征统一转换到鸟瞰图(BEV)空间,得到一个全局的、稠密的BEV特征图 B。这是后续所有模块共享的“场景画布”。
  2. 感知阶段(Perception):
    • TrackFormer:它接收BEV特征 B,输出一系列动态物体Query(Q_A)。每个Query代表一个被跟踪的障碍物(车、人、自行车等),包含了它的位置、速度、类别等抽象特征。特别关键的是,它还会生成一个自车Query(Q_A^ego),用来表征我们自己的车辆状态。这些Query不是简单的边界框,而是富含语义和时序信息的向量。
    • MapFormer:同样基于BEV特征 B,它输出一系列地图元素Query(Q_M),用来表示车道线、路沿、十字路口等静态场景元素。这些Query编码了道路的几何结构和拓扑关系(比如哪条车道连接哪条车道)。
  3. 预测阶段(Prediction):
    • MotionFormer:这是交互建模的核心。它接收来自感知阶段的所有动态物体Query Q_A、地图Query Q_M 以及自车Query Q_A^ego。它的任务是模拟这些元素之间复杂的相互作用,并预测每个动态物体(包括自车)未来的多条可能轨迹。输出是未来几秒内每个物体的多模态轨迹 X_hat。请注意,自车Query也在这里参与交互,这意味着系统在预测别人时,已经考虑到了“我”可能的行为对别人的影响。
    • OccFormer:为了更精细地评估风险,仅有物体的轨迹点还不够。OccFormer利用MotionFormer输出的轨迹信息 Q_X 和TrackFormer的物体Query Q_A,预测未来每一时刻,鸟瞰图上每一个小格子(栅格)被占用的概率,生成一个未来占据概率图 O_hat。这相当于预测了一幅动态的“未来场景快照”,能清晰地显示出哪些区域可能会被车辆或行人占据。
  4. 规划阶段(Planning):
    • Planner:规划模块是最终的决策者。它接收来自MotionFormer更新后的、富含交互信息的自车Query,以及原始的BEV特征 B。此外,它还会显式地考虑OccFormer预测的未来占据图 O_hat。规划模块的任务是生成一条自车未来的行驶轨迹 τ_hat。为了让轨迹更安全,UniAD还引入了一个碰撞优化器,它像一个“安全员”,根据 O_hat 对初始规划轨迹进行微调,让车辆主动避开那些未来可能被占用的区域,最终输出优化后的安全轨迹 τ*。

核心设计哲学:你可以看到,信息流是单向且目标明确的。后置模块(如MotionFormer)严重依赖于前置模块(如TrackFormer)输出的高质量、抽象化的Query。而所有这些模块的“学习目标”,虽然各自有辅助的监督信号,但最终都被“规划出一条低误差、低碰撞率的轨迹”这个总目标所牵引和优化。这种设计确保了中间特征从一开始就是为最终决策服务的,实现了真正的目标对齐。

3. 模块深度拆解:Transformer如何扮演“粘合剂”与“推理引擎”

3.1 TrackFormer与MapFormer:从像素到“语义概念”的抽象

传统感知模块输出的是边界框、车道线点集这类“几何实体”,而UniAD的感知模块输出的是Query(查询向量)。这是理解其端到端能力的关键一跃。

  • TrackFormer:不止于检测,更是持续追踪 TrackFormer同时做检测和跟踪。它内部维护着两类Query:“检测Query”负责发现新出现的物体,“跟踪Query”负责持续追踪已识别的物体。这些Query与BEV特征进行Transformer式的注意力交互,不断更新自身状态。最终输出的 Q_A 不是一个坐标,而是一个高维向量,它编码了这个物体“是谁”(ID)、“在哪”(状态历史)、“是什么”(语义)以及“可能关心什么”(注意力焦点)。Q_A^ego 也是这样一个向量,代表自车。这种设计让时序信息(跟踪)自然地融入了特征表示,为后续预测交互提供了坚实基础。

  • MapFormer:从分割到“可查询”的路网记忆 MapFormer不再输出一张稠密的车道线分割图,而是输出一组稀疏的 Q_M。每个地图Query代表一个车道段或路口元素,并编码了其形状和与其他元素的连接关系。这就像把高精地图“记忆”成了一组可被查询的语义节点。相比于处理一整张图像,后续模块只需要与这些稀疏的、富含语义的Query交互,效率更高,且更专注于驾驶相关的语义信息。

实战意义:在我参与的测试中,这种基于Query的感知输出,极大地减轻了后续模块的计算负担。预测模块不再需要处理原始的、嘈杂的像素或框,而是直接与这些精炼的“概念”对话,使得模型能够将更多计算资源用于复杂的推理,而不是低级的特征提取。

3.2 MotionFormer:多智能体交互的“沙盘推演”

这是UniAD中最具创新也最复杂的模块之一。它的目标是在一个统一的框架下,预测所有交通参与者(包括自车)的未来轨迹。

  • 三重交互机制:MotionFormer的每一层都在进行三种平行的注意力计算:

    1. Agent-Agent交互:让每个物体的Query与其他所有物体的Query进行交互。这模拟了现实中的相互避让和博弈,比如一辆车切入,旁车会减速。
    2. Agent-Map交互:让物体Query与地图Query交互。这决定了车辆会遵循车道行驶,行人在人行道上,自行车可能靠近路缘。
    3. Agent-Goal交互:让物体Query与其预测轨迹的终点附近的环境特征(通过可变形注意力实现)交互。这确保了预测的轨迹在终点处是合理且可行的,比如车辆最终会停入车位或汇入车流。
  • 运动学平滑:直接回归轨迹点容易产生“抖动”或不符车辆物理特性的轨迹(比如瞬间横向移动)。UniAD在训练中引入了一个非线性优化层。它会对预测的轨迹施加运动学约束(如加速度、曲率限制),就像给轨迹“熨烫”了一下,使其更加平滑、合理。这个层只在训练时使用,用于提供更好的监督信号;推理时直接使用网络输出的轨迹,保证速度。

一个生动的类比:MotionFormer就像一个实时运行的交通模拟沙盘。它把感知到的“车”、“人”、“车道”这些棋子(Query)摆上去,然后根据一套复杂的交互规则(注意力机制),快速推演未来几秒内所有棋子最可能走的几步棋(多模态轨迹)。这个推演过程是并行的、全局的,充分考虑了棋子之间的相互影响。

3.3 OccFormer:从“轨迹线”到“风险热力图”的升华

轨迹预测给出了物体的可能路径,但路径是线状的,而实际风险是面状的。一辆车在转弯时,其占据的空间是变化的。OccFormer的任务就是将稀疏的物体轨迹,转化为稠密的、逐帧的未来占据栅格概率图 O_hat。

  • Pixel-Agent交互:这是OccFormer的关键。它让代表场景的稠密BEV特征(Pixel)与代表每个物体的实例特征(Agent)进行交叉注意力计算。为了让计算可行且准确,这里使用了一个巧妙的注意力掩码:每个栅格只关注那些可能占据它的物体。这就像在计算每个位置的风险时,只考虑那些最可能来到这里的车辆,而不是全局所有车辆。
  • 实例级占用输出:最终,O_hat 的生成是通过将学习到的物体级占用特征与上采样后的场景特征相乘得到的。这使得占据预测既是实例感知的(知道是哪辆车占的),又是场景融合的(考虑了背景环境)。

对规划的价值:对于规划模块来说,O_hat 是一张极其宝贵的“未来风险地图”。规划器不再仅仅躲避几条预测的轨迹线,而是要避开整片红色的高风险区域。这大大增强了规划的安全性,尤其是在处理预测不确定性高、物体形状不规则(如行人、自行车)的场景时。

3.4 Planner:融合全局信息的最终决策者

规划模块接收所有上游的精华:

  1. 高度抽象的自车状态:来自MotionFormer更新后的 Q_A^ego,它已经“知晓”了周围环境和其他参与者的预测意图。
  2. 原始场景上下文:BEV特征 B,提供静态环境细节。
  3. 显式风险输入:OccFormer预测的未来占据图 O_hat。

Planner首先根据导航指令(如“左转”),将其编码为可学习的指令嵌入,然后与自车Query和BEV特征交互,生成一条初步的规划轨迹 τ_hat。

  • 碰撞优化器——安全的最后一道保险:生成初步轨迹后,UniAD并未结束。它引入了一个基于梯度的碰撞优化器。这个优化器将 O_hat 视为一个“势能场”,占据概率高的地方势能高。它通过数值优化方法(如牛顿法)对 τ_hat 进行微调,寻找一条在保持原路线大致不变的同时,尽可能避开高势能区域(即高风险区域)的轨迹 τ*。这个过程是可导的,因此整个系统(包括OccFormer)可以通过规划损失被端到端地训练,让占据预测学会为规划提供真正有用的风险信息。

4. 目标导向设计的巨大优势:不仅仅是性能提升

UniAD在nuScenes等权威数据集上全面刷新了记录,规划误差和碰撞率大幅降低超过50%,这已经充分证明了其有效性。但在我看来,其“以规划为目标”的端到端设计,带来的优势远不止于纸面指标。

1. 打破“误差累积”魔咒,实现全局最优 在传统流水线中,每个模块“各自为政”。感知模块为了自己的精度指标,可能输出一个非常精确但对规划无用的细节(比如车标识别)。而在UniAD中,所有模块的梯度都流向同一个终极目标——规划损失。这意味着,如果某个感知或预测的细节对最终规划没有帮助,甚至有害,它的权重就会被抑制。系统会自动学习到哪些信息是规划真正关心的,从而输出对决策最友好的特征。这从根源上缓解了模块间误差传递和放大问题,追求的是系统整体的、面向最终任务的最优解。

2. 特征表示高度对齐,信息传递效率倍增 传统方法中,模块间需要定义复杂的接口(如边框列表、轨迹点集)。UniAD使用统一的Query向量作为“通信语言”。这种表示高度紧凑、富含语义,且天然适合Transformer架构处理。信息在模块间流动的损耗极小,后置模块能更充分地利用前置模块提取的抽象特征。

3. 具备“可解释性”的端到端,并非黑盒 很多人担心端到端模型是黑盒,难以调试。UniAD巧妙地取得了平衡。它虽然是端到端训练,但内部模块分工清晰,每个模块的输出(如跟踪Query、占据图)都有明确的物理意义,可以被可视化、被单独评估。例如,我们可以查看TrackFormer跟踪的ID是否稳定,可以观察OccFormer预测的占据区域是否合理。这种“白盒化”的端到端设计,对于实际系统的开发、调试和安全性认证至关重要。

4. 训练策略灵活,缓解端到端训练难题 直接训练如此庞大的端到端网络极其困难。UniAD论文中提到,他们采用了分阶段训练策略:先单独训练感知模块(TrackFormer, MapFormer)直到收敛,再固定它们或联合微调,逐步加入预测和规划模块进行训练。这种策略得益于架构的模块化设计,使得训练过程更稳定、更高效,为工业界落地提供了可行的路径。

5. 挑战、启示与未来展望

当然,UniAD也非完美。其模型非常庞大,对计算资源要求高;完全依赖视觉输入,在极端天气或光照下的鲁棒性仍有待验证;其“规划即最终输出”的设计,如何与更底层的车辆控制(如转向、油门)无缝衔接,也是工程上的挑战。

但无论如何,UniAD为我们指明了一个清晰的方向:自动驾驶系统的设计,正从“模块堆砌”走向“任务驱动的一体化智能”。 它告诉我们,当所有子任务被一个统一的目标所驱动,并用一个强大的架构(如Transformer)进行深度融合时,系统能迸发出远超传统方法的潜力。

对于开发者和研究者而言,UniAD的启示在于:

  • 重新思考问题定义:不要孤立地看待感知、预测问题,始终要问“这个输出如何服务于最终的驾驶决策?”
  • 拥抱Transformer架构:其强大的序列建模和全局注意力机制,是构建一体化认知系统的理想骨架。
  • 重视中间表示的抽象性:从具体的几何输出(框、线)转向抽象的语义表示(Query),是实现高效信息流的关键。
  • 平衡端到端与可解释性:在设计时就要考虑如何让中间过程可观测、可调试,这对实际落地不可或缺。

在我个人看来,UniAD这类工作标志着自动驾驶技术进入了“系统智能”深水区。未来的竞争,将不仅仅是某个单点算法的精度比拼,更是对整个系统架构设计哲学、任务定义方式以及大规模端到端优化能力的综合考验。虽然前路仍有诸多工程和理论挑战需要攻克,但这条以终为始、全局优化的道路,无疑是通向更高阶自动驾驶的必经之路。

更多推荐