MTR++: Multi-Agent Motion Prediction with Symmetric Scene Modeling and Guided Intention Querying
论文的题目为《MTR++: Multi-Agent Motion Prediction with Symmetric Scene Modeling and Guided Intention Querying》,发布于2024年的TPAMI。今天分享的内容来源于MTR++当中的一个小的片段,主要介绍了MTR++中对称的驾驶场景表示方法,对应于原文的4.1节。
Symmetric Scene Context Modeling for All Agents
为了同时对多个代理的未来轨迹进行同时的预测,MTR++使用了一种在场景之间共享的上下文编码器,来对复杂且多模态的驾驶场景进行编码。
现有的大多数方法通常会选取场景中某个特定的代理(通常是目标代理,即要进行轨迹预测的那个代理)作为场景的中心建立坐标系,并对整个场景当中的代理历史运动信息以及地图元素位置进行标准化。与上述方法不同,MTR++当中所采用的方法可以对称地对整个场景当中的所有代理进行编码(即,将场景中所有的代理编码到它们各自所在的局部坐标系统当中)。
基于上述编码器所得到的代理特征,可以直接输入到解码器当中,来输出场景中任意代理的多模态未来轨迹。
Input Representation with Polyline-Centric Encoding
MTR++采用向量化方法对场景中的所有元素进行编码,将代理的历史运动信息以及道路元素表示为折线(polylines)组成的集合。
然而,与过去方法选取场景中单个代理作为坐标系统的中心不同,MTR++会将向量化场景当中的每一个折线编码到其各自的以折线为中心的局部坐标系统当中(encode the feature of each polyline in a polyline-centric local coordinate system)。
具体来说,MTR++的场景编码主要是在MTR场景编码的基础上进行了修改。过去的MTR方法仍然采取以代理为中心的场景编码方式,即选取场景当中的目标代理作为局部坐标系统的中心,对整个场景进行标准化。
MTR当中的场景编码方法如下:
对于场景当中的 N a N_a Na个代理,它们的历史状态序列被表示为 S A ( g ) ∈ R N a × T h × C a S^{(g)}_A \in R^{N_a \times T_h \times C_a} SA(g)∈RNa×Th×Ca,其中 g g g表示的是场景当中目标代理所对应的全局坐标系统, T h T_h Th表示历史观测时长, C a C_a Ca表示历史运动状态的序列长度,它由为位置、运动方向以及速度等历史运动信息组成。针对观测时长少于 T h T_h Th的序列,将会使用Zero-Padding对轨迹序列进行补全。
道路图将会被表示为 S M ( g ) ∈ R N m × n × C m S^{(g)}_M \in R^{N_m \times n \times C_m} SM(g)∈RNm×n×Cm,其中 N m N_m Nm代表的是地图中折线的数量, n n n代表的是每一个折线当中所包含的坐标点的数量, C m C_m Cm代表的是每一个点的属性,比如点在全局坐标系统下的位置以及道路类型等。
S A ( g ) S^{(g)}_A SA(g)和 S M ( g ) S^{(g)}_M SM(g)均会使用PointNet风格的编码器进行编码,得到:
F A ( g ) = ϕ ( M L P ( S A ( g ) ) ) , F M ( g ) = ϕ ( M L P ( S M ( g ) ) ) F^{(g)}_A = \phi(MLP(S^{(g)}_A)), F^{(g)}_M = \phi(MLP(S^{(g)}_M)) FA(g)=ϕ(MLP(SA(g))),FM(g)=ϕ(MLP(SM(g)))
其中 ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)是max-pooling。分别得到全局坐标系统下的代理特征和地图特征 F A ( g ) ∈ R N a × D , F M ( g ) ∈ R N m × D F^{(g)}_A \in R^{N_a \times D}, F^{(g)}_M \in R^{N_m \times D} FA(g)∈RNa×D,FM(g)∈RNm×D。
而在MTR++中,则采取以折线为中心的局部坐标系统(polyline-centric local coordinate system)对场景当中的折线进行编码。
具体来说,MTR++对MTR当中的折线对象编码方式进行了修改,加入了一个坐标变换函数
T
(
⋅
)
\Tau(\cdot)
T(⋅):
F A ( l ) = ϕ ( M L P ( T ( S A ( g ) ) ) ) , F M ( l ) = ϕ ( M L P ( T ( S M ( g ) ) ) ) F^{(l)}_A = \phi(MLP(\Tau(S^{(g)}_A))), F^{(l)}_M = \phi(MLP(\Tau(S^{(g)}_M))) FA(l)=ϕ(MLP(T(SA(g)))),FM(l)=ϕ(MLP(T(SM(g))))
坐标变换函数 T \Tau T会将折线特征从MTR当中所选取的全局坐标系同变换到以折线为中心的局部坐标系统当中。具体来说,MTR++与GoRela以及HDGT当中采取的局部坐标系统类似,使用每一个代理在最后一个观测时刻(即当前时刻)的位置和行驶方向作为每一个代理局部坐标系统的参考系,而对于地图元素所对应的折线,使用这些折线的集合中心以及切方向作为局部坐标系统的参考系。
编码得到的特征记作 F A ( l ) ∈ R N a × D F^{(l)}_A \in R^{N_a \times D} FA(l)∈RNa×D以及 F M ( l ) ∈ R N m × D F^{(l)}_M \in R^{N_m \times D} FM(l)∈RNm×D,这两种特征分别捕捉了代理的历史运动信息以及地图的几何信息。并且,这些折线特征都是在它们各自的局部坐标系统当中进行编码的,它们各自都与全局坐标系统想独立。这会使得输入到MTR++当中的token features均是与全局坐标系统相解耦的,使得可以在后续环节对token的关联进行对称的建模。
Attribute Definition of Polyline Tokens
特征 F A ( l ) F^{(l)}_A FA(l)和 F M ( l ) F^{(l)}_M FM(l)会被视为后续Transformer Network的input tokens,这两种特征将会被拼接,并得到输入的token特征矩阵: F A M ( l ) = [ F A ( l ) , F M ( l ) ] ∈ R ( N a + N m ) × D F^{(l)}_{AM} = [F^{(l)}_A, F^{(l)}_M] \in R^{(N_a + N_m) \times D} FAM(l)=[FA(l),FM(l)]∈R(Na+Nm)×D。这些tokens在全局坐标系统当中的位置被表示为 P A M ( g ) ∈ R ( N a + N m ) × 2 P^{(g)}_{AM} \in R^{(N_a + N_m) \times 2} PAM(g)∈R(Na+Nm)×2,在全局坐标系统当中的方向表示为 H A M ( g ) ∈ R ( N a + N m ) × 1 H^{(g)}_{AM} \in R^{(N_a + N_m) \times 1} HAM(g)∈R(Na+Nm)×1。
Symmetric Scene Context Modeling with Query-Centric Self-Attention
在之前的MTR框架当中,使用self-attention模块来在全局坐标系统中对输入tokens之间的关联进行建模。显然这种选取单一目标代理作为场景中心对整个场景进行标准化的方法会使得针对其它代理的轨迹预测性能不佳。
为了解决这一问题,MTR++中进一步提出了一种Query-Centric self-attention module,即以Query为中心的自注意力模块,它以一种对称的方式对场景中所有tokens之间的关联进行建模,使得自注意力机制可以与全局坐标系统解耦。
具体来说,为了能够在特定的局部坐标系统当中对query token和other tokens之间的关联进行建模,MTR++会分别对每一个query token执行注意力的计算。例如,假设以第 i i i个token作为query,首先将所有tokens的坐标和方向变换到第 i i i个token的局部坐标系统当中,得到:
其中
i
∈
{
1
,
.
.
.
,
N
a
+
N
m
}
i \in \{1, ..., N_a + N_m\}
i∈{1,...,Na+Nm},而
j
∈
Ω
(
i
)
j \in \Omega{(i)}
j∈Ω(i)表示的是query token的邻域tokens。
R
A
M
(
p
o
s
)
[
i
,
j
]
∈
R
2
{R^{(pos)}_{AM}}_{[i, j]} \in R^2
RAM(pos)[i,j]∈R2和
R
A
M
(
a
n
g
)
[
i
,
j
]
∈
R
{R^{(ang)}_{AM}}_{[i, j]} \in R
RAM(ang)[i,j]∈R表示的是第
j
j
j个token在第
i
i
i个token所处的局部坐标系统当中的相对位置和方向。
之后通过以下方式计算query-centric self-atterntion mechanism:
其中
P
E
(
R
A
M
[
i
,
j
]
)
PE({R_{AM}}_{[i, j]})
PE(RAM[i,j])指的是sinusoidal positional encoding。
上述query-centric的自注意力机制与MTR当中在全局坐标系统当中所使用的自注意力机制的计算复杂度相似,但query-centric self-attention使得每一个输入token都是与全局坐标系统解耦的,可以输出的代理特征对任何代理的未来轨迹进行解码,而不需要对整个场景的坐标进行重复的标准化。