
前言
- 论文: https://arxiv.org/pdf/2005.04259
- 代码: https://github.com/xk-huang/yet-another-vectornet
- 年份: 2020.05
- 数据: argoverse + in-house behavior prediction dataset
(vectornet算法流程)
-
读取轨迹和地图数据,将其转换为向量化表示
-
对每个向量化的polyline实体,使用子图网络(MLP+GNN)进行局部子图编码,并输出局部特征
-
以每个实体的局部子图输出特征作为节点,节点间基于自注意力机制的相似度作为边构建全局图(GNN+self-attention)
-
对所有向量化的polyline实体,使用GNN进行全局交互建模,输出每个实体的隐状态
-
对每个agent,使用一个MLP解码器生成多个可能得未来轨迹,并估计他们的概率
-
计算损失函数,使用ADE和FDE作为评价指标
-
GNN:
- GNN先聚合轨迹和地图polyline的局部信息,再全局聚合所有polyline之间的特征,然后可以将该图用于行为预测
- GNN聚合polyline局部信息时候通过多层GNN操作来找到polyline内部向量之间的关系,在聚合全局信息时通过self-attention自注意力机制来找到各个polyline之间的联系
(向量表示)
-
地图向量构建
- 选定起点和方向,从相同空间距离的样条中均匀采样关键点,并将相邻关键点顺序连接成向量
-
轨迹向量构建
- 从t=0开始,以固定时间间隔0.1s采样,并将他们连成向量
不管是地图还是轨迹,只要空间或时间间隔合适,生成的折线polyline就可以作为原始元素的近似
(图构建)

-
我们在向量集之上能够形成一个图形表示
-
将polyline的一个向量视为节点, 每个节点特征如下 v i = [ d i s , d i e , a i , j ] v_{i} =[d_{i}^{s}, d_{i}^{e}, a_{i}, j] vi=[dis,die,ai,j]
- 前两个是start和end点坐标, 可以是(x,y)也可以是(x,y,z)
- 第三个是属性特征, 比如目标类型, 时间戳, 道路特征, 道路限速和其他目标特征
- 第四个是polyline的整数id,表示节点属于polyline, polyline内部相同
-
以agent为中心,所有向量的坐标归一化;最后还需要共享所有交互agent的坐标中心以便能并行预测它们的轨迹
(子图构建)
-
在向量级别构建子图, 以利用节点的空间和语义局部性, 属于同一polyline的所有节点相互连接, 即每个节点和polyline其余所有节点连接
-
对于一个polyline, P的节点有 v 1 , v 2 , . . . , v p {v_1, v_2, ..., v_p} v1,v2,...,vp
-
可以定义子图网络如下 v i l + 1 = ϕ r e l ( g e n c ( v i l ) , φ a g g ( v j l ) ) v_{i}^{l+1} = \phi _{rel}(genc(v_{i}^{l}), \varphi _{agg}(v_{j}^{l}) ) vil+1=ϕrel(genc(vil),φagg(v