摘要:本文介绍了VectorNet,这是一个层次化的图神经网络,它首先利用了由向量表示的单个道路组件的空间位置,然后对所有组件之间的高阶相互作用进行建模。最近的方法是将运动物体的轨迹和道路环境信息作为鸟眼图像,用卷积神经网络(ConvNets)进行编码,而我们的方法在一个矢量表示上操作。通过对矢量的操作高清晰度(HD)地图和代理人的轨迹,我们避免了有损的渲染和计算密集的ConvNet编码步骤。为了进一步提高VectorNet学习上下文特征的能力,我们提出了一个新的辅助性任务来恢复被随机屏蔽的地图实体和代理基于他们的上下文的轨迹。
一、简介
道路特征的地理范围可以是一个点,一个多边形,或地理坐标的曲线。例如,一个车道边界包含多个控制点,构建了一条spline;一条人行横道是由几个点定义的多边形(polygon);一个停车标志由一个点表示。所有这些地理实体都可以被近似为由多个控制点定义的折线(polylines),以及它们的属性。同样地,移动的代理人的动态也可以用基于其运动轨迹的折线来近似表示。然后,所有这些polylines可以表示为一组矢量。
我们使用图形神经网络(GNNs)来纳入这些矢量集。我们将每个矢量视为图中的一个节点,并将节点特征设定为每个矢量的起始位置和结束位置,以及其他属性,如多线组ID和语义标签。来自高清地图的上下文信息,以及其他移动代理的轨迹通过GNN传播到目标代理节点上。然后,我们可以采取与目标代理对应的输出节点特征来解码其未来的轨迹。
具体来说,为了用GNN学习有竞争力的表征,我们观察到,根据节点的空间和语义接近程度来约束图的连接性是很重要的。因此,我们提出了一个分层图结构,属于相同语义标签的多线的向量被连接并嵌入到多线特征中,然后所有的多线被完全连接在一起以交换信息。我们用多层感知器来实现局部图,用自我注意来实现全局图[30]。我们的方法概述见下图。
上图:观察到的代理人轨迹和地图特征被表示为矢量序列,并传递给本地图网络以获得多线级特征。然后,这些特征被传递到一个完全连接的图中,以模拟高阶的相互作用。我们计算两种类型的损失:从移动的代理所对应的节点特征预测未来的轨迹,以及在其特征被掩盖的情况下预测节点特征。
除了行为预测目标外,我们还提出了一个辅助的图完成目标。更具体地说,我们随机屏蔽掉属于场景背景或代理人轨迹的输入节点特征,并要求模型重建被屏蔽的特征。
贡献:1、我们首次展示了如何直接将矢量化的场景背景和代理人的动态信息纳入行为预测。2、我们提出了分层图网络VectorNet和节点完成辅助任务。
总结:用vector代表道路中的每一个元素--->同一元素的多个vector组成vectors--->相连形成一条polyline--->几条polylines形成子图subgragh--->几个subgraghs之间用GNN,解码其中的agent的预测结果。
二、相关工作
1、不像采用卷积神经网络来编码渲染的道路地图的方法,我们提出直接编码矢量化的场景信息和动态交通参与者。
2、我们更进一步地提出了一个统一的分层的图网络结构来同时建模多个交通参与者之间的交互关系,以及他们和道路环境之间的交互关系。
3、我们提出了一个图表示的辅助损失,它通过其他节点的特征来预测缺失的节点特征。其目标是激励模型更好地捕捉节点之间的交互。
三、VectorNet
如何向量化轨迹和地图+分层图网络(它汇总了各个折线的局部信息,然后在所有轨迹和地图特征上进行全局分析)
1、轨迹和地图的表示
在道路上所有元素都可以用一系列vector表示。对于地图特征,我们选择一个起点和方向,在相同的空间距离内从样条上均匀地抽取关键点,并依次将相邻的关键点连接成矢量;对于轨迹,我们可以从t=0开始,以固定的时间间隔(0.1秒)对关键点进行采样,并将它们连接成向量。只要有足够小的空间或时间间隔,得到的折线就可以作为原始地图和轨迹的近似值。
向量化的过程,是一个在连续轨迹、地图标注和矢量集合之间的一对一的映射,这使我们可以在矢量集合上构建一个可以被图神经网络编码的图表示结构。更具体地说,我们将属于ploylines中的每一个vector看做GNN中的一个节点Vi。,其中,di\s和di\e分别是vector的start和end的2维或3维的位置坐标;a代表特征,如动态交通参与者的类型,轨迹的时间戳,或是道路特征的类型,或是车道线的速度限制;j代表Pj中的id,表示 Vi属于 Pj。
为了使输入的节点特征与对应的交通参与者的位置无关,我们将所有矢量的坐标原点确定在对应的交通参与者最后被观察到的位置。一个将来的工作是为所有交互的交通参与者设定一个坐标原点,这样他们的轨迹可以被平行地预测出来。
2、ployline子图的构建
为了利用节点的局部空间和语义信息,我们采用了层级的方法,首先在向量层级上构建子图,其中属于同一折线的所有向量节点互相连接。假设一条折线ployline中包含节点{v1,v2,...vp},每一层的传播方式如下:
其中,Vi\(l)是整个子图网络中第l层的节点特征(Vi(0)是Vi的初始输入特征),函数genc (·)编码独立的节点特征(encoder), 函数ϕagg (⋅)聚合所有相邻节点的特征, ϕrel(⋅)是节点 Vi与其相邻节点之间的关系运算。这个公式意思就是说,子图中每一层的每一个节点,是来自于其上一层中自身节点的编码结果,与上一层中周围节点的聚合结果,之间进行关系运算得到的。实际上,函数genc (·)就是用MLP进行的编码,且所有节点共享权重,但每一层的权重是不同的。具体来说,MLP包含一个的全连接层,然后是层归一化,最后是ReLU激活函数。函数ϕagg (⋅)是一个最大池化操作, ϕrel(⋅)是一个简单的拼接。具体流程如图:
得到子图网络的每一层之后,其中每层genc (·)的权重是不一样的。最后,为了获取折线的特征,计算, 函数ϕagg (⋅)仍然是最大池化层。
3、高阶交互的全局图
把从由许多vector得到的每一个polyline{P1,P2,...,Pp}看做全局交互图GNN中的节点,
其中,GNN(⋅)为一层图神经网络,A为折线节点集合的邻接矩阵。这个公式意思是说,每一层的polyline节点来自于其上层中自身节点和邻接矩阵构成的GNN网络得来的。邻接矩阵A可以是启发式的,例如使用节点之间的空间距离[2]。为简单起见,我们假设A是一个全连接图。我们的图网络通过自注意力机制实现[30]:
其中,P是节点的特征矩阵。
其中,Lt是GNN的层数,ϕtraj(⋅)是轨迹解码器(decoder),在这里也用MLP。更多高级的解码器,比如MultiPath提出的基于候选轨迹(anchor-based approach)的方法,或是变分循环神经网络都可以用来生成多样化的轨迹;这些解码器是我们输入编码器的补充。
为了鼓励全局交互图更好地捕捉不同轨迹和地图之间的交互,我们提出了一个辅助的图补全任务。在训练过程中,我们随机掩盖一些折线节点的子集特征,如Pi,然后尝试去还原被掩盖的节点特征:,其中,ϕnode(⋅)是通过MLP实现的节点特征解码器。这些节点特征解码器在推理阶段是不会使用的。Pi是一个全连接的,无序的图中的一个节点。为了能够识别出对应的节点,当它对应的节点特征被掩盖时,我们计算出所有属于对应节点P_i^{id}的向量中的起始点坐标的最小值。然后定义输入节点的特征为:
4、loss
其中,Ltraj是对未来真值轨迹的负高斯对数似然,Lnode是预测的节点特征和被掩盖的真值节点特征之间的Huber损失, α = 1.0用来平衡两个损失项的标量。为了通过降低节点特征的大小来避免 Lnode的平凡解,我们在将折线节点特征输入到全局图网络之前对其进行L2归一化。我们预测的轨迹参数化为每个时间步的坐标偏移,并从最后一个观测位置开始。同时,我们基于预测目标车辆最后一个观察时刻的朝向旋转坐标系。
注:参考翻译:【论文翻译】VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation_尊新必威的博客-CSDN博客