📄 论文信息

  • 标题Planning-oriented Autonomous Driving(面向规划的自动驾驶)
  • 出处:上海人工智能实验室 × 武汉大学 × 复旦大学(CVPR 2023 最佳论文奖,是该会议历史上首篇自动驾驶领域的最佳论文)
  • 一句话总结:首次把感知、预测、规划全部统一进一个可端到端联合训练的网络里,并以规划为最终目标反向驱动所有任务,开创了显式端到端的新范式。

🤔 要解决什么问题?

在 UniAD 之前,自动驾驶工业界几乎清一色采用分模块拼接的方案:检测 ➜ 跟踪 ➜ 在线建图 ➜ 运动预测 ➜ 占用预测 ➜ 规划与控制。每个模块单独训练、各自调优,最后用规则串联起来。这种 pipeline 成熟可靠,但有几个根本性顽疾

痛点表现后果
误差累积上游漏检一个目标,下游预测/规划全错错误"滚雪球"
信息丢失模块间只传结构化结果(框/轨迹),丢掉了特征级信息后段无法补救前段
目标错位每个模块都在自己任务上刷分,跟"开得好不好"脱节感知 SOTA ≠ 规划好
几何失配不同任务用不同表示(栅格/矢量/网格),难以融合系统复杂、难优化

而另一条隐式端到端路线(直接"图像进、控制出",典型如早期的行为克隆)虽然能联合优化,却完全黑盒、不可解释、不可调试,且难以吸收多年积累的感知预测知识。

UniAD 的灵魂拷问:既然所有任务最终都是为"把车开好"服务的,那为什么不以规划为导向,把感知预测都装进一个可训练的网络里?既享受端到端的梯度贯通,又保留显式的中间表示(轨迹、地图、占用)以维持可解释性——这就是论文标题 “Planning-oriented” 的含义。


💡 核心思想:以规划为最终目标统一所有任务

UniAD 给出了一条折中路线,介于"纯分模块"与"纯黑盒端到端"之间:

多任务统一 + 显式中间表示 + 以规划为锚点的端到端联合优化

它的关键判断有三条:

  1. 规划是唯一终极目标:感知、预测的存在意义就是服务规划,所以训练时应当让规划的梯度一路回传到感知,而不是各模块各刷各的分。
  2. 中间表示不能丢:把检测框、轨迹、地图、占用栅格这些显式表示保留下来,既可解释、又可单独监督、还能复用已有知识。
  3. 用 query 把所有模块串起来:用同一套 Transformer query 机制贯穿全流程,让信息在特征级流动,避免"框/栅格"这种有损的硬传递。

这套思想直接催生了下面的整体架构。


🏗️ 整体架构:五段式 query 通路

UniAD 的整体流程是一条以 query 为载体的信息高速公路,环视多相机图像先经过图像骨干 + BEV 编码,然后五个模块接力处理:

多相机图像Track 查询(跟踪)Map 查询(在线建图)Motion 预测(轨迹)Occupancy 预测(栅格)Planner(规划)

关键在于:每一段的输入输出都是 query,而不是传统的框或栅格。这样梯度就能从最后的规划 loss 一路贯通回最前面的感知,真正做到"为规划而训练"。下面逐段拆解。

第 1 段:Track 查询(TrackFormer)

负责多目标跟踪(MOT)。它从图像里提取目标,并维护一组跨帧连续的 Track 查询,每个 query 对应一个被持续跟踪的智能体(车、人、骑行者)。

  • 输入:环视图像 BEV 特征 + 上一帧的 Track 查询
  • 输出:当前帧的检测结果 + 更新后的 Track 查询(带 ID 连续性)
  • 作用:把"看到什么车"这件事结构化成一组可被下游消费的 query,而不是一堆框

第 2 段:Map 查询(MapFormer)

负责在线矢量建图——实时检测车道线、可行驶区域、道路边界等静态/半静态元素。

  • 输入:BEV 特征 + 一组 Map 查询
  • 输出:矢量化的地图元素(车道线、分隔带、人行横道等)
  • 作用:给预测和规划提供结构化的道路先验,告诉模型"车该往哪儿开"

Map 查询与 Track 查询一起,构成了对场景的双视角描述:动态目标 + 静态路网。

第 3 段:Motion 预测(MotionFormer)

基于 Track 查询和 Map 查询,预测每个智能体未来若干秒的运动轨迹

  • 输入:Track 查询 + Map 查询 + 自车 query
  • 输出:每个目标的多模态未来轨迹(多条候选 + 概率)
  • 关键设计:建模三类交互——智能体 ↔ 智能体智能体 ↔ 地图智能体 ↔ 终点(goal)

MotionFormer 把感知得到的 query 与地图 query 进行交叉注意力,让模型在特征层面理解"前车会怎么动、它受哪条车道约束"。

第 4 段:Occupancy 预测

这一段是 UniAD 的神来之笔。运动预测只对被检测到的、可跟踪的目标做轨迹预测,但真实世界里还有大量未观测到、不规则、难以归类的障碍物(散落物、异形车、施工围挡)。占用预测用一个 BEV 栅格去预测"未来某个时刻,每个格子会不会被占据",补上了运动预测的盲区。

  • 输入:Motion 模块的隐特征 + Track 查询
  • 输出:未来多帧的占用栅格
  • 作用:作为规划的安全兜底——即使预测漏了某个目标,占用栅格也能提示"前方有东西",避免规划出冲撞轨迹

Motion + Occupancy 互补是这篇论文设计哲学的精华:一个看"已知目标怎么动",一个看"还有什么会挡路",两者合力为规划提供完整的未来视野。

第 5 段:Planner

规划模块拿到上述所有信息后,输出自车未来轨迹

  • 输入:自车 query + Track 查询 + Map 查询 + Motion 预测结果
  • 机制:自车 query 对其他所有 query 做注意力,综合"周围车要怎么动、车道在哪、占用情况"来生成轨迹
  • 输出:未来若干个 waypoints(航点)

为了把"安全"硬编码进优化目标,Planner 还引入了一个碰撞损失——把规划轨迹投影回 BEV,与占用栅格做约束,惩罚可能与障碍物重叠的轨迹。这让规划不只是拟合人类轨迹,而是显式地避免碰撞

五段总结

模块输入输出服务于规划的角色
TrackFormerBEV 特征 + 历史 queryTrack 查询“周围有谁”
MapFormerBEV 特征 + Map 查询Map 查询“路怎么走”
MotionFormerTrack + Map 查询多模态轨迹“别人会怎么动”
OccupancyMotion 特征 + Track 查询占用栅格“还有什么挡路”
Planner全部 query + 自车 query自车 waypoints“我该怎么开”

🔗 query:端到端梯度贯通的关键

UniAD 最具方法论价值的创新,是用 query 作为贯穿全流程的统一接口。这带来三个本质好处:

  1. 特征级信息流动:模块之间不再传递"框/轨迹"这种离散有损信息,而是传递连续的特征向量,规划模块能看到感知的全部细节。
  2. 梯度可回传:因为整条链路都是可微的,规划 loss 可以一路反传到感知,真正实现"为规划而感知"。
  3. 统一调度:所有模块都遵循 query + 注意力的范式,便于在一个框架里联合训练、联合推理。

这正是它区别于传统 pipeline(不可微)和黑盒端到端(无中间表示)的根本所在——用 query 同时拿到了"端到端的可微性"和"显式表示的可解释性"


📉 多任务联合 loss 设计

UniAD 是个典型的多任务学习系统,每个模块都有自己的监督信号:

任务主要 loss
跟踪(Track)分类 loss + 框回归 loss + 关联匹配 loss
建图(Map)矢量元素分类 + 回归 loss
运动预测(Motion)轨迹回归(minADE / minFDE)+ 模态分类 loss
占用预测(Occ)二值交叉熵 / IoU loss
规划(Planner)轨迹 L2 回归 + 碰撞 loss

训练上有一个重要工程经验:直接从头端到端联合训练会崩——各任务梯度尺度不一、相互打架,很难收敛。UniAD 采用两阶段策略

  1. 阶段一:分别预训练各感知/预测模块,让每个子任务先到一个合理的初始化。
  2. 阶段二:端到端联合微调,把所有模块接起来,以规划为主导做联合优化。

这种"先分后合"的做法,是后来几乎所有端到端工作(VAD、SparseDrive 等)默认采用的训练范式,可谓"立规矩"的贡献。


📊 在 nuScenes 上的表现

UniAD 在 nuScenes 上做了全面评测,结果可以用"全面碾压"形容:

  • 规划:在 L2 误差碰撞率两个核心指标上,相比当时的强基线 ST-P3 等大幅领先;碰撞率尤其显著下降,说明安全性提升明显。
  • 跟踪(MOT):AMOTA 指标 SOTA。
  • 运动预测:minADE / minFDE 表现优秀。
  • 在线建图:车道线 IoU 等指标领先。

更值得关注的是消融实验揭示的规律

设计选择对规划的影响
去掉 Occupancy 模块碰撞率明显上升 → 占用预测是安全兜底
去掉端到端联合训练规划精度下降 → 梯度贯通确实有用
只用感知结果做规划显著变差 → 中间任务确有贡献

这些消融一锤定音地证明了:UniAD 的每个模块、每条设计都不是凑数的,都切实地服务了最终的规划目标。它也因此斩获了 nuScenes 自动驾驶预测与规划挑战赛的冠军。


🌍 开创"显式端到端"范式

UniAD 的历史地位,远不止于"一个跑得好的系统",而在于它确立了一条新路线

路线代表特点局限
分模块拼接工业界传统成熟、可解释误差累积、不可微
隐式端到端行为克隆类联合优化黑盒、不可调试
显式端到端UniAD可微 + 显式表示训练复杂、算力高

显式端到端这个范式几乎成了 2023 年之后学术界的"默认选项",后续一大批工作都沿着 UniAD 铺好的路往前走。


🔗 与后续工作的关系

UniAD 之后的端到端工作,基本都在"简化表示、提效、提质“三个方向上迭代。

UniAD → VAD

VAD(Vectorized Auto-regressive Driving) 直接继承了 UniAD 的"显式端到端 + 向量化表示"思想,但做了两件关键瘦身:

  • 矢量化场景表示替代 UniAD 中较重的密集 BEV 栅格,大幅降低算力、提升推理速度
  • 进一步精简模块,强调效率与泛化

可理解为 “UniAD 的轻量化、向量化改良版”,证明了 UniAD 路线可以被工程化加速。

UniAD → SparseDrive

SparseDrive 把"稀疏"做到极致——用稀疏 query 表示目标和地图,避免密集 BEV 计算,在保持甚至提升精度的同时把推理开销进一步压低。它延续了 UniAD “query 贯通 + 显式表示” 的内核,只是把表示做得更稀疏、更高效。

三者一脉相承

工作核心传承主要进化
UniAD范式奠基者首次显式端到端,规划导向
VAD向量化 + 显式端到端轻量化、提速
SparseDrivequery 通路 + 显式表示全稀疏,进一步提效

可以说,UniAD 定义了赛道,VAD/SparseDrive 在这条赛道上把车跑得更快


📝 个人思考

读 UniAD 最打动我的,是它对"目标"的清醒定位。在它之前,自动驾驶学术界和工业界都容易陷入一种"局部最优陷阱”——每个团队埋头把自己的模块(检测、预测、规划)刷到 SOTA,却很少反思这些模块拼起来是否真的让车开得更好。UniAD 用一句话点醒了这个迷思:所有任务的终极目标只有一个,就是规划。这种"以终为始"的系统观,比任何具体的网络结构都更值得铭记,因为它适用于一切复杂系统的设计——先想清楚最终要什么,再倒推每个组件该怎么搭。

第二点启发在**“折中"的智慧**。UniAD 没有走极端:既不全盘黑盒(保留了显式的轨迹/地图/占用表示),也不固守分模块(让梯度贯通到感知)。这种"鱼与熊掌兼得"的设计哲学,在工程实践中往往比纯学术的激进更值钱。我倾向于认为,真正能大规模落地的自动驾驶系统,一定是某种形式的"显式端到端”——因为它同时满足了"可优化"和"可解释、可兜底"这两个落地刚需。纯黑盒端到端再炫酷,在安全审计和事故定责面前都站不住脚。

最后一点是对占用预测这个模块的体会。它在 UniAD 里看似不起眼,却是最具工程价值的创新之一。真实世界充满"不规则、未归类、未观测"的障碍物,传统的检测/预测范式天然漏掉它们,而占用栅格是一种**“不管是什么,先告诉我有没有”**的兜底表示。这种"从语义回到几何"的设计思路,对今天的端到端乃至世界模型研究都有启示——越是高层语义容易出错的地方,越需要底层几何的安全网兜着。这或许也是为什么占用网络(OccNet)后来单独发展成了一条热门分支。

UniAD 的价值,在于它不只是"一个跑得好的模型",而是给整个领域立了一根旗杆:从此大家讨论端到端自动驾驶,都会以它为坐标系的原点。


📖 这是论文精读系列的第 3 篇。下一篇你想看 VAD、SparseDrive 还是别的论文解读?欢迎留言。