1. VectorNet原理
基于DL的运动预测方法有基于渲染的方法和基于坐标点编码的方法:基于渲染的方法通过将交通要素渲染成一张特征图,再基于CNN等网络对特征进行学习,实现目标对象未来轨迹预测。基于交通要素渲染成特征图方法存在CPU算力需求大,难以渲染目标场景所有特征的问题.并且,基于CNN方法进行特征抽提存在CNN不能学习大范围几何特征,没有时序特征,且计算、存储消耗过大的问题;基于坐标点编码的方法直接使用交通要素的坐标点构成输入向量,再经过图神经网络和RNN/MLP进行特征学习,方法缺点是不能表征交通要素间的作用关系。
VectorNet方法定义输入向量为:
V
i
=
[
d
i
s
,
d
i
e
,
a
i
,
j
]
V_i = [d^s_i,d^e_i,a_i,j]
Vi=[dis,die,ai,j]
其中前两项表示向量的起点和终点,第三项表示属性信息,如语义标签,第四项用一个整数表示不同折线的所属关系,相同j、相关语义标签的折线可以被连接(下图中相同颜色线段的j和语义标签相同,可被连接,即图中第2列)。
Vectornet交通要素向量化的策略为:
- 轨迹转换为折线,再转换为向量。
- 车道线转换为折线,再转换为向量。
- 区域如人行道转换为多边形,再转换为向量。
- 点集合转换为向量。
VectorNet的交通要素向量编码过程分为局部子图建模和全局连接图编码。局部编码即相同
j
,
a
i
j,a_i
j,ai的向量连接成子图,全局连接图节点为局部子图输出的特征图,即:
p
=
φ
a
g
g
(
v
i
(
L
P
)
)
p=\varphi_{agg} ({v^{(L_P)}_i})
p=φagg(vi(LP))为局部子图的输出。全局图的节点为
{
p
1
,
p
2
,
.
.
.
,
p
p
}
\{p_1,p_2,...,p_p\}
{p1,p2,...,pp},全局图的边为基于自注意力机制计算的相似度。
VectorNet的解码器使用的MLP,输入的是局部特征图、全局特征图,输出为一个二维坐标向量,表示物体未来时刻位置,MLP是由多个全连接层和Relu激活函数组成的网络,用于从输入向量中提取非线性特征,并映射到输出向量。
2. VectorNet算法流程
VectorNet的处理流程主要包括以下几个步骤:
- 读取轨迹和地图数据,将其转换为向量化表示。
- 对每个向量化的实体,使用subgraph_net进行局部子图编码,并输出局部特征。
- 以每个实体的局部子图输出特征作为节点,节点间基于自注意力机制的相似度作为边构建全局图编码。
- 对所有向量化的实体,使用GNN进行全局交互建模,输出每个实体的隐状态。
- 对每个目标智能体,使用一个解码器生成多个可能的未来轨迹,并评估他们的概率。
- 计算损失函数,使用最小平均位移误差(minADE)和最终位移误差(minFDE)作为评价指标。
3. HiVT算法
HiVT算法是基于分层向量Transformer模型的多智能体运动预测算法,可以有效地捕捉场景中的局部和全局交互,并生成多模态的未来轨迹。
- 首先算法将场景中的每个智能体的历史轨迹、类别等属性信息编码为一个向量表示。
h i 0 = M L P ( [ x i T , c i ] ) h^0_i = MLP([x^T_i,c_i]) hi0=MLP([xiT,ci]),其中 x i T x^T_i xiT是智能体 i i i的历史轨迹, c i c_i ci是类别嵌入。 - 使用一个局部编码器来对每个智能体的邻域内的其他智能体进行注意力聚合,从而得到一个局部上下文向量。
h i l = LayerNorm ( h i l − 1 + MLP ( Attention ( Q = h i l − 1 , K = H N ( i ) l − 1 , V = H N ( i ) l − 1 ) ) ) \mathbf{h}_i^l = \text{LayerNorm}(\mathbf{h}_i^{l-1} + \text{MLP}(\text{Attention}(\mathbf{Q}=\mathbf{h}_i^{l-1}, \mathbf{K}=\mathbf{H}_{\mathcal{N}(i)}^{l-1}, \mathbf{V}=\mathbf{H}_{\mathcal{N}(i)}^{l-1}))) hil=LayerNorm(hil−1+MLP(Attention(Q=hil−1,K=HN(i)l−1,V=HN(i)l−1)))
其中 N ( i ) N(i) N(i)是智能体的邻域集合, H N ( i ) l − 1 \mathbf{H}_{\mathcal{N}(i)}^{l-1} HN(i)l−1是其邻域内所有智能体在第 l − 1 l-1 l−1层的向量表示,Attention是多头自注意力机制。 - 使用全局交互模块来对所有智能体进行自注意力操作,从而得到一个全局上下文向量。
h ~ i L = LayerNorm ( h i L + MLP ( Attention ( Q = h i L , K = H L , V = H L ) ) ) \tilde{\mathbf{h}}_i^L = \text{LayerNorm}(\mathbf{h}_i^L + \text{MLP}(\text{Attention}(\mathbf{Q}=\mathbf{h}_i^L, \mathbf{K}=\mathbf{H}^L, \mathbf{V}=\mathbf{H}^L))) h~iL=LayerNorm(hiL+MLP(Attention(Q=hiL,K=HL,V=HL)))
其中, h ~ i L \tilde{\mathbf{h}}_i^L h~iL是智能体 i i i在最后一层的全局上下文向量, H L \mathbf{H}^L HL是所有智能体在最后一层的向量表示。 - 使用一个多模态未来轨迹解码器来根据局部和全局上下文向量生成多个可能的未来轨迹,并使用一个分类器来预测每条轨迹的概率。
x ^ i , k , t + 1 = x ^ i , k , t + Tanh ( MLP d e c , k ( [ h ~ i L , x ^ i , k , t , δ ^ i , k , t ] ) ) , k = 1 , . . . , K \hat{\mathbf{x}}_{i,k,t+1} = \hat{\mathbf{x}}_{i,k,t} + \text{Tanh}(\text{MLP}_{dec,k}([\tilde{\mathbf{h}}_i^L, \hat{\mathbf{x}}_{i,k,t}, \hat{\delta}_{i,k,t}])), k=1,...,K x^i,k,t+1=x^i,k,t+Tanh(MLPdec,k([h~iL,x^i,k,t,δ^i,k,t])),k=1,...,K
其中, δ ^ i , k , t \hat{\delta}_{i,k,t} δ^i,k,t是智能体在第K个模态下在时刻 t t t的速度估计, x ^ i , k , t \hat{\mathbf{x}}_{i,k,t} x^i,k,t是其在第 k k k个模态下在时刻 t t t的位置估计。
p k = Softmax ( MLP c l s ( [ h ~ i L , x ^ i , k , T ] ) ) p_k = \text{Softmax}(\text{MLP}_{cls}([\tilde{\mathbf{h}}_i^L, \hat{\mathbf{x}}_{i,k,T}])) pk=Softmax(MLPcls([h~iL,x^i,k,T]))
其中, p k p_k pk是第k个模态的概率。Softmax是归一化函数。
HiVT模型结构如图所示:Local Encoder(右下角)包含自身历史轨迹建模,Agent-Lane(map)交互建模,Agent-Agent间交互建模,由三个Transformer模型实现。之后与VectorNet类似,编码后的输出特征被用作节点,用于建模节点间的相互作用,在模型结构图右上角左侧。
4. HiVT、VectorNet算法分析
- HiVT矢量化过程使用相对位置差,VectorNet使用绝对位置,需要对齐。
- HiVT提出了一种平移不变的场景表示和旋转不变的空间学习模块,使得该模型能够对场景的几何变换具有鲁棒性,并能在单次前向传播中为多个智能体做出准确预测,而VectorNet需要对每个智能体进行单独的预测,且对场景旋转敏感。
- HiVT在Argoverse运动预测基准上达到了最先进的性能,同时具有较小的模型大小和较快的预测速度,而VectorNet在性能大小和速度上都有所不足。