【论文阅读】VAD: Vectorized Scene Representation for Efficient Autonomous Driving
一、介绍
VAD是华科团队设计的一个端到端无人驾驶框架,针对传统的无人驾驶框架的模块化设计的问题,该算法使用向量化的策略进行了端到端的实现。传统的模块化设计使得感知模块完全依赖于感知模块的计算结果,这一解耦实际上从规划模块的角度损失了很多的信息,诸如语义信息。VAD采用向量化的策略进行了重新设计,从实验结果上来看超过了上海实验室提出的UniAD。
二、方法
VAD的模型以多视角的图像作为输入,编码后提取BEV特征,该特征会被送到Transformer中提取两类特征,这两类特征后续应用到轨控模块中。
3.1 Vectorized Scene Learning
这一节主要是介绍特征提取的部分。首先论文并没有介绍从多视角图像到BEV图像这个过程是如何实现的,应该是直接使用了现成的转换模型。论文直接是从得到BEV视角后开始介绍的。这一部分实际上包括了两种查询:Ageng query和Map query。这里的query实际上就是Transformer里面的那个query,我们主要就是训练这个query。
Map query
先给出结论, 这一个查询输入是BEV视角下的特征,输出是场景中的向量化的实例特征,可以理解为“当前场景中的物体以及哪些点归属于这些物体”。这个实例特征作者起名叫做map vector,它是一个Nm×Np×2大小的矩阵,其中Nm表示场景中物体的数目、Np为一个物体占据的点的数目,最后的2则是说它在BEV视角下的位置。这一个模块中算法主要关注三个内容:车道分割线、道路边界以及人行横道。简单来说就是通过Transformer处理之后,最后转换为一个三分类任务。
Agent query
与Map query类似,这一部分其实也是提取一类特征,主要是对场景中的物体的行进轨迹进行预测,这一预测会被用到后续的规划中。这一部分的输入依然是BEV视角下的特征,输出的是一个大小为Na×Nk×Tf×2的矩阵,其中Na表示场景中物体的数量,Nk表示行驶状态,Tf表示未来的时间戳,最后的2则是BEV视角下的坐标。我的理解是,这个矩阵表示了未来Tf时间内,Na个车辆的行驶状态及位置。相当于在这个模块内进行了所有交通参与者的状态预测,利用这一预测结果来约束后面轨控模块的行驶策略。
在这个模块中,稍微补习了一下Transformer的内容,在Transformer的编码器中,关键的三个值是query、key和value,其中query是我们训练的结果,key和value则是输入的变种。对于VAD中的查询模块,key和value都来源于BEV视角下的特征输入。这里的过程如下图:
查询的数量并不等于类别数量,查询相当于多个卷积核,只负责特征的提取,而真正影响类别数量的是最后softmax层的结构。计算Key和Value的时候,映射矩阵Wk和Wv相当于一个降维的作用,负责对齐Key、Value以及Query的维度,这两个映射矩阵也是模型需要学习的参数。计算注意力的时候,所涉及的维度变化为:
在计算注意力之前,其实就已经存在一个展平的过程,原本BEV应该是H×W×C大小的,每张图是H×W,一共有C张,在计算键值的时候就已经展平了,这样子才可以与Wk和Wv进行计算,计算之后的键值变为D个长度为H×W的向量,拼成一个二维矩阵,key首先与query进行计算,得到相关性,这一相关性与value加权求和,得到大小为Nm×D的二维矩阵,表示D个长度为Nm的向量,可以解释为Nm个关键信息,每个信息都是一个长度为D的向量。这些信息会通过MLP解码进行后处理,将D维度调整为Np×2的维度,这样子就可以恢复出地图元素的位置以及包括的点。最终变成Vm: