FFINet:Future Feedback Interaction Network for Motion Forecasting
今天分享的这篇工作发表于2024年的IEEE Transactions on Intelligent Transportation Systems。从文章的标题中不难看出,FFINet显式地对代理在未来时刻运行轨迹之间可能的交互进行了探索,并以反馈的形式与观测时刻的历史运动信息进行交互,从而使用包含着更丰富信息的特征对最后的未来轨迹进行预测。
想要对未来轨迹的交互进行建模,首先要做的是对未来轨迹进行初步的预测,之后再对初步预测的未来轨迹进行编码,得到初步预测未来轨迹的特征,使用特征对应的embedding来对交互进行建模,再与观测时刻的历史运动信息进行交互,这符合近年来流行的双阶段轨迹预测,即首先生成轨迹的proposals,再对proposals进行refine,从而生成最终的预测轨迹。
摘要
运动预测在自动驾驶当中扮演者重要的角色,它的任务是对交通参与者在未来可能的运动进行合理的预测。大多数现有的方法聚焦于对观测时刻内代理与环境之间的交互进行建模,并以一种前馈的方式对目标代理多模态的未来轨迹进行预测,这些方法忽略了由代理之间在未来时刻产生的交互而导致的轨迹变换【比如,不同的代理可能会在未来时刻驶入相同的车道,过去的方法没有考虑代理在未来时刻轨迹之间的冲突】。
在这项工作中,作者提出了一种新颖的框架,名为Future Feedback Interaction Network(FFINet),该框架同时使用当前时刻特征(current),历史观测时刻特征(observation)以及可能的未来时刻交互特征(future interaction)来对目标代理的未来轨迹进行预测。
首先,本文方法使用不同的时空编码器来对每一个场景当中解耦的位置向量【decomposed position vectors】以及当前时刻位置【current position】进行编码,来为后续的跨时域聚合【cross-temporal aggregation】提供丰富的特征。
随后,在FFINet框架当中的四个模块:当前融合模块(current fusion module),观测时刻交互模块(observation interaction module),未来反馈模块(future feedback module)以及全局交互模块(global fusion module),采用相对交互(relative fusion)以及跨时域融合策略(cross-temporal aggregation)来对特征进行融合。其中,未来反馈模块(future feedback module)可以通过将未来信息反馈到前向预测的过程中来加强模型对未来运动的理解。
最后,广泛且丰富的交互特征被进一步输入到最终的预测器,来产生多代理的未来轨迹。
FFINet在Argoverse 1和Argoverse 2数据集上取得了SOTA水准的结果。
Introduction(精简版)
现有的方法大多数在单个前向预测的过程中对单个代理的轨迹进行预测,并独立地对代理及其周围物体之间的关系进行建模,这会导致模型忽略代理未来轨迹之间可能的碰撞。
受真实驾驶场景的启发,本文对未来交互的反馈进行探索,以期未来反馈特征能够加强模型对未来时刻代理运动的理解,并用于运动预测。
与现有的主流运动预测pipeline相比,本文方法将前馈过程分解为三个主要的步骤:
- 针对每一个场景,根据代理的历史运动信息以及场景当中车道的拓扑结构对场景中所有代理在单个前向传播当中进行初步的轨迹预测;
- 根据初步预测的轨迹,对代理在未来可能的交互进行特征提取;
- 将未来交互特征反馈到前馈过程当中,以对最初的预测轨迹进行改进。
本文提出了一种简单且有效的框架FFINet,用于运动预测。具体来说,由最初的联合轨迹预测产生的未来交互将会在FFINet中被反馈到观测时刻的交互特征当中,使用以下三种交互:反馈交互(feedback interaction),未来交互(future interaction)以及前馈交互(feedforward interaction),来对最初的预测结果进行改进。
FFINet的框架可以被分解为三步:
- 首先,在特征编码阶段,本文方法会将代理和HD maps的轨迹和位置表示解耦为位置向量、当前位置和相对位置。位置向量以及当前位置会被编码为包含丰富语义信息的时空特征(spatiotemporal features),用于跨时域聚合(cross-temporal aggregation)。
- 其次,通过使用相对交互模块(relative interaction block)来对相对关系进行处理,跨时域交互会在当前时刻、观测时刻以及未来时刻进行交互特征的传播。
- 最后,上述特征会被编码为全局融合特征,它将会被输入到最终的预测器,并对最初的预测轨迹进行改进。
本文的主要贡献总结如下:
- 本文提出了一种新颖的运动预测框架,它对历史时刻、当前时刻以及未来时刻的交互特征进行融合,用于加深模型对代理未来运动的理解。
- 本文提出了一种新颖的跨时域聚合策略,其中设计了一种未来反馈模块,用于对未来交互的反馈作用进行探索。
- 本文方法通过数据分解对场景当中的相对运动进行解耦,通过相对交互模块,可以对场景当中参与者的相对关系进行探索。
【关键词:当前时刻特征,未来反馈特征,跨时域聚合,相对运动编码】
相关工作
本文的相关工作主要介绍了Interaction Models for Motion Forecasting,Multi-Agent Joint Motion Forecasting,Conditioned Motion Forecasting,此处暂不做展开。
Future Feedback Interaction Network
Overview
运动预测的目标是基于交通参与者在观测时刻的历史运动信息对其未来若干个可能的运动状态进行预测。具体来说,第 i t h i^{th} ith个代理在时刻 t t t的2D坐标可以被表示为:
p i t = { ( x i t , y i t ) } t = 0 T ⊂ R 2 p^t_i=\{(x^t_i, y^t_i)\}^T_{t=0}\subset{R}^2 pit={(xit,yit)}t=0T⊂R2
其中 T T T对应的是历史观测时刻的时间长度。以历史观测时刻作为输入,模型将会输出代理多模态的未来轨迹,其未来时刻的位置可以被表示为:
p ^ i t = { ( x ^ i t , y ^ i t ) } t = T + 1 T + T p ⊂ R 2 \hat{p}^t_i = \{(\hat{x}^t_i ,\hat{y}^t_i)\}^{T+T_p}_{t=T+1}\subset{R}^2 p^it={(x^it,y^it)}t=T+1T+Tp⊂R2
其中 T p T_p Tp对应的是未来预测时刻的长度。
大多数现有的工作聚焦于对代理历史观测时刻的交互进行探索,并在单个前馈过程中对单个代理的多模态轨迹进行预测。相比之下,本文提出的FFINet会对当前时刻,历史观测时刻以及未来时刻的特征进行聚合,用于多模态的轨迹预测。
如上图所示,FFINet由以下部分组成:
(1)时空编码(Spatial-Temporal Encoding) 被用于对每一个场景的位置向量以及当前时刻位置进行编码,产生包含丰富运动信息的历史运动以及当前时刻特征,用于后续的跨时域聚合。
(2)跨时域聚合(Cross-temporal Aggregation) 当中包含四个模块,分别是当前融合模块(current fusion module),观测交互模块(observation interaction module),未来反馈模块(future feedback module)以及全局融合模块(global fusion module),用于对特征进行聚合。当前融合模块会将当前时刻代理的位置特征与距离最近的代理-道路对(agent-lane pairs)进行融合,它们会与相应的向量特征相加,并与观测交互模块融合。未来反馈模块由未来交互、反馈交互和前馈交互三部分组成,它会在代理的未来特征以及观测交互特征之间进行信息传递。全局融合模块会对代理和道路的跨时域交互特征进行融合。
(3)最终的预测器(Final Predictor) 会在单个前向传播的过程中对多个代理的多模态未来轨迹进行同时的联合预测,它带有一个回归头(regression branch)和一个分类头(classification branch)。
Data Decomposition
为了对场景中代理的运动信息以及相对位置信息进行解码,本文方法将代理的轨迹以及车道的位置解码为位置向量(position vectors),当前位置(current position)以及相对位置(relative relationship)。
1)位置向量(Position Vectors):为了对代理的历史运动信息进行表示,本文方法对代理 i i i的历史轨迹进行向量化,表示为 v i t = { p i t − p i t − 1 } t = 1 T v^t_i=\{p^t_i-p^{t-1}_i\}^T_{t=1} vit={pit−pit−1}t=1T,其中 p i t ⊂ R 2 p^t_i \subset R^2 pit⊂R2。类似地,对于道路段 ξ \xi ξ,将它的位置向量定义为 v ξ k = { p ξ k − p ξ k − 1 } k = 1 N v^k_\xi = \{p^k_\xi - p^{k-1}_\xi\}^N_{k=1} vξk={pξk−pξk−1}k=1N,其中心位置为 p ξ k , c = 0.5 × ( p ξ k + p ξ k − 1 ) p^{k, c}_\xi = 0.5 \times (p^k_\xi + p^{k-1}_\xi) pξk,c=0.5×(pξk+pξk−1),其中 p ξ k p^k_\xi pξk指的是道路段 ξ \xi ξ当中 N N N个点的第 k t h k^{th} kth坐标。
2)当前位置(Current Positions):为了加强模型对当前时刻场景拓扑结构的理解,并提取当前时刻融合特征(current fusion features),本文方法保留了当前时刻代理
i
i
i的绝对位置
p
i
T
p^T_i
piT以及道路段
ξ
\xi
ξ的绝对位置
p
ξ
k
,
c
p_\xi^{k, c}
pξk,c,从而保留当前场景最初的相对位置关系。
【但是需要注意的是,使用绝对位置,就会使得模型失去平移不变性。想要使模型对场景数据具有平移不变性,就应该避免使用任何绝对位置】
3)相对位置关系(Relative Relationships):为了保留代理之间空间上的相对位置关系,本文方法使用 Δ p i j = p j t − p i t \Delta p_{ij}=p^t_j - p^t_i Δpij=pjt−pit和 θ i j = θ j − θ i \theta_{ij} = \theta_j - \theta_i θij=θj−θi来表示代理 i i i和 j j j在时刻 t t t的相对距离和角度,其中 θ i \theta_i θi表示 p i T − p i T − 1 p^T_i - p^{T-1}_{i} piT−piT−1的航向角。类似地, Δ p i ξ = p i T − p ξ k , c \Delta p_{i\xi} = p^T_i - p^{k ,c}_{\xi} Δpiξ=piT−pξk,c和 θ i ξ = θ i − θ ξ \theta_{i\xi} = \theta_i - \theta_\xi θiξ=θi−θξ表示代理 i i i和道路段 ξ \xi ξ之间的相对距离和角度。相对位置关系会通过 相对交互模块(Relative Interaction Module) 进行处理。
通过上述方式,轨迹和到路段的绝对位置被充分考虑,并且不会产生信息丢失,使得模型可以针对整个场景通过单词前向传播生成未来轨迹。
Spatial-Temporal Encoding
基于上述的解耦数据表示,本文方法使用不同的编码器,包括轨迹向量编码器(trajectory vector encoder),车道向量编码器(lane vector encoder),当前位置编码器(current position encoder)来对代理和车道段的位置向量和当前位置进行编码。
(1)轨迹向量编码器(Trajectory Vector Encoder):给定包含多个代理的场景,将目标代理 i i i的当前时刻绝对位置 p i T p^T_i piT坐标坐标系统的原点,同时,它的航向角 θ i \theta_i θi会被作为坐标轴的正方向。本文方法统一将场景中所有代理的位置向量变换到上述坐标系统当中:
z
i
t
=
R
i
T
(
v
i
t
−
p
i
T
)
z^t_i = R^T_i(v^t_i - p^T_i)
zit=RiT(vit−piT)
z
j
t
=
R
j
T
(
R
i
T
(
v
j
t
−
p
i
T
)
)
z^t_j = R^T_j(R^T_i(v^t_j - p^T_i))
zjt=RjT(RiT(vjt−piT))
其中 R i T , R j T ⊂ R 2 × 2 R^T_i, R^T_j \subset R^{2\times2} RiT,RjT⊂R2×2是由 θ i \theta_i θi和 θ j \theta_j θj参数化的旋转矩阵。【本质上是Agent-Centric方法】
基于上述标准化之后的向量表示,首先使用轨迹向量编码器对空间特征进行编码,轨迹向量编码器由多尺度的1D CNN构成。随后,进一步使用一个线性层来对时间特征进行聚合,并得到向量特征 e i v e_i^v eiv:
e i v = L i n e a r ( C o n v ( [ z i t , a i ] t = 1 T ) ) e^v_i = {Linear}({Conv}([z^t_i, a_i]^T_{t=1})) eiv=Linear(Conv([zit,ai]t=1T))
其中 a i a_i ai是一个 1 × T 1\times T 1×T的binary mask,用于表明位置向量当中的各个时刻是否为padding, [ ⋅ , ⋅ ] [\cdot, \cdot] [⋅,⋅]指的是concat操作。
【本质上是使用一个1D CNN + 线性层的解决方案来首先将代理在观测时刻的位置向量进行编码,得到每一个代理汇总了观测时刻历史运动信息的特征向量,与HDGT/GoRela/LaneGCN等方法采用历史运动编码方式相同】
(2)车道向量编码器(Lane Vector Encoder):类似地,首先对车道段 ξ \xi ξ的位置向量 v ξ k v^k_\xi vξk进行标准化,得到 z ξ k z^k_\xi zξk,再使用LaneGCN对车道段的拓扑信息进行编码,得到:
e ξ v = L a n e G C N ( [ z ξ k , a ξ ] ) e^v_\xi = LaneGCN([z^k_\xi, a_\xi]) eξv=LaneGCN([zξk,aξ])
其中 a ξ a_\xi aξ指的是道路段的属性,在Argoverse 1.1中对应于is_intersection,has_traffic_control和turn_direction。
(3)当前时刻位置编码器(Current Position Encoder):当前时刻位置编码器被用于对代理和道路段的当前时刻绝对位置进行编码,使用MLP Block对它们在当前时刻的2D坐标进行编码。本文使用 M L P 1 MLP^1 MLP1表示单层的MLP,两层的MLP则被表示为 M L P 2 MLP^2 MLP2。当前时刻编码器被表示为:
z
i
p
=
M
L
P
1
(
p
i
T
)
z^p_i = MLP^1(p^T_i)
zip=MLP1(piT)
z
ξ
p
=
M
L
P
1
(
p
ξ
k
,
c
)
z^p_\xi = MLP^1(p^{k, c}_\xi)
zξp=MLP1(pξk,c)
Cross-Temporal Aggregation
根据场景当中的向量特征以及当前时刻特征,本文设计了一种跨时域聚合(Cross-Temporal Aggregation)【跨时域聚合是本文的核心,其中包含四个模块,完成了不同输入模态以及不同时刻的特征交互】,包含当前融合模块,观测交互模块,未来反馈模块和全局融合模块,来对多个代理的历史观测时刻,当前时刻以及未来交互特征进行聚合。
在这一节,将首先引入相对交互模块(relative interaction block),它会在观测交互模块、未来交互模块和全局交互模块当中被反复利用。
Relative Interaction Block
为了对代理以及道路之间的相对位置关系进行特征提取,本文方法提出了一种即插即用的相对交互模块如上图所示。以对道路段以及该道路段周围的代理之间的交互进行建模为例,对相对交互模块的工作流程进行简介。
首先,该道路段 ξ \xi ξ的一个邻域代理与其相对距离(对应上图的 Δ p ξ i \Delta p_{\xi i} Δpξi)和角度(对应上图的 θ ξ i \theta_{\xi i} θξi)将会使用线性层(对应到上图当中的Linear)进行编码。该道路段的特征 e ξ e_\xi eξ,单个邻域代理的特征 e i e_i ei以及相对距离和相对角度的特征编码将会拼接在一起。这一过程会对该道路段的每一个邻域代理进行处理,相当于以道路段 ξ \xi ξ为目标结点,在MessagePassing框架中生成每一个源结点(源结点就是每一个邻域代理)要传递给目标结点的Message。
之后,使用GCN来对所有邻居的特征进行聚合,并使用汇总得到的Message对道路段的特征进行更新。GCN首先对每一个邻域结点产生的Message使用MLP进行lifting(对应于上图中左侧的MLP),以某一种排列不变的特征聚合方法对Message进行汇总(比如Max,Mean,Add等),再使用一个MLP对汇总的Message(对应于上图中右侧的Message)进行编码,得到最终的特征。
具体来说,给定一个车道段 ξ \xi ξ及其邻域代理,上述交互过程可以被记作 T ( ⋅ ) T(\cdot) T(⋅):
o ξ = T ( e ξ , e i , Δ p ξ i , θ ξ i ) , ∀ i ∈ G a 2 l ξ o_\xi = T(e_\xi, e_i, \Delta p_{\xi i}, \theta_{\xi i}), \forall i \in G^\xi_{a2l} oξ=T(eξ,ei,Δpξi,θξi),∀i∈Ga2lξ
其中 e ξ e_\xi eξ和 e i e_i ei对应于车道段 ξ \xi ξ和邻居 a g e n t i agent_i agenti的特征, G a 2 l G_{a2l} Ga2l表示代理和道路段之间的拓扑图,其中代理只会与一定距离范围内的道路段相连。 G a 2 l ξ G^\xi_{a2l} Ga2lξ指的是在图 G a 2 l G_{a2l} Ga2l中与道路段 ξ \xi ξ相连接的代理的子图。 T ( e ξ , e i , Δ p ξ i , θ ξ i ) , ∀ i ∈ G a 2 l ξ T(e_\xi, e_i, \Delta p_{\xi i}, \theta_{\xi i}), \forall i \in G^\xi_{a2l} T(eξ,ei,Δpξi,θξi),∀i∈Ga2lξ的细节如下:
e ξ i = R e L U ( M L P 2 ( Δ p ξ i + M L P 2 ( cos θ ξ i , sin θ ξ i ) ) ) e_{\xi }i = ReLU(MLP^2(\Delta p_{\xi i} + MLP^2(\cos{\theta_{\xi i}}, \sin{\theta_{\xi i}}))) eξi=ReLU(MLP2(Δpξi+MLP2(cosθξi,sinθξi))),使用 M L P 2 MLP^2 MLP2分别处理了邻域代理与道路段之间的相对距离和相对角度,再使用一个ReLU进行激活。
o ξ i = M L P 1 ( [ e ξ i , M L P 2 ( e ξ ) , e i ] ) o_{\xi i} = MLP^1([e_{\xi i}, MLP^2(e_\xi), e_i]) oξi=MLP1([eξi,MLP2(eξ),ei]),使用一个 M L P 1 MLP^1 MLP1聚合 e ξ i e_{\xi i} eξi, M L P 2 ( e ξ ) MLP^2(e_\xi) MLP2(eξ)和 e i e_i ei的特征。【很有可能是以谁作为目标结点,就在此时使用 M L P 2 MLP^2 MLP2对它的特征进行再次的编码】
o ξ = M L P 1 ( M L P 2 ( e ξ ) + ∑ i ∈ G a 2 l ξ o ξ i ) o_\xi = MLP^1(MLP^2(e_\xi) + \sum_{i\in G^\xi_{a2l}}o_{\xi i}) oξ=MLP1(MLP2(eξ)+∑i∈Ga2lξoξi),对应于上文,根据邻域代理与目标道路段之间的拓扑连接关系,使用GCN进行消息传递,并对道路段 ξ \xi ξ的特征进行更新。
【Relative Interaction Block引入了一种FFINet当中的交互特征建模规则,它同样是一种基于Graph的交互建模方法。选定目标结点,根据目标结点对应的Graph,从邻域结点产生Message,并使用图神经网络对Message进行聚合,并对目标代理的特征进行更新。产生Message的过程中用到了目标结点的特征、邻域结点的特征以及空间中邻域结点与目标结点的相对距离和相对角度。上述过程可以被描述为 o d s t = T ( e d s t , e s r c , Δ p s r c → d s t , θ s r c → d s t ) , ∀ s r c ∈ G S R C → d s t d s t o_{dst} = T(e_{dst}, e_{src}, \Delta p_{src\rightarrow dst}, \theta_{src \rightarrow dst}), \forall src \in G^{dst}_{SRC\rightarrow dst} odst=T(edst,esrc,Δpsrc→dst,θsrc→dst),∀src∈GSRC→dstdst,其中dst表示目标结点,src表示邻域结点】
Current Fusion Module
为了充分地利用当前时刻代理和道路段的拓扑信息,本文方法进一步将当前时刻相距最近的代理-道路对(agent-lane pairs)之间的特征进行聚合,表示为:
e i p 1 = M L P 1 ( [ z i p , z ξ i p ] ) e^{p_1}_i = MLP^1([z^p_i, z^p_{\xi i}]) eip1=MLP1([zip,zξip]),此处 z i p z^p_i zip指的是当前时刻代理的特征, z ξ i p z^p_{\xi i} zξip指的应该是与代理 i i i相距最近的道路的特征。
e i p = M L P 1 ( [ e i p 1 , M L P 1 ( e p 1 , i ) ] ) e^p_i = MLP^1([e^{p_1}_i, MLP^1(e^{p_1}, i)]) eip=MLP1([eip1,MLP1(ep1,i)])
类似地,可以得到道路段 ξ \xi ξ当前的特征 e ξ p e^p_\xi eξp。最后,将当前时刻的特征与向量特征(即使用1D CNN + MLP对代理历史运动向量进行处理得到的 e i v e^v_i eiv和使用LaneGCN对道路段进行特征提取得到的 e i v e^v_i eiv)进行相加,得到:
e
i
=
e
i
v
+
e
i
p
e_i = e^v_i + e^p_i
ei=eiv+eip
e
ξ
=
e
ξ
v
+
e
ξ
p
e_\xi = e^v_\xi + e^p_\xi
eξ=eξv+eξp
【当前时刻特征融合没有用到方才介绍的Relative Interaction Block。该模块处理的是当前时刻代理与道路的特征交互,以代理为例,首先检索与其相距最近的道路段,并将代理和道路段的特征进行编码,用它与代理的历史向量特征进行相加】
Observation Interaction Module
观测交互模块被用于捕捉观测时刻代理与环境之间的相对交互信息。在这一阶段将会大量使用相对交互模块,根据LaneGCN当中的四种交互:Agents to Lane(A2L),Lanes to Lanes(L2L),Lanes to Agents(L2A)和Agents to Agents(A2A),交互使用如下方式进行建模:
A2L:
o
ξ
=
T
(
e
ξ
,
e
i
,
Δ
p
ξ
i
,
θ
ξ
i
)
,
∀
i
∈
G
a
2
l
ξ
o_\xi = T(e_\xi, e_i, \Delta p_{\xi i}, \theta_{\xi i}), \forall i \in G^\xi_{a2l}
oξ=T(eξ,ei,Δpξi,θξi),∀i∈Ga2lξ,
L2L:
o
ξ
=
ϕ
(
o
ξ
,
o
τ
,
Δ
p
ξ
τ
,
θ
p
ξ
τ
)
,
∀
τ
∈
G
l
2
l
ξ
o_\xi = \phi(o_\xi, o_\tau, \Delta p_{\xi \tau}, \theta p_{\xi \tau}), \forall \tau \in G^\xi_{l2l}
oξ=ϕ(oξ,oτ,Δpξτ,θpξτ),∀τ∈Gl2lξ,
L2A:
o
i
=
T
(
e
i
,
o
ξ
,
Δ
p
i
ξ
,
θ
i
ξ
)
,
∀
ξ
∈
G
l
2
a
i
o_i = T(e_i, o_\xi, \Delta p_{i\xi}, \theta_{i\xi}), \forall \xi \in G^i_{l2a}
oi=T(ei,oξ,Δpiξ,θiξ),∀ξ∈Gl2ai,
A2A:
o
i
=
T
(
o
i
,
o
j
,
Δ
p
i
j
,
θ
i
j
)
,
∀
j
∈
G
a
2
a
i
o_i = T(o_i, o_j, \Delta p_{ij}, \theta_{ij}), \forall j \in G^i_{a2a}
oi=T(oi,oj,Δpij,θij),∀j∈Ga2ai
其中 ϕ \phi ϕ指的是LaneGCN,它与之前所提到的道路向量编码器的结构相同。
Future Feedback Module
为了捕捉代理在未来可能的交互,并将未来交互反馈给观测特征,本文方法提出了一种未来反馈模块,来将未来交互产生的未来影响反馈道前馈预测的过程当中。具体来说,根据代理的运动向量特征,首先使用一个初始的预测器(initial predictor)来为每一个代理在未来 T p T_p Tp个时刻产生单个轨迹预测的结果。随后,使用一个未来编码器(future encoder)来对最初的预测进行编码:
p
^
i
c
=
L
i
n
e
a
r
(
M
L
P
1
(
e
i
v
)
)
\hat{p}^c_i = Linear(MLP^1(e_i^v))
p^ic=Linear(MLP1(eiv)),
e
i
f
=
L
i
n
e
a
r
(
C
o
n
v
(
p
^
i
c
)
)
e^f_i = Linear(Conv(\hat{p}^c_i))
eif=Linear(Conv(p^ic))
其中 p ^ i c \hat{p}^c_i p^ic指的是使用初始预测器预测得到的轨迹,而 e i f e^f_i eif指的是 a g e n t i agent_i agenti的未来特征。未来编码器与轨迹向量编码器有着相同的结构。在获取每一个代理的未来特征之后,将它们通过三种交互与相应的观测时刻交互特征进行融合:
(i)反馈交互(Feedback Interaction):首先将目标代理的观测交互特征与邻域代理的未来特征进行融合,使用Relative Interaction Block来完成这一过程,可以被表示为 f i b = T ( 1 ) ( o i , e i f , Δ p i j , θ i j ) , ∀ j ∈ G a 2 a i f^b_i=T^{(1)}(o_i, e^f_i, \Delta p_{ij}, \theta_{ij}), \forall j \in G^i_{a2a} fib=T(1)(oi,eif,Δpij,θij),∀j∈Ga2ai,其中 G a 2 a i G^i_{a2a} Ga2ai指的是 a g e n t i agent_i agenti周围一定邻域半径内所有的代理,包括目标代理自身。【相当于目标代理的未来特征将会与邻域代理及其自身的观测交互特征进行交互,得到目标代理的未来反馈特征,我认为这一步可以理解为使未来特征对历史观测有所感知】
(ii)未来交互(Future Interaction):随后使用未来交互来对代理在未来可能的交互进行建模,这一步对反馈改进非常重要。这一步可以被表示为 f i u = T ( 2 ) ( f i b , f j b , Δ p i j , θ i j ) , ∀ j ∈ G a 2 a i f^u_i=T^{(2)}(f^b_i, f^b_j, \Delta p_{ij}, \theta_{ij}), \forall j \in G^i_{a2a} fiu=T(2)(fib,fjb,Δpij,θij),∀j∈Ga2ai。【使用对历史观测交互感知的未来特征进行未来特征交互,从而隐式地避免未来可能的轨迹冲突】
(iii)前馈交互(Feedforward Interaction):本文方法进一步以一种前馈的方式,使用观测交互特征来更新未来交互特征,这一步使得历史信息与未来信息之间的传播形成了闭环。通过下述方式得到前馈交互特征: f i f = T ( 3 ) ( f i u , o j , Δ p i j , θ i j ) , ∀ j ∈ G a 2 a i f^f_i = T^{(3)}(f^u_i, o_j, \Delta p_{ij}, \theta_{ij}), \forall j \in G^i_{a2a} fif=T(3)(fiu,oj,Δpij,θij),∀j∈Ga2ai。
最终,给定一个代理 a g e n t i agent_i agenti,将它的经过更新的前馈交互特征 f i f f^f_i fif与观测交互特征相加,从而得到了每一个代理的跨时域融合特征(cross-temporal fusion features):
f i = o i + f i f f_i = o_i + f^f_i fi=oi+fif
Global Fusion
本文方法使用了一种简单的全局融合模块,来将上下文特征传播给每一个代理的跨时域融合特征,上下文特征的引入使得可以根据每一个代理的特征得到更恰当的轨迹预测结果。
具体来说,将观测时刻的车道特征 o ξ o_\xi oξ以及跨时域融合特征 f i f_i fi为例,使用与观测交互模块相同的网络结构(L2A),得到: g i = T ( f i , o ξ , Δ p i ξ , θ i ξ ) , ∀ ξ ∈ G l 2 a i g_i = T(f_i, o_\xi, \Delta p_{i\xi}, \theta_{i\xi}), \forall \xi \in G^i_{l2a} gi=T(fi,oξ,Δpiξ,θiξ),∀ξ∈Gl2ai。所得的 g i g_i gi是每一个代理最终的特征。
Final Prediction
以最终得到的代理特征 g i g_i gi为输入,最终的预测器可以在单个前向传播中生成代理经过标准化的多模态轨迹。
具体来说,为了能够得到 K K K条可能的未来轨迹,及轨迹对应的概率,本文方法为预测头(prediction head)配备了 K K K个回归头(regression branch)和一个分类头(classification branch)。该过程可以描述如下:
p
^
i
k
=
M
L
P
3
(
g
i
)
\hat{p}^k_i = MLP^3(g_i)
p^ik=MLP3(gi)
s
i
k
=
M
L
P
3
(
M
L
P
4
(
p
^
i
k
,
T
p
)
,
g
i
)
s^k_i = MLP^3(MLP^4(\hat{p}^{k, T_p}_i), g_i)
sik=MLP3(MLP4(p^ik,Tp),gi)
其中 p ^ i k , T p \hat{p}^{k, T_p}_i p^ik,Tp和 s i k s^k_i sik表示的是代理 i i i第 k t h k^{th} kth条轨迹的终点以及轨迹对应的分数(confidence score)。
Model Training
以现有的双阶段的基于目标的运动预测框架不同,FFINet在单次前向传播的过程中获得初始的轨迹预测以及最终经过改进的轨迹预测。因此,在模型训练的过程中,会同时对最初轨迹预测误差以及最终轨迹预测误差进行计算。具体来说,本文方法使用Smooth l 1 l_1 l1损失 L r e g c L^c_{reg} Lregc来度量最初轨迹预测与Ground Truth之间的距离误差【需要注意的是,上文已经提到,最初轨迹预测的结果是只给出一条可能的未来轨迹,而不是给出最终的多模态轨迹】。而对于最终的多模态轨迹预测,本文方法使用Winner-Takes-All(WTA)策略,只对预测结果最好的那条轨迹的损失进行反向传播。此外,本文方法在所有未来预测时刻上都是用回归损失 L l o s s L_{loss} Lloss来度量误差,使用Smooth l 1 l_1 l1损失来计算轨迹终点的损失,使用max-margin loss来计算分类损失 L c l s L_{cls} Lcls。
训练阶段总的损失 L L L可以表示如下:
L = L r e g + λ L e n d + β L c l s + γ L r e g c L = L_{reg} + \lambda L_{end} + \beta L_{cls} + \gamma L^c_{reg} L=Lreg+λLend+βLcls+γLregc
其中 λ , β , γ \lambda, \beta, \gamma λ,β,γ是三个权重常数。
回归损失可以被表示为:
L r e g = 1 M T p ∑ i = 1 M ∑ t = T + 1 T + T p r e g ( p i k , t − p i ∗ , t ) L_{reg} = {1 \over {MT_p}} \sum^M_{i=1} \sum^{T+T_p}_{t=T+1} reg(p^{k, t}_i - p^{*, t}_i) Lreg=MTp1∑i=1M∑t=T+1T+Tpreg(pik,t−pi∗,t)
其中 M M M是代理的数量。 T p T_p Tp是预测的时间步长。 p i k , t p^{k, t}_i pik,t是代理 i i i预测的第 k k k个模式在时刻 t t t的位置。 p i ∗ , t p^{*, t}_ i pi∗,t是代理 i i i在时刻 t t t轨迹的Ground Truth坐标。 r e g ( x ) reg(x) reg(x)指的是Smooth l 1 l_1 l1 loss。
Conclusion
本文提出了一种新颖的框架,名为FFINet,用于自动驾驶运动预测。在FFINet中,当前时刻、历史观测时刻以及未来交互的特征被有效地进行了融合,用于进行代理的多模态轨迹预测。
基于当前时刻融合模块(current fusion module),FFINet强调了当前时刻场景的拓扑信息,它进一步提升了轨迹预测的性能。此外,未来反馈模块会对未来交互特征进行提取,并将代理可能的未来交互反馈给观测交互特征,它显著地降低了多代理联合预测场景中的碰撞率(collision rate)。未来反馈模块可以提高模型在运动预测任务上的性能,并进行合理的路径规划。
在Argoverse 1/2上的实验结果表明,FFINet在单代理和多代理预测任务上的表现超过了大多数的SOTA方法。此外,本文提出的即插即用的相对交互模块(Relative Interaction Block)可以轻松地插入到其它模型当中,用于对交互进行建模。【实际上FFINet当中提出的Relative Interaction Block是一种图神经网络,在完成邻域结点传递给目标结点的Message的构造之后,对Message进行Aggregate,并使用聚合的邻域消息和目标结点自身当前的特征来对目标结点的特征进行更新】
尽管FFINet通过使用目标代理在当前位置的坐标和航向作为坐标系中心,得到了很好的结果,但FFINet仅仅具有针对场景数据的旋转不变性【因为本文方法显式地使用每一个代理最后一个观测时刻的位置向量对观测时刻的位置向量进行旋转,并使用目标代理在最后一个观测时刻的位置向量对全局向量进行标准化,因此模型对场景具有旋转不变性。即无论场景如何旋转,经过数据预处理的场景都是相同的,这与HiVT当中的思路基本一致】,而缺少针对场景数据的平移不变性【因为FFINet当中仍然保留了当前时刻的绝对位置,当绝对位置发生平移的时候,由于缺少平移不变性,模型不能够从数据中学习到有关平移的归纳偏置,比如某个代理从 ( 0 , 0 ) → ( 0 , 5 ) (0, 0) \rightarrow (0, 5) (0,0)→(0,5),与 ( 100 , 100 ) → ( 100 , 105 ) (100, 100) \rightarrow (100, 105) (100,100)→(100,105)应该是发生了相同的位移,但是由于模型不具有平移不变性,模型会将这两种输入归纳为不同的类型】。据作者所知,如场景平移以及轨迹放缩等数据增强的方法可以在一定程度上对缺少平移不变性的问题进行缓解。作者将会在未来的工作中为FFINet引入平移不变性。