UniAD
端到端自动驾驶框架,通过 Query-Centric 联合优化将感知、预测、规划统一为单一系统,CV
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
端到端自动驾驶框架,通过 Query-Centric 联合优化将感知、预测、规划统一为单一系统,CV
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你坐在一辆试验车里,前方十字路口正有一辆快递三轮车从右侧盲区突然驶出。人类驾驶员会瞬间完成一连串思考:那个三轮车要左转了——它的速度不快——我需要减速让行还是加速绕过去?——如果绕,需要打方向盘多少度?——还要注意左边有没有行人……
这一秒之内发生的事,对于传统自动驾驶系统来说,需要至少五个独立模块各自为战:目标检测模块说「前方有车」,地图模块说「这是路口」,预测模块说「它要左转」,规划模块说「我该绕」,控制模块说「方向盘打15度」。每个模块各管各的,数据格式不统一,信息在模块之间传来传去,像一家公司里五个部门各自为政,开会靠打电话,效率低还容易扯皮。
UniAD(Unified Autonomous Driving)就是来解决这个问题的。它由上海人工智能实验室的 OpenDriveLab 团队提出,发表在 CVPR 2023,并拿下了当届 Best Paper Award。它的核心理念只有一个:别各自为政了,让感知、预测、规划全部围绕「我接下来该怎么开」这一个目标来设计。
在说 UniAD 之前,有必要搞清楚自动驾驶研发的「三明治困境」:
底层是感知——要看得见。车辆需要用摄像头、激光雷达等传感器感知周围环境:哪里有车,哪里有人,哪里是车道线。这部分技术相对成熟。
顶层是规划控制——要开得对。感知到信息后,系统要决定:加速、减速、转向,然后把这些指令发给车辆执行。
中间层是预测——这是最难的部分,也是 UniAD 真正发力的地方。真实道路上,其他交通参与者的行为是高度不确定的:一辆自行车可能突然变道,一个行人可能闯红灯,一辆车可能急刹车。预测模块需要回答:「他接下来几秒会怎么动?」这个问题没有标准答案,只能靠概率模型猜。
传统方案的痛点在于:感知、预测、规划往往是分开训练、独立优化的。每个模块只管自己那份,模块之间靠手工设计的后处理接口传递信息。这就好比流水线上的三个工位,每个工人都按自己的标准生产,最后靠传话筒拼在一起。结果是:信息传递有损耗、误差会逐级放大、模块之间无法联合优化。
UniAD 的答案是:用一个统一的网络,让所有任务在同一个优化目标下联合训练,这个目标只有一个——规划的质量。
UniAD 的架构图非常清晰——从输入到输出,依次是:

图1:UniAD 完整流程图(来源:GitHub仓库官方图片)
从左到右,UniAD 的 Pipeline 包含以下核心模块:
一切从鸟瞰图(Bird's Eye View,BEV)开始。BEVFormer 是一个基于 Transformer 的感知编码器,它将摄像头采集的多个视角图像,统一融合成一个 360° 的俯视角度特征图。相当于把车的「眼睛」(摄像头)看到的东西,「投影」到一张从空中俯瞰的道路图上。
这样做的好处是:之前你看的是前后左右四张图,需要分别处理再融合;现在你直接得到一张上帝视角的地图,所有物体都在同一个坐标系下,后续模块处理起来就简单多了。
BEVFormer 输出的 BEV 特征图,是整个 UniAD 的信息中枢。
有了 BEV 特征图,接下来 TrackFormer 负责跟踪道路上的动态目标:车辆、行人、骑行者。它不仅检测目标在哪里,还通过 Transformer 的注意力机制,跨帧关联目标身份——让系统知道「第3帧的这辆车」和「第5帧的那辆车」是同一个物体,从而形成完整的轨迹。
MapFormer 从 BEV 特征中解析出静态道路信息:车道线、道路边界、可行驶区域。它输出的不是一个 CAD 图,而是一张语义地图——告诉系统「哪里能开,哪里不能开」。
这是 UniAD 的核心创新模块。MotionFormer 为每个动态目标生成多模态运动轨迹预测:它会说「这辆公交车有60%的概率左转,30%的概率直行,10%的概率停车」。预测以未来6秒为时间窗口,每0.5秒一个采样点,形成一条完整的运动轨迹。
MotionFormer 的设计非常巧妙:它采用了一个「两两交互」的注意力机制,让每辆车的预测都同时考虑到其他所有车辆的影响——就像真实驾驶中,司机不仅看前车,还要时刻观察周围所有车辆的动态。
OccFormer 负责预测栅格化的占用网格(Occupancy Grid):将周围空间切分成小方格,预测每个方格在未来某个时刻是否会被占据。这解决了运动预测的一个盲区——运动预测是「点轨迹」,但真实世界是「有形状的」。比如一辆挂车转弯时,车头和车尾走的是不同的弧线,点轨迹预测无法捕捉这种「伸缩变形」,而占用网格可以。
终于到了核心目标。Planning 模块以 MotionFormer 的多模态轨迹和 OccFormer 的占用预测作为输入,结合 MapFormer 的地图约束,生成最终的自车行驶轨迹。
关键设计:规划模块接收来自所有下游任务的 Query 输出作为输入,而不是简单拼接中间特征。这确保了感知、预测的信息能够真正被规划模块利用,而不是在传递过程中被遗忘。
最后,规划输出的是一条轨迹坐标序列,直接送到控制模块执行。
UniAD 的训练分为两个阶段:
这样做是因为感知模块是其他所有模块的底座,如果底座不稳定,后面的联合训练就会「垃圾进、垃圾出」。分阶段训练保证了每个模块都能得到充分、合理的优化。
很多人会问:把所有任务绑在一起训练,真的比各自单独训练更好吗?UniAD 的实验给出了明确答案:
| 任务 | 指标 | UniAD 结果 | 此前 SOTA |
|---|---|---|---|
| 多目标跟踪 | AMOTA | 0.394 | 通常在0.3x |
| 车道线分割 | IoU-lane | 0.294 | - |
| 运动预测 | minADE | 0.71m | 通常1.0m+ |
| 占用预测 | IoU | 63.4% | - |
| 规划(碰撞率) | Avg.Col | 0.31% | 通常0.5%+ |
最关键的数字是运动预测误差(minADE)0.71米——意味着 UniAD 对周围车辆6秒后的位置预测,平均误差只有71厘米。考虑到这是在复杂城区道路、包含大量交通参与者的情况下取得的成绩,这个精度相当可观。
更值得注意的是规划碰撞率 0.31%。这意味着在10000帧测试中,只有31帧出现了潜在碰撞风险。这个数字在自动驾驶规划领域已经是非常优秀的表现。

图2:OpenDV 数据集构成(来源:GitHub仓库官方图片)
UniAD 基于 OpenDV 数据集训练,该数据集整合了 nuScenes 和 NAVSIM 等主流自动驾驶数据,其中 nuScenes 数据集体积约400GB,是训练的最大门槛之一。
UniAD 是一个纯研究框架,面向的是自动驾驶研究社区,而非终端用户。没有 Web 界面、没有 API 接口、没有现成的推理服务。你需要:
项目提供了 Dockerfile,可以省去大部分环境配置的痛苦:
git clone https://github.com/OpenDriveLab/UniAD.git
cd UniAD
docker build -t uniad docker/Dockerfile
但这只是容器化环境的开始。即使进了容器,你还需要:
官方预估:有经验的开发者完成完整部署大约需要 1-3 天。
2025年10月团队发布了 v2.0,主要变化:
但随之而来的问题是:大量已有的第三方教程、数据预处理脚本可能不再兼容,需要跟着官方文档重新适配。
即使获得了 CVPR Best Paper,UniAD 也有明显的局限性:
1. 计算成本极高
整个 Pipeline 包含5个 Transformer 模块,每个模块都有复杂的注意力计算。BEVFormer 本身就是一个 heavy 模型,再加上 MotionFormer 的两两交互注意力,在消费级 GPU 上实时推理几乎不可能。论文更多是证明了「联合优化」的有效性,而非提供了一个可部署的实时系统。
2. 开环评估的局限性
当前 benchmark 主要基于 nuScenes 开环评估——即让模型预测未来轨迹,然后和 ground truth 比较。但开环指标并不能完全反映真实驾驶安全:模型可能在某个场景预测准确,但这个预测本身就是错的(假阳性/假阴性),闭环评估才能真正验证安全性。
3. 数据集的地域偏差
nuScenes 数据采集于新加坡和波士顿,道路场景以欧美城市为主。UniAD 在中国、日本等左行国家或更复杂城市场景(如中国三四线城市)中的泛化能力没有充分验证。
4. 与竞品的比较
近年来端到端自动驾驶方案快速迭代:
UniAD 的核心贡献是「联合优化」的设计哲学,而非某个具体模型结构的突破。这一思想已被广泛借鉴,但 UniAD 本身在2026年已经不是性能最强的方案。
UniAD 获得 Best Paper 的核心原因,不是某个模块刷出了 SOTA,而是一种设计哲学的胜利:感知、预测、规划应该联合优化,而非各自为战。
这个观点说起来简单,但之前没有人用充分的实验证明它真的有效。UniAD 的实验覆盖了9个任务、6个数据集,不仅证明了联合优化确实能带来提升,还揭示了模块之间的正向迁移现象——训练规划任务时,运动预测任务反而变得更强,因为规划目标为整个网络提供了更好的特征表示。
UniAD 选择了完全开源:代码、模型权重、训练日志全部公开。这在自动驾驶研究领域并不常见,因为:
OpenDriveLab 的选择为社区提供了一个可复现的基准。任何人都可以下载代码,在相同数据集上验证结果,或在此基础上进行改进。这对于推动整个领域的发展至关重要。
UniAD 是什么? 一个面向规划导向的端到端自动驾驶算法框架,将感知、预测、规划整合在统一网络中联合优化。
解决了什么问题? 打破了传统自动驾驶系统中各模块独立优化、信息传递损耗、无法联合调优的困境。
适合谁用? 自动驾驶研究方向的研究者、需要benchmark对比的学术工作者、对端到端自动驾驶感兴趣的工程师。
不适合谁? 需要快速部署产品级自动驾驶系统的工程师、需要实时推理能力的应用开发者。
一句话评价:UniAD 的价值不在于它是否能在你的车上运行,而在于它证明了「联合优化」这条路走得通——这个思想将在未来很长时间内影响自动驾驶算法的设计方向。