📄 论文信息
- 标题:VAD: Vectorized Scene Representation for Efficient Autonomous Driving
- 作者机构:华中科技大学(HUST) × 地平线机器人(Horizon Robotics)(Jiang, Chen, Xu, Liao, Chen, Zhou, Zhang, Liu, Huang, Wang)
- arXiv:2303.12077
- 收录:ICCV 2023
- 代码:github.com/hustvl/VAD
- 一句话总结:把驾驶场景全部向量化(地图元素、agent 运动都变成矢量),抛弃稠密栅格表示,在 nuScenes 上做到性能更强、速度快 2.5–9.3 倍。

🤔 要解决什么问题?
UniAD(CVPR 2023 最佳论文)确立了"以规划为导向的端到端“范式,把感知、预测、规划统一进一个网络,证明了端到端联合优化的潜力。但 UniAD 仍然有一个大包袱:稠密栅格化表征(rasterized representation)。
无论是语义地图、占用图(occupancy)、光流图还是代价图(cost map),本质都是一张张密集的 BEV 网格图。这种表示在 UniAD 里被用于规划时的代价计算和碰撞检查。它有两个根本问题:
| 痛点 | 具体表现 | 后果 |
|---|---|---|
| 计算昂贵 | 大量卷积处理密集像素级栅格,分辨率越高越慢 | 推理慢,难上车端实时系统 |
| 丢失实例结构 | 栅格只有像素,没有"这是一辆车/一条车道"的实例概念 | 约束不住规划,安全约束只能粗粒度 |
| 依赖后处理 | 还要手设计规则把栅格转成决策、做轨迹筛选 | 鲁棒性、泛化性差,规则难覆盖长尾 |
VAD 的灵魂拷问:自动驾驶真的需要把场景画成一张张密集的栅格图吗?人类开车看的是"车道线、边界、周围的车辆”,这些天然就是"矢量"概念——为什么不用向量来表示场景? 一条车道线用几个有序点就能精确描述,何必用一张几百×几百的栅格图去近似?
💡 核心思想:全向量化场景表征
VAD 的主张非常鲜明:
把整个驾驶场景建模成完全向量化的表示——地图是矢量,agent 运动也是矢量——彻底抛弃密集栅格。
向量化表征的两大优势:
| 优势 | 说明 |
|---|---|
| 天然的实例级约束 | 矢量地图(车道线/边界)告诉车"往哪开、边界在哪";agent 运动矢量告诉车"别撞谁"——都是精确的实例级信息 |
| 计算高效 | 向量数量远少于栅格像素,且省掉了手工后处理,推理飞快 |
VAD 用两套机制榨取向量化信息的价值:隐式通过 query 交互学特征(让自车 query 主动"询问"地图和 agent),显式通过三个向量化规划约束(把矢量直接变成可微的安全 loss)。这"一隐一显"是 VAD 设计的精髓。

⚙️ 方法细节
整个 VAD 流水线分四阶段:骨干网络提取特征、向量化场景学习、规划交互、规划约束。
🗺️ 向量化场景学习
VAD 用三类 query 从 BEV 特征里"抽"出实例级信息,借鉴 BEVFormer + MapTR:
| Query | 学什么 | 输出 |
|---|---|---|
| BEV query | BEV 编码 | 多视图特征压成 BEV 特征图 |
| Agent query | 每个交通参与者 | agent 运动矢量(未来轨迹) |
| Map query | 地图元素(车道、边界、分隔带) | 地图矢量(有序点集) |
地图矢量包括车道向量(提供方向、交通流信息,帮助缩小轨迹搜索空间)和边界向量(提供可行驶边界,防止冲出路面);agent 运动矢量则给出每个动态参与者的未来轨迹,用于碰撞约束。
这里的关键洞察是:地图和 agent 的输出从始至终都是向量(有序点集/轨迹),而不是栅格图——这就从源头避免了"栅格化"的开销。
🤝 规划:通过 query 交互
VAD 的规划不靠代价图、不靠规则搜索,而是用一个 ego query(自车 query) 通过注意力机制去和 map query、agent query 交互,把场景信息汇聚到 ego query 里。再结合自车状态特征(速度、加速度等)和高层驾驶指令(左转/右转/直行),由 Planning Head 直接回归出未来轨迹。
这种"query 交互"思路很优雅:规划不再是"在代价图上找路",而是"自车向周围元素发问,综合答案做决策"——和 Transformer 的注意力机制天然契合。这也意味着规划模块可以直接接收特征级信息,而不是上游丢掉细节的结构化结果,避免了 UniAD 里提到的"信息丢失"问题。
🔒 三个向量化规划约束(VAD 的精髓)
这是 VAD 最有创意、也是性能提升最大的部分。仅靠轨迹回归(L2)监督远远不够安全——回归只会让轨迹"像真值",但不会主动避让。VAD 在训练阶段额外加三个实例级约束,直接用矢量信息把轨迹"管"住:
| 约束 | 作用 | 用到的矢量 |
|---|---|---|
| ego-agent 碰撞约束 | 横向/纵向都和动态 agent 保持安全距离 | agent 运动矢量 |
| ego-boundary 越界约束 | 把轨迹推离道路边界,防止冲出路面 | 地图边界矢量 |
| ego-lane 方向约束 | 用车道方向正则化自车未来朝向 | 地图车道矢量 |
这三个约束都是可微的,可以无缝接入端到端训练,几乎不增加推理开销——因为矢量数量少,约束计算极其便宜(相比稠密代价图的逐像素计算)。消融实验证明三者缺一不可,去掉任何一个碰撞率都显著上升。
🏋️ 端到端训练
整个 VAD 完全可微,一次性端到端训练,无需分阶段。所有 loss(感知检测 + 在线建图 + agent 运动预测 + 三个规划约束 + 轨迹回归)联合优化,梯度从规划一路传回骨干网络。这种"规划目标反向驱动所有任务"的思想直接继承自 UniAD。
🔬 架构细节与消融洞察
骨干网络与 BEV 编码
VAD 的前端采用标准的图像骨干 + BEV 编码器组合:多帧多视图图像先过图像骨干(如 ResNet)提特征,再用一组 BEV query 借助空间/时间注意力(参考 BEVFormer)把多视图特征压成统一的 BEV 特征图。值得注意的是,VAD 的向量化感知直接从 BEV 特征 query 出矢量结果,而不需要像 HDMapNet 那样先生成栅格语义图再后处理成矢量——这就从源头省掉了栅格化的开销。
Map / Agent Query 的设计
地图 query 的设计借鉴 MapTR,识别地图实例点的排列不变性——一条车道线的若干点无论以什么顺序输出,都代表同一条线。这使得模型可以并行预测所有地图元素,而不必像 VectorMapNet 那样自回归逐个生成,效率更高。Agent query 则参考 DETR 系列,每个 query 负责一个潜在的交通参与者,输出其类别、位置和未来运动矢量。
消融实验的关键发现
论文的消融研究揭示了几个有价值的现象:(1) 三个向量化约束中,ego-agent 碰撞约束对碰撞率影响最大,去掉它碰撞率几乎翻倍;(2) ego-lane 方向约束对轨迹合理性贡献明显,没有它轨迹容易出现不合理朝向;(3) 向量化地图和向量化 agent 各自都贡献正向收益,二者结合效果最佳。这些发现为后续工作的安全约束设计提供了清晰的优先级参考——先保碰撞安全,再管方向,最后抠边界。
从 VAD 到 VADv2 的演进线索
VAD 的单模态回归局限,直接催生了后续的 VADv2——后者引入大规模轨迹词表,把"回归轨迹"转化为"从词表中选轨迹 + 微调"的分类-回归混合问题,实现多模态输出。可以看出 VAD 系列沿着"向量化"主线持续演进:第一代(本文)确立向量化范式,第二代引入多模态词表。这条线索与 SparseDrive、GoalFlow 的"目标点/轨迹词表"思路殊途同归,共同指向"稀疏 + 多模态"这个端到端规划的成熟形态。
📊 实验结果:性能与效率双赢
VAD 在 nuScenes 上同时拿下最强性能和最高效率,对比 UniAD:
VAD-Base(标准版)
| 指标 | UniAD | VAD-Base | 提升 |
|---|---|---|---|
| 平均位移误差 | 1.03m | 0.72m | ↓ 30.1% |
| 平均碰撞率 | 0.31% | 0.22% | ↓ 29.0% |
| 推理速度 | 1.8 FPS | 4.5 FPS | 2.5× 加速 |
VAD-Tiny(轻量版)
| 指标 | UniAD | VAD-Tiny | 说明 |
|---|---|---|---|
| 推理速度 | 1.8 FPS | 16.8 FPS | 9.3× 加速 |
| 平均位移误差 | 1.03m | 0.78m | 性能仍可比 |
| 平均碰撞率 | 0.31% | 0.38% | 略有牺牲 |
关键结论:
- VAD-Base 在性能更强的同时还快 2.5 倍——打破了"端到端一定慢"的偏见,证明了向量化表征的威力
- VAD-Tiny 用 9.3× 的速度换少量精度,16.8 FPS 已经接近车端实时部署门槛(20+ FPS)
- 消融实验证明:三个向量化约束缺一不可,去掉任何一个碰撞率都显著上升;向量化地图和向量化 agent 各自都贡献明显
⚖️ 与 UniAD 对比:从"稠密"到"稀疏"的范式跃迁
VAD 是 UniAD 的直接继承者也是颠覆者:
| 维度 | UniAD | VAD |
|---|---|---|
| 场景表示 | 稠密栅格(占用图、语义图、代价图) | 全向量化(地图矢量 + 运动矢量) |
| 轨迹约束 | 隐式 + 代价图后处理 | 三个显式实例级约束 |
| 后处理 | 有手设计规则 | 无,纯端到端 |
| 推理速度 | 慢(1.8 FPS) | 快(4.5–16.8 FPS) |
| 实例结构 | 像素级,丢失实例 | 实例级,保留结构 |
| 核心思想 | 统一所有任务 | 统一 + 向量化提效 |
VAD 的贡献在于:它证明了"向量化不仅能更快,还能更准更安全"。这为后来的 SparseDrive、VADv2 等一系列"稀疏/向量化"工作铺平了道路——可以说 VAD 开启了端到端驾驶的"稀疏化时代"。地平线团队(Horizon Robotics)也凭借这条技术路线,把研究成果推向了量产。
⚠️ 优势与局限
✅ 优势
- 效率革命:抛弃栅格后推理快 2.5–9.3×,首次让端到端方案具备车端部署潜力
- 实例级安全约束:三个向量化约束直接针对碰撞/越界/方向,可解释且有效
- 完全端到端:无手工后处理,梯度从规划贯通回骨干
- 代码完全开源:hustvl/VAD 社区影响力大,是后续大量工作的基线
❌ 局限
- 仍依赖稠密 BEV query 编码,BEV 部分仍是计算大头(SparseDrive 进一步把 BEV 也去掉)
- 轨迹是回归输出,单模态,无法表达"可左转也可直行"的多选择场景(VADv2 才引入多模态词表)
- 主要在 nuScenes 开环 验证,闭环性能待考察
- 向量化感知对复杂拓扑(如环岛、多岔路口)的建模仍有限
📝 个人思考
VAD 的历史定位:把 VAD 放在时间轴上看,它是端到端驾驶从"稠密"走向"稀疏"的关键转折点。UniAD 证明了"端到端统一"可行,但太重;VAD 证明了"向量化"可以让端到端既快又准;之后的 SparseDrive 把向量化推到极致(连 BEV 都省了),VADv2 引入大规模轨迹词表做多模态。这条演进路线非常清晰,而 VAD 是承上启下的枢纽。它也奠定了地平线团队在端到端驾驶领域的领先地位。
向量化是"物理先验"的胜利:VAD 之所以快又准,本质是把驾驶场景的天然结构(车道、边界、车辆都是实例)作为归纳偏置(inductive bias)注入模型。这比让网络从像素里硬学结构要高效得多。这个思想在后续工作(GoalFlow 的目标点词表、SparseDrive 的稀疏 query)里反复出现——用对先验,比堆参数更重要。这也是为什么端到端驾驶不会走向"完全黑盒",而是"结构化表征 + 端到端优化"的折中。
对我们 Flow-GRPO 工作的启示:VAD 的三个规划约束本质是"硬编码的安全先验"。在做强化学习优化时,这些约束可以天然转化为奖励函数——碰撞约束 ↔ 碰撞惩罚、越界约束 ↔ 越界惩罚、方向约束 ↔ 偏航惩罚。VAD 提供了一份现成的"安全 prior 清单",可以直接迁移到 RL 的奖励设计里。相比于从零设计奖励,借鉴 VAD 这种经过验证的约束体系,能让 RL 训练更稳定、更安全。
单模态回归的天花板:VAD 用回归输出单条轨迹,在简单场景没问题,但在"可左转也可直行"的多选择路口就显得别扭——这也是后来 GoalFlow、SparseDrive 都转向多模态生成的根本原因。VAD 的局限恰恰催生了下一代工作,这就是好的基础研究的价值:它不仅解决问题,更暴露出新的问题。
📖 论文精读系列。VAD 建议和 UniAD(前作)、SparseDrive(后继)、GoalFlow(多模态延伸)串起来读,能看清端到端驾驶"稀疏化"演进的全貌。