GitHub
ICCV 2023
1. 简介
本文贡献
- 将场景建模为向量化表示,舍弃了传统的稠密删格化表示和人工设计的后处理
- 通过查询交互和矢量化规划约束,隐式和显式地利用矢量化场景信息来提高规划安全性
- 性能好,设计简洁推理速度快

2. 相关工作
3. 方法

- 首先从输入的多帧多视角图片中得到BEV特征
- 使用一组map query从个BEV特征中提取信息得到map向量和更新后的map query,具体见3.1
- 使用一组agent query从个BEV特征和更新后的map query中提取信息得到motion向量和更新后的agent query,具体见3.1
- ego query与agent query和map query进行注意力交互,并接收上层的驾驶指令和自车状态(可选),最终输出自车轨迹,具体见3.2
- 自车轨迹会和map向量、motion向量一起输入到规划约束中,以此计算loss,具体见3.3
3.1 向量化场景学习
向量化map
得到的除了map向量和map query之外,还有每个map类别的置信度,用来计算loss。map的类别包括:车道线、道路边界、人行横道。map向量的尺寸为V^m∈RNm×Np×2。其中Nm代表向量的数量,Np代表每个向量的点数,2代表横、纵坐标
向量化agent motion
得到的除了motion向量和agent query之外,还有每个agent的属性以及预测多条运动轨迹的置信度,用来计算loss。agent的属性包括:位置、朝向、类别置信度(轿车、卡车、自行车等)、尺寸等。motion向量的尺寸为V^a∈RNa×Nk×Tf×2。其中Na代表agent的数量,Nk代表运动模态的种类,Tf代表预测的时间步
3.2 通过交互规划
ego与agent交互
首先随机初始化ego query Qego,将agent query视为key和value,二者传入Transformer的解码器。ego的位置pego和agent的位置pa通过单层MLP编码后分别称为query的位置嵌入和key的位置嵌入,公式写为
Qego′=TransformerDecoder(q,k,v,qpos,kpos)q=Qego,k=v=Qaqpos=PE1(pego),kpos=PE1(pa)
ego与map交互
采用类似的方式令更新后的ego query Qego′与map query Qm交互。唯一不同的是这次使用不同的MLP来编码ego的位置pego和map元素的位置pm,公式写为
Qego′′=TransformerDecoder(q,k,v,qpos,kpos)q=Qego′k=v=Qmqpos=PE2(pego),kpos=PE2(pm)
规划头
因为VAD舍弃了高精地图,因此导航时需要一个高位驾驶指令c,通常使用三种指令:左转、右转和直行。因此规划头接收 更新的ego query Qego′,Qego′′、驾驶指令c以及可选的输入———自车当前的状态信息sego。规划头会输出规划出的轨迹V^ego∈RTf×2,规划头基于简单的MLP,公式写为
V^ego=PlanHead(ft=fego,cmd=c)fego=[Qego′,Qego′′,sego]
3.3 向量规划约束

ego-agent碰撞约束
此约束是避免自车与其他参与者发生碰撞。首先使用阈值ϵa剔除掉低置信度的agent,对每个agent只选择置信度最大的轨迹。自车只需要在横向上保持较小的安全距离δX但是需要在纵向上保持较大的安全距离δY,自车规划出的轨迹在不同时刻与最近agent的距离记为dait,其中t为不同时间点,i为横纵两种方向,公式为
Lcol=Tf1t=1∑Tfi∑Lcolit,i∈{X,Y}Lcolit={δi−dait0if dait<δiotherwise
ego-boundary越界约束
此约束是让自车远离道路边界。依旧首先使用阈值ϵm剔除掉低置信度的map元素(道路边界),自车规划出的轨迹在不同时刻与最近地图边界线的距离记为dbdt
Lbd=Tf1t=1∑TfLbditLbdit={δbd−dbdt0if dbdt<δbdotherwise
ego-车道方向约束
此约束是让自车不会逆行。依旧首先使用阈值ϵm剔除掉低置信度的map元素(车道),在δdir范围内寻找最近的车道向量v^m
Ldir=Tf1t=1∑TfFang(v^mt,v^egot)
其中v^egot是规划出的第t−1个路径点指向第t个路径点;Fang是计算向量夹角
3.4 端到端学习
map loss
采用曼哈顿距离来计算预测map点与真实map点之间的回归损失;并采用focal损失来计算map类别的损失。map的总体损失记为Lmap
motion loss
对于agent首先采用ℓ1损失计算预测agent属性(位置、朝向、尺寸等)的回归损失,并使用focal损失计算agent类别的损失。
对于motion,每个agent预测了Nk条motion,选择最终位移误差最小的motion作为代表性预测motion。然后计算该代表性motion与真实motion之间的ℓ1损失作为motion回归损失,同时采用focal损失作为多模态运动分类损失。总体损失记为Lmot
模仿学习损失
计算预测轨迹和真实轨迹的ℓ1损失
Limi=Tf1Tf∑t=1∥Vegot−V^egot∥1
总损失是各损失的加权和
L=ω1Lmap+ω2Lmot+ω3Lcol+ω4Lbd+ω5Ldir+ω6Limi
4. 实验
在nuScenes上进行开环测试,在carla上进行闭环测试
代码分为VAD-Tiny和VAD-Base
5. 总结