摘要:
自动驾驶需要全面了解周围环境才能进行可靠的轨迹规划。先前的研究依赖于密集的光栅化场景表示(例如,代理占用和语义地图)来进行规划,这需要大量的计算,并且会丢失实例级的结构信息。
本文提出了 VAD,一种用于自动驾驶的端到端矢量化方式,它将驾驶场景建模为完全矢量化的表示。所提出的矢量化范式具有两个显著的优势。一方面,VAD 利用矢量化的代理运动和地图元素作为显式的实例级规划约束,从而有效地提高了规划的安全性。另一方面,VAD 的运行速度比之前的端到端规划方法快得多,通过摆脱计算密集型的光栅化表示和手动设计的后处理步骤。 VAD 在 nuScenes 数据集上实现了最先进的端到端规划性能,大幅超越了之前的最佳方法。我们的基础模型 VAD-Base 将平均碰撞率降低了 29.0%,运行速度提高了 2.5 倍。此外,轻量级变体 VAD-Tiny 在实现相当的规划性能的同时,显著提升了推理速度(最高可达 9.3 倍)。我们相信,VAD 的卓越性能和高效率对于自动驾驶系统的实际部署至关重要。代码和模型可在 https://github.com/hustvl/VAD 获取,以方便未来的研究。
图 1. 先前的范式主要依赖于光栅化表示 (a) 进行规划(例如,语义图、占用图、流图和代价图),这需要大量计算。提出的 VAD 完全基于矢量化场景表示 (b) 进行端到端规划。VAD 利用实例级结构信息作为规划约束和指导,实现了良好的性能和效率。
1. Introduction
自动驾驶既需要全面的场景理解以确保安全,也需要高效的实际部署。自动驾驶汽车需要高效地感知驾驶场景,并根据场景信息进行合理的规划。
传统的自动驾驶方法 [7, 14, 23, 48] 采用模块化范式,将感知和规划分离为独立的模块。其缺点是,规划模块无法访问包含丰富语义信息的原始传感器数据。而且,由于规划完全基于先前的感知结果,感知中的错误可能会严重影响规划,并且无法在规划阶段识别和纠正,从而导致安全问题。
近年来,端到端自动驾驶方法 [2, 11, 19, 21] 将传感器数据作为感知的输入,并使用一个整体模型输出规划结果。一些研究 [9,40,41] 直接基于传感器数据输出规划结果,而没有学习场景表示,这种方法缺乏可解释性,并且难以优化。大多数研究 [2, 19, 21] 将传感器数据转换为栅格化的场景表示(例如,语义地图、占用地图、流量地图和代价地图),用于规划。栅格化表示虽然简单易懂,但计算量巨大,并且会丢失关键的实例级结构信息。
在本研究中,我们提出了 VAD(矢量化自动驾驶),这是一种端到端的矢量化自动驾驶范式。VAD 以完全矢量化的方式(即矢量化的代理运动和地图)对场景进行建模,从而摆脱了计算密集型的栅格化表示。
我们认为矢量化场景表示优于光栅化场景表示。矢量化地图(表示为边界向量和车道向量)提供道路结构信息(例如,交通流量、可行驶边界和车道方向),并帮助自动驾驶汽车缩小轨迹搜索空间并规划合理的未来轨迹。交通参与者的运动(表示为代理运动向量)为避免碰撞提供了实例级限制。此外,矢量化场景表示在计算方面效率高,这对于实际应用至关重要。
VAD 充分利用矢量化信息,以隐式和显式的方式指导规划。一方面,VAD 采用地图查询和代理查询,从传感器数据中隐式学习实例级地图特征和代理运动特征,并通过查询交互提取用于规划的指导信息。另一方面,VAD 基于显式矢量化场景表示,提出了三个实例级规划约束:自代理碰撞约束,用于在横向和纵向上保持自车辆与其他动态代理之间的安全距离;自边界越界约束,用于将规划轨迹推离道路边界;以及自车道方向约束,用于通过矢量化车道方向来规范自动驾驶汽车的未来运动方向。我们提出的框架和矢量化规划约束有效地提升了规划性能,且不会产生大量的计算开销。
VAD 无需任何复杂的技巧或手工设计的后处理步骤,便实现了当前最佳 (SOTA) 的端到端规划性能,并在极具挑战性的 nuScenes [1] 数据集上实现了最佳效率。与之前的 SOTA 方法 UniAD [21] 相比,我们的基础模型 VAD-Base 大幅降低了平均规划位移误差(30.1% vs. 0.72 米),平均碰撞率(29.0% vs. 0.31% vs. 0.22%),同时运行速度提高了 2.5 倍(1.8 FPS vs. 4.5 FPS)。轻量级变体 VAD-Tiny 的运行速度提高了 9.3 倍(1.8 FPS vs. 16.8 FPS),同时实现了相当的规划性能,平均规划位移误差为 0.78 米,平均碰撞率为 0.38%。我们还通过彻底的消融实验证明了我们设计选择的有效性。
我们的主要贡献概括如下:
• 我们提出了 VAD,一种用于自动驾驶的端到端矢量化范式。VAD 将驾驶场景建模为完全矢量化的表示,从而摆脱了计算密集型的光栅化表示和手工设计的后处理步骤。
• VAD 通过查询交互和矢量化规划约束,隐式和显式地利用矢量化场景信息来提高规划安全性。
• VAD 实现了 SOTA 端到端规划性能,大幅超越了以往的方法。不仅如此,由于矢量化的场景表示和我们简洁的模型设计,VAD 显著提高了推理速度,这对于自动驾驶系统的实际部署至关重要。
我们相信,自动驾驶可以以完全矢量化的方式高效地实现。我们希望 VAD 的出色性能能够向业界揭示矢量化范式的潜力。
2. Related Work
感知:对驾驶场景的准确感知是自动驾驶的基础。我们主要介绍一些与本文最相关的基于摄像头的3D物体检测和在线建图方法。DETR3D [47] 使用3D查询来采样相应的图像特征,无需非最大抑制即可完成检测。PETR [31] 将3D位置编码引入图像特征,并使用检测查询通过注意力机制 [46] 来学习物体特征。近年来,鸟瞰图 (BEV) 表示法日益流行,并对感知领域做出了巨大贡献 [8, 17, 26, 28, 29, 34, 51]。LSS [39] 是一项开创性的工作,它引入了深度预测,将特征从透视图投射到BEV。BEVFormer [26] 提出了空间和时间注意力机制来更好地编码BEV特征图,并且仅使用摄像头输入就实现了卓越的检测性能。 FIERY [17] 和 BEVerse [51] 使用 BEV 特征图来预测密集地图分割。
HDMapNet [25] 通过后处理步骤将车道分割转换为矢量化地图。VectorMapNet [32] 以自回归方式预测地图元素。MapTR [29] 识别地图实例点的置换不变性,并可以同时预测所有地图元素。
LaneGAP [28] 以一种新颖的路径方式对车道图进行建模,这很好地保留了车道的连续性,并编码了交通信息以供规划。我们利用一组 BEV 查询、代理查询和地图查询来实现场景感知,并遵循 BEVFormer [26] 和 MapTR [29] 的方法,并在运动预测和规划阶段进一步使用这些查询特征和感知结果。
详细信息请参见第 3 节。
运动预测:传统的运动预测以感知基础事实(例如,代理历史轨迹和高清地图)作为输入。一些研究 [3,38] 将驾驶场景渲染为 BEV 图像,并采用基于 CNN 的网络来预测未来运动。另一些研究 [13, 33, 37] 使用矢量化表示,并采用 GNN [27] 或 Transformer [33, 37, 46] 完成学习和预测。最近的端到端研究 [15,17,22,51] 联合执行感知和运动预测。一些研究 [17, 20, 51] 将未来运动视为密集的占用和流动,而不是代理级的未来航点。ViP3D [15] 基于跟踪结果和高清地图预测未来运动。PIP [22] 提出了一种动态代理与静态矢量化地图之间的交互方案,并在不依赖高清地图的情况下实现了 SOTA 性能。受[22]的启发,VAD通过动态代理与静态地图元素之间的交互来学习矢量化的代理运动。
规划: 近年来,基于学习的规划方法盛行。一些研究[9, 40, 41]省略了感知和运动预测等中间阶段,直接预测规划轨迹或控制信号。虽然这种想法简单直接,但它们缺乏可解释性,并且难以优化。强化学习能够胜任规划任务,并已成为一个有前景的研究方向[4, 5, 45]。显式密集代价图具有良好的可解释性,被广泛应用[2,11,19,44]。代价图是根据感知或运动预测结果构建的,或者自于学习的模块。通常采用手工制定的规则来选择具有最小代价的最佳规划轨迹。密集代价图的构建计算量巨大,并且使用手工制定的规则会带来鲁棒性和泛化问题。 UniAD[21] 有效地整合了各种先前任务提供的信息,以目标为导向地辅助规划,并在感知、预测和规划方面取得了显著的表现。PlanT[43] 将感知基础事实作为输入,并将场景编码为对象级表示以进行规划。在本文中,我们探索了矢量化场景表示在规划中的潜力,并摆脱了密集地图或手动设计的后处理步骤。
3. Method
概述:VAD 的整体框架如图 2 所示。给定多帧和多视角图像输入,VAD 首先使用主干网络对图像特征进行编码,并利用一组 BEV 查询将图像特征投影到 BEV 特征上 [26,39,52]。其次,VAD 利用一组代理查询和地图查询来学习矢量化的场景表示,包括矢量化的地图和矢量化的代理运动(第 3.1 节)。第三,基于场景信息进行规划(第 3.2 节)。具体而言,VAD 使用自我查询,通过与代理查询和地图查询的交互来学习隐式的场景信息。规划头基于自我查询、自我状态特征和高级驾驶指令,输出规划轨迹。此外,VAD 引入了三个矢量化的规划约束,以在实例级别限制规划轨迹(第 3.3 节)。 VAD 是完全可区分的,并且以端到端的方式进行训练(第 3.4 节)。
图 2. VAD 的整体架构。VAD 的完整流程分为四个阶段。Backbone 包含一个图像特征提取器和一个 BEV 编码器,用于将图像特征投影到 BEV 特征上。矢量化场景学习旨在将场景信息编码为代理查询和地图查询,并用运动矢量和地图矢量表示场景。在规划的推断阶段,VAD 利用自我查询,通过查询交互提取地图和代理信息,并输出规划轨迹(以自我矢量表示)。提出的矢量化规划约束在训练阶段对规划轨迹进行正则化。*:可选。
3.1. 矢量化场景学习
感知交通代理和地图元素对于理解驾驶场景至关重要。VAD 将场景信息编码为查询特征,并通过地图向量和代理运动向量来表示场景。
矢量化地图:先前的研究 [19,21] 使用栅格化的语义地图来指导规划,这遗漏了地图的关键实例级结构信息。VAD 利用一组地图查询 [29] Qm 从 BEV 特征图中提取地图信息,并预测地图向量 ˆ Vm ∈ RNm×Np×2 以及每个地图向量的类别得分,其中 Nm 和 Np 表示预测地图向量的数量以及每个地图向量包含的点数。
考虑三种地图元素:车道分隔线、道路边界和人行横道。车道分隔线提供方向信息,道路边界指示可行驶区域。地图查询和地图向量都被用于提升规划性能(第 3.2 节和第 3.3 节)。
矢量化代理运动:VAD 首先采用一组代理查询 Qa,通过可变形注意力机制 [53] 从共享的 BEV 特征图中学习代理级特征。基于 MLP 的解码器头从代理查询中解码出代理的属性(位置、类别得分、方向等)。为了丰富用于运动预测的代理特征,VAD 通过注意力机制进行代理与代理之间以及代理与地图之间的交互 [22, 37]。然后,VAD 预测每个代理的未来轨迹,将其表示为多模态运动向量 ˆVa∈RNa×Nk×Tf×2。Na、Nk 和 Tf 分别表示预测代理的数量、模态数量和未来时间戳的数量。运动向量的每种模态都表示一种驾驶意图。VAD 输出每种模态的概率得分。代理运动向量用于限制自我规划轨迹并避免碰撞(第 3.3 节)。同时,代理查询作为场景信息发送到规划模块(第 3.2 节)。
3.2. 通过交互进行规划
自我-代理交互:VAD 利用随机初始化的自我查询 Qego 来学习对规划有价值的隐式场景特征。为了学习其他动态交通参与者的位置和运动信息,自我查询首先通过 Transformer 解码器 [46] 与代理查询进行交互,其中自我查询作为注意力机制的查询 q,代理查询作为键 k 和值 v。感知模块预测的自我位置 pego 和代理位置 pa 由单层多层感知器 PE1 编码,并作为查询位置嵌入 qpos 和键位置嵌入 kpos。位置嵌入提供了代理与自我车辆之间相对位置关系的信息。上述过程可以表述为:
自车-地图交互,更新后的自我查询 Q′ ego 会以类似的方式进一步与地图查询 Qm 进行交互。唯一的区别在于我们使用了不同的 MLP PE2 来编码自我车辆和地图元素的位置。输出的自我查询 Q′′ ego 包含驾驶场景的动态和静态信息。该过程如下:
Planning Head.
由于 VAD 执行无高清地图的规划,因此导航需要高级驾驶指令 c。按照惯例 [19,21],VAD 使用三种驾驶指令:左转、右转和直行。因此,规划头将更新后的自我查询 (Q′ ego,Q′′ ego) 和当前车辆状态 sego(可选)作为自我特征 fego,以及驾驶指令 c 作为输入,并输出规划轨迹。VAD 采用基于 MLP 的简单规划头。解码过程如下:
其中 [...] 表示连接操作,ft 表示用于解码的特征,cmd 表示导航驱动命令。
3.3. 矢量化规划约束
3.3. 矢量化规划约束
VAD 基于学习到的地图向量和运动向量,在训练阶段使用实例级矢量化约束对规划轨迹 ˆVego 进行正则化,如图 3 所示。
图 3. 矢量化规划约束说明。自代理碰撞约束旨在确保自车辆与其他代理之间的纵向和横向安全。当规划轨迹过于靠近车道边界时,自边界超越约束会惩罚预测。自车道方向约束利用距离自车辆最近的车道向量方向(右侧子图中的粉色车道)作为先验,来规范规划的运动方向。
自代理碰撞约束:自代理碰撞约束明确考虑了自规划轨迹与其他车辆未来轨迹的兼容性,以提高规划安全性并避免碰撞。与以往[19,21]采用密集占用图的研究不同,我们利用矢量化的运动轨迹,既保持了良好的可解释性,又减少了计算量。具体而言,我们首先通过阈值ϵa滤除置信度较低的代理预测。对于多模态运动预测,我们使用置信度得分最高的轨迹作为最终预测。我们将碰撞约束视为自车辆在横向和纵向上的安全边界。多辆车在横向上可能彼此靠近(例如并排行驶),但在纵向上需要更长的安全距离。因此,我们对不同方向采用不同的代理距离阈值δX和δY。对于每个未来时间戳,我们会在两个方向上找到一定范围 δa 内最近的代理。然后,对于每个方向 i ∈ {X,Y},如果与最近代理的距离 di a 小于阈值 δi,则该约束的损失项 Li col = δi − di a,否则为 0。自代理与代理碰撞约束的损失可以表示为:
自我边界越界约束:此约束旨在将规划轨迹推离道路边界,从而使轨迹保持在可驾驶区域内。我们首先根据阈值ϵm滤除置信度较低的地图预测。然后,对于每个未来时刻tamp,我们计算规划航点与其最近地图边界线之间的距离dt bd。此约束的损失公式如下:
其中δbd是地图边界阈值。
车道自方向约束:车道自方向约束源于车辆运动方向应与车辆所在车道方向一致的先验知识。方向约束利用矢量化的车道方向来正则化规划轨迹的运动方向。具体而言,首先,我们根据ϵm滤除置信度较低的地图预测。然后,我们在每个未来时间戳找到距离规划航点最近的车道分隔线向量 ˆvm∈RTf×2×2(在一定范围δdir内)。最后,该约束的损失是车道向量与车道向量随时间平均的角度差:
其中 ˆ vego ∈ RTf× 2× 2 是规划自我向量。ˆ vt ego 表示从上一个时间戳 t-1 的规划航点出发,指向当前时间戳的规划航点的自我向量。Fang(v1,v2) 表示向量 v1 和向量 v2 之间的角度差。
3.4. 端到端学习
矢量场景学习损失:矢量场景学习包括矢量地图学习和矢量运动预测。对于矢量地图学习,采用曼哈顿距离计算预测地图点与真实地图点之间的回归损失。
此外,使用焦点损失[30]作为地图分类损失。整体地图损失表示为Lmap。
对于矢量运动预测,我们使用l1损失作为预测代理属性(位置、方向、大小等)的回归损失,使用焦点损失[30]作为预测代理类别的损失。
对于每个与真实代理匹配的代理,我们预测Nk条未来轨迹,并使用最终位移误差(minFDE)最小的轨迹作为代表性预测。然后,我们计算该代表性轨迹与真实轨迹之间的 l1 损失作为运动回归损失。并采用焦点损失作为多模态运动分类损失。整体运动预测损失记为 Lmot。
矢量化约束损失:矢量化约束损失由 3.3 节中提出的三个约束组成,即自我-智能体碰撞约束 Lcol、自我-边界越界约束 Lbd 和自我-车道方向约束 Ldir,它们使用矢量化场景表示对规划轨迹 ˆVego 进行正则化。
模仿学习损失:模仿学习损失 Limi 是规划轨迹 Vego 和真实轨迹 Vego 之间的 l1 损失,旨在以专家驾驶行为引导规划轨迹。Limi 的公式如下:
VAD 基于所提出的矢量化规划约束进行端到端训练。端到端学习的总损失是矢量化场景学习损失、矢量化规划约束损失和模仿学习损失的加权和:
4.Experiments
我们在具有挑战性的公开数据集 nuScenes[1] 上进行实验,该数据集包含 1000 个驾驶场景,每个场景大约持续 20 秒。nuScenes 总共提供 23 个类别的 1.4M 个 3D 边界框。场景图像由 6 个摄像头水平覆盖 360° 视野拍摄,关键帧以 2Hz 的频率进行标注。借鉴前人研究 [19,21],我们采用位移误差 (DE) 和碰撞率 (CR) 来全面评估规划性能。对于闭环设置,我们采用CARLA模拟器[12]和Town05[42]基准进行仿真。借鉴前人的研究[19,42],我们使用路线完成率(RC)和驾驶评分(DS)来评估规划性能。
4.1. 实施细节
VAD 使用 2 秒的历史信息并规划 3 秒的未来轨迹。ResNet50 [16] 被用作图像特征编码的默认主干网络。
VAD 对 60 米×30 米的感知范围进行纵向和横向的矢量化映射和运动预测。我们有两种 VAD 变体:VAD-Tiny 和 VAD-Base。VAD-Base 是实验的默认模型。BEV 查询、地图查询和代理查询的默认数量分别为 200×200、100×20 和 300。总共有 100 个地图矢量查询,每个查询包含 20 个地图点。特征维度和默认隐藏大小均为256。与VAD-Base相比,VAD Tiny的BEV查询更少,为100×100。运动和地图模块的BEV编码器层和解码器层的数量从6个减少到3个,输入图像大小从1280×720减少到640×360。
训练过程中,置信阈值ϵa和ϵma设置为0.5,距离阈值δa、δbd和δdri分别为3.0m、1.0m和2.0m。智能体安全阈值δX和δY分别设置为1.5m和3.0m。我们使用AdamW[36]优化器和余弦退火[35]调度器来训练VAD,权重衰减率为0.01,初始学习率为2×10−4。VA在8块NVIDIA GeForce RTX 3090 GPU上训练了60个epoch,每个GPU的批量大小为1。
闭环评估采用VAD-Base。输入图像尺寸为640×320。参照先前的研究 [19,42],导航信息包含一个稀疏的目标位置和相应的离散导航命令。该导航信息由多层感知器 (MLP) 编码,并作为输入特征之一发送到规划头。此外,我们添加了一个交通信号灯分类分支来识别交通信号。具体来说,它由一个 ResNet50 网络和一个基于多层感知器的分类头组成。该分支的输入是裁剪后的正面图像,对应于图像的中上部分。图像特征图被展平后也发送到规划头,以帮助模型识别交通信号灯信息。
4.2. 主要结果
开环规划结果: 如表1所示,与之前的SOTA方法[21]相比,VAD在性能和速度方面均表现出巨大优势。一方面,VAD-Tiny和VAD-Base将平均规划位移误差大幅降低0.25m和0.31m。同时,VAD-Base将平均碰撞率大幅降低29.0%。另一方面,由于VAD不需要许多辅助任务(例如跟踪和占用预测)和繁琐的后处理步骤,它实现了基于矢量化场景表示的最快推理速度。 VAD-Tiny 的运行速度提高了 9.3 倍,同时保持了相当的规划性能。VAD-Base 实现了最佳规划性能,并且运行速度仍然提高了 2.5 倍。值得注意的是,在主要结果中,VAD 放弃了自我状态特征以避免在开环规划[50]中进行捷径学习,但使用自我状态特征的 VAD 的结果仍然保留在表 1 中以供参考。
闭环规划结果: 在 Town05 Short 基准测试中,VAD 的表现优于之前的 SOTA 纯视觉端到端规划方法 [19,42]。与 ST P3 [19] 相比,VAD 将 DS 大幅提升了 9.15,并且具有更好的 RC。在 Town05 Long 基准测试中,VAD 实现了 30.31 的 DS,接近基于 LiDAR 的方法 [42],同时将 RC 从 56.36 显著提升至 75.20。ST-P3 [19] 获得了更好的 RC,但 DS 却差得多。
4.3. 消融研究
设计有效性: 表 2 展示了我们设计选择的有效性。首先,由于地图可以为规划提供关键指导,因此在没有自我-地图交互的情况下,规划距离误差会更大(ID 1)。其次,自我-代理交互和自我-地图交互为自我查询提供了隐式场景特征,使自我车辆能够感知其他车辆的驾驶意图并进行安全规划。在没有交互的情况下,碰撞率会更高(ID 1-2)。最后,使用任何矢量化规划约束都可以降低碰撞率(ID 4-6)。当同时使用这三个约束时,VAD 实现了最低的碰撞率和最佳的规划精度(ID 7)。
表2. 设计选项的消融。“AgentInter.”和“MapInter.”表示规划模块中的自我-Agent和自我-地图查询交互。“OverStep. Const.”、 “Dir. Const.”和“Col. Const.”分别表示自我-边界越界约束、自我-车道方向约束和自我-Agent碰撞约束。
栅格化地图表示:我们在表中展示了使用栅格化地图表示的 VAD 变体的结果。 3. 具体来说,此 VAD 变体利用地图查询来执行 BEV 地图分割,而不是矢量化地图检测,并且更新后的地图查询与 VAD 一样用于规划变换器中。如表 3 所示,采用栅格化地图表示的 VAD 存在更高的碰撞率。
表3. 关于地图表示(栅格化/矢量化)的消融。“OverStep. Const.”和“Dir. Const.”分别表示自我边界越界约束和自我车道方向约束。
各模块运行时间:我们评估了 VAD-Tiny 各模块的运行时间,结果如表 5 所示。Backbone 和 BEV 编码器占用了大部分运行时间,用于特征提取和转换。运动模块和地图模块占用了总运行时间的 34.6%,用于完成多智能体矢量化运动预测和矢量化地图预测。得益于稀疏矢量化表示和简洁的模型设计,规划模块的运行时间仅为 3.4 毫秒。
4.4. 定性结果
我们在图 4 中展示了 VAD 的三个矢量化场景学习和规划结果。为了更好地理解场景,我们还提供了原始的周围摄像头图像,并将规划轨迹投影到前置摄像头图像上。VAD 可以准确预测多模态智能体运动和地图元素,并根据矢量化场景表示合理地规划自身未来的运动。
5. Conclusion
在本文中,我们探索了驾驶场景的完全矢量化表示,以及如何有效地整合矢量化场景信息以获得更佳的规划性能。由此产生的端到端自动驾驶范式被称为 VAD。VAD 兼具高性能和高效率,这对于自动驾驶系统的安全性和部署至关重要。我们希望 VAD 的出色表现能够向业界展示矢量化范式的潜力。
VAD 可以预测其他动态智能体的多模态运动轨迹。我们在碰撞约束中使用置信度最高的预测来提高规划安全性。如何利用多模态运动预测进行规划,值得未来探讨。此外,如何将其他交通信息(例如车道线、道路标志、交通信号灯和限速)整合到该自动驾驶系统中,也值得进一步探索。