GoRela:Go Relative for Viewpoint-Invariant Motion Forecasting
GoRela发布于2023年的ICRA,这项工作对自动驾驶运动预测任务当中的相对位置编码进行了探索,与它非常相似的一项工作是发布于2023年TPAMI的HDGT。与相对位置编码相关的经典工作还包括发布于2022年CVPR的HiVT。
摘要
运动预测任务对于自动驾驶汽车进行安全的路径规划来说是至关重要的。为了达到这一目标,近期的方法对场景当中的高精地图、代理的历史运动轨迹以及代理-代理、代理-道路之间的交互进行了探索,并基于上述要素对场景中代理的未来运动进行准确的预测。
目前主流的方法是以每一个场景中的目标代理作为参考帧,对其它代理的轨迹以及地图当中元素的位置进行编码。然而,这类方法的计算开销过大,并且针对多代理预测任务,需要以每一个目标代理为参考帧对整个场景进行重新标准化。
为了解决上述以代理为中心的编码方式而带来的计算开销过大的问题,解决的方案之一是将场景中所有代理的轨迹以及地图元素的位置编码到一个共享的参考帧当中(比如以自动驾驶汽车自身为参考帧)。然而,上述选择一个共享参考帧的编码方式仍然具有采样效率过低以及易受域迁移影响(比如,当自动驾驶汽车遇到不常见的状态时,比如自动驾驶汽车正在调头)的问题。
本文提出了一种有效的方法,来对场景中所有代理和地图元素进行编码,该方法不会降低运动预测的精度,并且不失泛化性。为了达到这一目标,本文提出了一种成对相对位置编码(pair-wise relative positional encoding),来将代理-代理、代理-道路、道路-道路之间的关系以及各个元素表示在一个异构的空间图(heterogeneous spatial graph)当中。这种参数化的方式使得模型具有场景的视角不变性,可以节省在线推理的开销,并于在线推理阶段复用离线期间已经计算的map embeddings。
本文方法所使用的解码器同样具有视角不变性,它可以在道路图(lane graph)上对代理的轨迹运动目标(goals)进行预测,并可以进行多样且上下文感知的多模态轨迹预测。
在Arogoverse 2以及一个较新的高速公路数据集(HighwaySim)上的实验结果表明了本文方法的有效性。
Introduction(精简版)
在这项工作中,作者将不同地图元素以及代理之间的交互以一种视角不变性(viewpoint agnostic)的方法进行表示,通过对它们之间的成对相对关系(pairwise relative relationships)进行建模来完成。
视角不变性的表示具有以下优点:
(i)通过降低问题的域规模,视角不变性可以帮助模型提升其泛化能力。
(ii)视角不变性可以使得采样更加高效,加快模型的训练速度,并减少模型所需的训练数据量。
(iii)视角不变性使得模型推理更加高效,因为场景编码只需要进行一次。
(iv)视角不变性使得场景当中的静态元素可以进行离线的特征计算,并于在线推理阶段直接复用。
Related Works(精简版)
Agent History Encoding
过去的方法采用栅格图 + CNN的方式来对代理的历史轨迹进行编码【这一技术路线现在已经不常用了】。
近期的基于向量化表示的方法使用1D CNNs【比如多尺度1D CNNs + MLPs】、RNN【比如GRU或LSTM】或Transformers【2024年的SEPT是典型代表,以及过去几年以former为后缀的若干方法,比如Wayformer、Scene Transformer、LAformer、mmTransformer、AgentFormer等】来对代理的历史运动轨迹进行编码。
Map Encoding
近期,基于向量化表示的方法将地图视为由道路和中心线集合构成的图,使用GNNs或Transformers来将地图特征与代理运动特征进行融合。
Heterogeneous Fusion
为了能够将代理和道路之间的特征进行融合,LaneGCN定义了一种late fusion,以下述方式来对信息进行传播,即:agent2map、map2map、map2agent、agent2agent。而LaneRCNN则采用early fusion,将代理的历史运动轨迹特征与道路图结点(lane-graph nodes)相融合。【LaneGCN和LaneRCNN这两项工作均来自Uber】
为了能够对异构信息融合的流程进行简化,SceneTransformer【来自Waymo】将代理的轨迹点以及道路图结点视为tokens,并使用cross-attention来进行特征融合。在SceneTransformer中,假定了一个共享的坐标帧,使得模型可以只对场景进行单次处理,其代价是失去场景不变性。
与上述方法不同,本文方法利用异构图当中的边属性(edge attributes in a heterogeneous graph)来对元素之间的成对相对位置编码(pair-wise relative positional encodings)进行表示,使得模型具有视角不变性。
据作者所了解,同期的工作HDGT是唯一一个探索自动驾驶运动预测当中成对相对位置编码的工作。然而,本文方法具有以下几个优点:
(i)本文所提出的成对相对位置编码是有界的(bounded),不需要在图构造的过程中使用过多的启发(heuristics)。
(ii)本文方法使用基于目标的轨迹解码器,它相较于HDGT中直接对未来轨迹进行回归而言相关更好。
(iii)由于本文方法在处理代理与道路元素之间的特征融合时采用late fusion,因此本文方法可以对高精地图当中静态元素的特征进行caching,从而降低模型的推理延迟。
上述差异使得GoRela在Argoverse 2上的表现超越了HDGT。
Future Trajectory Decoding
并行地对未来轨迹当中所有参数的混合量(all the parameters of a mixture of future trajectories in parallel)进行回归已经被视为轨迹解码阶段的默认方法,因为这种方法较为简单。然而,这类方法的轨迹输出通常会与真实地图相偏离,除非对这类方法施加基于地图先验知识的损失作为约束。
而随着时间的推移对未来轨迹进行自回归建模(model future trajectory autoregressively over time)的方法可以帮助模型更好地理解地图,但这类方法会产生额外的复合错误。
近期的许多SOTA方法将轨迹预测任务分解为轨迹终点预测和轨迹补全。其背后的假设在于轨迹的终点蕴含着未来轨迹当中极大部分的不确定性,并且这种方式使得多模态的轨迹预测更为简单。
由于在各个运动预测benchmarks当中模型的推理时间不是模型的评估指标之一,基于聚类的模型集成可以覆盖更广泛的轨迹模式。然而,模型集成的方法不能够在推理时间受限的场景当中使用。
在本文方法中,使用基于目标的轨迹解码方法,以道路图当中的结点作为锚点,GoRela提出了一种简单且有效的贪心目标采样器(greedy goal sampler),它不会带来额外的计算开销。
Pair-wise Relative Heterogeneous GNN
图神经网络通过在以边进行连接的结点之间进行消息传递来处理图结构的数据。在本节,本文方法提出了一种新颖的GNN框架,它将会作为backbone,用于处理由场景中的代理结点和地图结点构成的场景图,并根据场景图当中提取到的特征对代理的未来轨迹进行解码。
本文方法所提出的GNN架构的目标是在异构空间图(Heterogeneous Spatial Graph)中对结点之间复杂的交互进行特征提取。此处所说的空间(spatial)指的是每一个结点 x i x_i xi同时包含其所对应的属性 x i a x^a_i xia以及3-DOF姿态 x i p x^p_i xip, x i p x^p_i xip包含着描述结点中心坐标(centroid)及航向角(yaw)的信息。
异构指的是结点可能属于不同的于一类别,它们的结点属性(node attributes)可能含有不同的维度。
本文提出的GNN架构通过连续的(continuous)边属性 e i → j a e^a_{i \rightarrow j} ei→ja和离散的(discrete)边类别 e i → j c e^c_{i\rightarrow j} ei→jc来对结点之间的有向关系(directional relationships)进行描述。
在下一节当中,将会提出一种位置编码(positional encoding)的方式,来描述两个结点之间的相对姿态,通过为相对姿态加入位置编码,会使得相对姿态有界(magnitude bounded)并且具有视角不变性(viewpoint-invariant,不会被参考帧的旋转和平移所影响),从而使得模型的训练更加容易。在此之后,本文将会介绍异构消息传递层(heterogeneous message passing layer),在该GNN layer当中,带有位置编码的相对姿态将会作为图中的边属性。
Pair-wise Relative Positional Encoding(PairPose)
图中的每一个结点都包含一个姿态 x i p x^p_i xip,它由中心坐标(centroid) c i c_i ci和一个表示航向角(行驶方向)的单位向量 h i h_i hi组成。为了对结点 i i i和 j j j之间的成对位置关系进行描述,首先计算这两个结点之间的偏移向量 v i → j = c i − c j v_{i \rightarrow j} = c_i - c_j vi→j=ci−cj,同时计算角度差值(heading difference)的sine和cosine值:
sin ( α i → j ) = h i × h j , cos ( α i → j ) = h i ⋅ h j \sin (\alpha_{i \rightarrow j}) = h_i \times h_j, \cos (\alpha_{i\rightarrow j}) = h_i \cdot h_j sin(αi→j)=hi×hj,cos(αi→j)=hi⋅hj
需要注意的是,由于偏移向量 v i → j v_{i \rightarrow j} vi→j依赖于结点姿态中心点所在的随机全局坐标系,因此偏移向量自身不具备视角不变性。为了使得相对姿态的表示具有视角不变性,本文方法使用偏移向量的模长 d i → j = ∣ ∣ v i → j ∣ ∣ 2 d_{i \rightarrow j} = ||v_{i \rightarrow j}||_2 di→j=∣∣vi→j∣∣2以及结点 j j j的行驶方向 h j h_j hj与偏移向量 v i → j v_{i \rightarrow j} vi→j之间的sine与cosine角度值来对相对姿态进行描述:
sin ( β i → j ) = v i → j × h j ∣ v i → j ∣ ∣ h j ∣ , cos ( β i → j ) = v i → j ⋅ h j ∣ v i → j ∣ ∣ h j ∣ \sin(\beta_{i \rightarrow j}) = {{v_{i \rightarrow j} \times h_j}\over{|v_{i \rightarrow j}||h_j|}}, \cos(\beta_{i \rightarrow j}) = {{v_{i \rightarrow j} \cdot h_j}\over{|v_{i \rightarrow j}||h_j|}} sin(βi→j)=∣vi→j∣∣hj∣vi→j×hj,cos(βi→j)=∣vi→j∣∣hj∣vi→j⋅hj
为了使偏移向量的模 d i → j d_{i \rightarrow j} di→j有界,本文按照Attention is All you Need当中提出的解决方案,将每一段距离映射为一个向量 p i → j = [ p 1 , . . . , p N , r 1 , . . . , r N ] p_{i \rightarrow j}=[p_1, ..., p_N, r_1, ..., r_N] pi→j=[p1,...,pN,r1,...,rN],它由 N N N个不同频率的sine和cosine函数构成,它们代表着我们所感兴趣的距离区间(从几米到几百米)。具体来说:
p n = sin ( d i → j exp ( 4 n N ) ) , r n = cos ( d i → j exp ( 4 n N ) ) p_n = \sin(d_{i \rightarrow j}\exp({{4n}\over{N}})), r_n = \cos(d_{i \rightarrow j}\exp({{4n}\over{N}})) pn=sin(di→jexp(N4n)),rn=cos(di→jexp(N4n))
结点 i i i和 j j j之间的成对几何关系可以总结如下,其中 ⊕ \oplus ⊕表示concat操作:
g i → j a = [ sin ( α i → j ) , cos ( α i → j ) , sin ( β i → j ) , cos ( β i → j ) ] ⊕ p i → j g^a_{i\rightarrow j} = [\sin(\alpha_{i \rightarrow j}), \cos(\alpha_{i \rightarrow j}), \sin(\beta_{i \rightarrow j}), \cos(\beta_{i \rightarrow j})]\oplus{p_{i \rightarrow j}} gi→ja=[sin(αi→j),cos(αi→j),sin(βi→j),cos(βi→j)]⊕pi→j
最终的位置编码如下:
e i → j a = M L P ( g i → j a ) e^a_{i \rightarrow j} = MLP(g^a_{i \rightarrow j}) ei→ja=MLP(gi→ja)
Heterogeneous Message Passing(HMP)layer
HMP layer的目标是在有向图中根据结点的邻居特征 x i a ∈ N j x^a_i \in N_j xia∈Nj对结点的特征 x j a x^a_j xja进行更新。
对于每一个邻居结点
i
∈
N
j
i \in N_j
i∈Nj,计算一个从邻居
i
i
i到
j
j
j的消息
m
i
→
j
m_{i \rightarrow j}
mi→j,通过对源结点(即邻居结点)特征
x
i
a
x^a_i
xia与边属性
e
i
→
j
a
e^a_{i\rightarrow j}
ei→ja的拼接进行线性映射来完成消息(message)的构建。
需要注意的是,根据边类别 e i → j c e^c_{i \rightarrow j} ei→jc的不同,线性层的权重也是不同的,权重的维度依赖于结点特征的维度。【针对不同类型的结点使用不同权重的网络结构对结点特征进行映射是自动驾驶运动预测中异构图神经网络的常规套路】
之后,所有来自源结点(即邻居结点)的消息都会通过一个具有排列不变性的聚合函数(比如max-pooling)进行聚合。
随后,聚合的消息会与经过线性映射的结点特征相拼接,使用另一个线性层对拼接特征进行融合。
最后,使用一个更新函数(比如GRU单元,它带有门控)来对目标结点的特征进行更新,更新函数可以使得HMP layer控制所要保留的原实目标结点特征 x j a x^a_j xja的比例。从而得到更新后的目标结点特征 x j ′ a x'^a_j xj′a。
通过堆叠若干个HMP layers,得到了本文所提出的成对相对异构GNN(pair-wise relative heterogeneous GNN)。本文方法不使用GAT来对异构GNN进行构建的原因是GAT仅仅使用边来计算邻居结点的注意力权重,而没有直接使用边特征来更新结点特征,限制了模型的表达力。【以PyG为例,实际上在PyG的MessagePassing框架当中很容易实现一个基于注意力机制的图神经网络,而由于message是可以自定义的,在PyG框架下可以实现在GAT中使用边特征来对结点特征进行更新】
Viewpoint-invariant Motion Forecasting
本节将会介绍如何基于静态高精地图和代理的历史运动轨迹来高效地进行多代理未来轨迹预测。
首先分别对代理的历史运动特征和高精地图当中道路结点的特征进行计算。之后基于上文介绍的HMP layers,使用一张异构图对类内和类间的交互进行建模。最后,针对每一个代理,基于目标(即代理未来运动轨迹的终点)对代理的未来轨迹进行预测,之后基于轨迹终点补全整条轨迹。
作者将整个模型框架命名为GoRela,以强调模型在对场景当中元素之间的相对关系进行建模时均使用 “相对位置关系” ,以达到整个框架结构的视角不变性。
Agent History Encoder
现有的大多数运动预测方法均使用自动驾驶数据采集车辆在当前时刻( t = 0 t=0 t=0)的位置及其行驶方向作为整个场景的坐标中心。上述方法具有一些不好的性质,比如自动驾驶汽车处于场景中的不同位置和方向时,相同位置的交通参与者将由于坐标中心位置的变化而对应不同的嵌入表示。
与上述常见方法不同,本文设计了一种具有视角不变性的表示方法,来将代理的历史运动轨迹表示为历史轨迹坐标点(past waypoints)与当前时刻(current pose, t = 0 t=0 t=0)之间的成对相对位置编码(PairPose)。
更准确地来说,GoRela将代理的历史运动轨迹编码为 τ = [ e − T → 0 , . . . , e − 1 → 0 ] ∈ R T × D \tau = [e_{-T\rightarrow0, ..., e_{-1\rightarrow0}}] \in R^{T\times D} τ=[e−T→0,...,e−1→0]∈RT×D,其中 e t → 0 e_{t\rightarrow0} et→0指的是在某个历史观测时刻 t < 0 t \lt 0 t<0代理的姿态 x t p x^p_t xtp与当前时刻 t = 0 t=0 t=0代理姿态 x 0 p x^p_0 x0p之间的成对相对位置编码。需要注意的是当前时刻的 t = 0 t=0 t=0,而历史观测时刻为 t = − T t=-T t=−T。 D D D表示成对相对位置编码的特征维度。
之后,GoRela将每一个代理的历史运动轨迹编码 τ = [ e − T → 0 , . . . , e − 1 → 0 ] ∈ R T × D \tau = [e_{-T\rightarrow0, ..., e_{-1\rightarrow0}}] \in R^{T\times D} τ=[e−T→0,...,e−1→0]∈RT×D输入到带有残差连接的1D CNN中,再进一步输入到GRU当中,对代理的历史运动信息进行特征提取,使用GRU的最后一个隐藏状态作为代理结点的历史运动特征,即后续的异构空间图中代理结点的初始特征。这种特征提取的方式效果非常好,因为1D CNN可以提取局部的时间模式,而GRU可以根据一个可学习的隐藏状态来将局部时间模式进行聚合。重要的是,上述方式可以并行,在处理整个场景时,其推理速度非常的快。【猜测需要对采样缺失的时刻进行padding,使得并行处理整个场景中代理的历史运动信息时,历史运动轨迹编码的维度是对齐的】
Lane Graph Encoder
GoRela通过在高精地图当中以某个固定的间隔(对于城市数据,使用3m作为采样间隔,即所采样的道路中心线片段的长度为3m,而对于高速公路数据,使用10m作为采样间隔)对道路中心线进行采样来对道路图(lane graph)进行构建。
每一个道路段都将被表示为图中的结点,它的特征包括道路段的长度、宽度、弯度、限速以及车道边界的特征【这些特征都具有视角不变性,因为没有涉及到任何绝对位置】。按照LaneGCN当中的设置,这些道路结点将会采用四种方式进行连接,分别是前驱、后继、左邻和右邻。对于前驱和后继结点,与LaneGCN一样采用膨胀图卷积,膨胀跳数(hops)设置为 { 2 , 3 , 4 , 5 } \{2,3,4,5\} {2,3,4,5},这可以使得GNN的感受野在层间快速扩大,有助于辅助快速移动的车辆进行轨迹预测。
基于上述地图表示,作者发现统一从多边形横道对道路结点进行采样是有帮助的,因为这些结点与行人以及将会与行人进行交互的车辆高度相关。
为了帮助模型理解相互重叠的地图实体之间的交互(比如位于十字路口的车道,或是人行横道与车道),在构建道路图时,GoRela为每一对属于不同地图实体并且距离少于2.5m的道路结点引入了一条“冲突边”(conflict edge)。
GoRela使用上文介绍的HMP layers的堆叠来对道路图当中的结点特征进行更新。
值得注意的是,由于本文方法在对数据进行预处理时采用了视角不变的表示方法,因此GoRela当中的道路图编码器可以对地图特征进行离线计算。
Heterogeneous Scene Encoder
GoRela基于HMP layers对代理结点和道路结点的特征进行融合。
异构场景图中包含代理和道路结点,这两种结点的属性由上述的代理历史运动编码器(agent history encoder)和道理图编码器(lane graph encoder)来完成初始化。
除了上文中车道图编码器所使用的map-to-map edges之外,异构场景图中还包含agent-to-agent、agent-to-map和map-to-agent edges。GoRela在当前 t = 0 t=0 t=0时刻基于代理和道路的位置为相距最近的异构结点构建agent-to-map和map-to-agent edges。GoRela将每个代理结点100m内的代理结点进行连接以构建agent-to-agent edges。
在Message Passing的每一轮当中,GoRela会计算来自每一种边的message,并根据来自不同类型的边的heterogeneous message,同时对代理和道路的结点特征进行更新。这与LaneGCN中先后定义了四种消息传递并依次进行不同,GoRela并行地进行异构消息传递,并同时更新异构结点的特征。
Goal-based Decoder
为了对代理的未来轨迹进行解码,GoRela首先预测代理的未来轨迹终点作为目标。GoRela将目标预测问题视为一个基于道路图结点的多分类问题,这使得GoRela可以充分利用基于异构场景编码器所得到的map embeddings。
为了使得目标预测的分辨率比道路图结点的采样频率更高,GoRela在对终点进行预测的同时,还会对候选终点与道路图之间的连续偏移(continuous offset)进行回归。
为了得到分类分数(classification scores)以及回归偏移(regression offsets),GoRela构建了一个包含 A A A个相连成分(connected components)的图,每一个成分与场景中的一个代理相对应。根据图的连通性,在这一阶段保留与上文相同的map-to-map edges,并连接所有可能的map-to-actor和actor-to-map pairs。
代理和道路图的特征将会使用上述异构场景编码器得到的结果进行初始化,使用HMP layers的堆叠来对结点特征进行进一步的更新。
Greedy Goal Sampler
为了对每一个代理可能的多模态轨迹进行预测,即对未来 K K K个可能的模式进行预测,本文方法进一步提出了一种简单高效的贪心目标采样器(greedy goal sampler)。
在每一次迭代的过程中,进行:
(1)对具有最高概率的目标进行的采样(sample the goals with highest probability);
(2)移除距离小于 γ \gamma γ的结点;
(3)降低距离小于 v v v( v > γ v\gt\gamma v>γ)的结点的权重。
上述过程将会重复 K K K轮。其背后的直觉是,如果目标的概率分布是单模态的,我们就应该尽可能地从它周围进行采样,而如果目标的概率分布是多模态的,即使每一种模式附近的概率分布是不平衡的,也希望尽可能地从不同的模式进行采样。
Trajectory Completion
最后,GoRela将会基于目标对所有代理的多模态未来轨迹进行补全。
GoRela将会在agent-relative coordinates中对代理的轨迹进行补全,使得模型可以使用代理车辆在当前时刻的行驶方向作为先验。
针对不同类型的代理,在类内使用相同的MLPs对轨迹的2D坐标点进行回归,而在类间这些MLPs地权重是不同的。
Training
在对GoRela进行训练时,优化三种损失,分别是目标分类损失、目标偏移回归损失和轨迹补全损失。
使用focal loss作为目标分类损失。
只对与目标相距最近的结点计算便宜损失,使用Huber loss作为目标偏移回归损失。
基于Teacher Forcing来对轨迹补全模块进行训练,即在训练期间将Ground Truth目标为给轨迹补全模块进行训练。在轨迹补全的agent-centric coordinates当中,使用Huber loss作为每一个坐标点的回归损失。
模型最终的训练进行了17个epochs,使用了16张T4 GPUs,训练的batch size为64。
Conclusion
本文提出了GoRela,它是一种同时适用于城市驾驶场景以及高速公路场景的多代理运动预测模型。
实验结果表明,本文方法做出了以下贡献:
(i)本文方法提出了一种具有视角不变性的运动预测架构,基于成对相对位置编码的数据预处理使得模型的训练更加简便;
(ii)本文方法提出了一种功能多样的图神经网络,它可以用于理解异构空间图当中的复杂交互,使得模型可以对由代理和道路结点以及多种类型的边组成的异构图进行特征提取;
(iii)本文方法提出了一种概率性的目标解码器,它利用道路图当中的道路结点作为真实的目标,并使用贪心目标采样器(greedy goal sampler)来增加终点目标的多样性,从而更好地辅助模型对代理的多模态未来轨迹进行预测。