在前期进行充分调研后,在考虑模型精度与时延的基础上,确定使用VectorNet作为预测模块,直道模型的预测模型,现对模型进行简单的要点分析。
(1)使用矢量化的高精地图以及障碍物的历史轨迹,从而避免有损渲染
(2)设计子图网络以及全局图网络,建模低阶以及高阶交互
(3)auxiliary task 提高网络性能
最近很多Prediction将车辆和环境呈现为一个鸟瞰的图像,并用卷积神经网络(ConvNets)进行编码。VectorNet通过对矢量化高精地图和车辆轨迹,避免了有损渲染和计算密集型ConvNet编码的步骤。
语义地图 vs VectorNet对比图
VectorNet在Argoverse和 in-house 的数据集上都取得了最好的效果,并且相比语义地图的方法节省70%的模型参数,节约了计算开销。
向量的表示就是上面图2的最左边。
The geographic extent of the road features can be a point, a polygon, or a curve in geographic coordinates. For example, a lane boundary contains multiple control points that build a spline; a crosswalk is a polygon defined by several points; a stop sign is represented by a single point.
lane可以表示为splines,人行道可以表示为一个很多个点组成的polygon,stop sign标记可以表示为单一个点。 对于agent来说,他们的轨迹也是一种splines。 这些元素都可以向量化表示:
for map features, we pick a starting point and di- rection, uniformly sample key points from the splines at the same spatial distance, and sequentially connect the neighboring key points into vectors;
for trajectories, we can just sample key points with a fixed temporal interval (0.1 second), starting from t = 0 , and connect them into vectors.
通过向量化的过程,可以得到折线polylines,这个polylines和轨迹、地图标注之间是一一对应的。如果给定的时空间隔足够小,得到的这些折线就与原始地图和轨迹十分接近。
我们将属于折线 P j P_j Pj
的每一个向量vi看出图中的一个节点,节点特征如下:
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]
其中前两个vector分别是vector的start和end point的坐标,可以是(x,y)或者(x,y,z)三维的形式
第三个向量则是attribute属性的特征,比如object的类型,轨迹的时间戳,道路的特征,道路限速等
最后一个是障碍物id,表示 v i v_i vi属于 P j P_j Pj
对于一个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^{l+1}_i=ϕ_{rel}(genc(v^{l}_i),φ_{agg}({v^{l}_j})) vil+1=ϕrel(genc(vil),φagg(vjl))
v i l v^l_i vil 代表第i个节点第L层的节点特征
g e n c ( ⋅ ) genc(⋅) genc(⋅)代表节点的变换,实践中采用MLP来实现
φ a g g ( ⋅ ) φ_{agg}(⋅) φagg(⋅)代表特征聚合,用来从相邻的节点来获取信息,实践中采用的是max_pooling
φ r e l ( ⋅ ) φ_{rel}(⋅) φrel(⋅)代表vi和周围节点的关系,实践中采用的是concate的操作
最后经过多层的堆叠,来获取整个Polyline级别的特征:
P = φ a g g ( v i L p ) P=φ_{agg}({v^{Lp}_i}) P=φagg(viLp)
这里, φ a g g ( ⋅ ) φ_{agg}(⋅) φagg(⋅)也是max pooling操作
经过上面的子图进行低阶模型建模后,现在有了polyline级别节点的特征 { p 1 , p 2 , . . . , p P } \{p_1,p_2,...,p_P\} {p1,p2,...,pP}
为了建立高阶的交互,需要建立一个global的交互图,详见论文图2的第3个子图。
P i l + 1 = G N N ( p i l , A ) {P^{l+1}_i}=GNN({p^{l}_i},A) Pil+1=GNN(pil,A)
p i l {p^l_i} pil代表polyline节点的集合
A A A代表邻接矩阵,实践中采用全链接
G N N ( ⋅ ) GNN(⋅) GNN(⋅)代表 一层的GNN网络,实践中采用的是self attention layer:
G N N ( P ) = s o f t m a x ( P Q P K T ) P V GNN(P)=softmax(P_QP^T_K)P_V GNN(P)=softmax(PQPKT)PV
其中,P是node的feature matrix, P Q , P k , P v P_Q,P_k,P_v PQ,Pk,Pv则是它的线性投影。
经过了全局的网络之后,就生成了节点的特征P(Lt)i,其中Lt是全局GNN网络的层数。然后将P(Lt)i放入decoder进行轨迹的生成:
v i f u t u r e = φ t r a j ( P i L t ) v^{future}_i=φ_{traj}(P^{L_t}_i) vifuture=φtraj(PiLt)
论文中,decoder φ t r a j ( ⋅ ) φ_{traj}(⋅) φtraj(⋅) 使用的是MLP,当然也可以用MultiPath的方法。多模型预测
为了让全局交互图能更好地捕捉不同轨迹和地图元素之间的交互信息,论文还提出了一个辅助的任务:在训练过程中,随机mask掉一些节点的特征,然后尝试去还原被掩盖的节点特征:
P ^ i = φ n o d e ( P i L t ) \hat{P}_i=φ_{node}(P^{L_t}_i) P^i=φnode(PiLt)
这里节点的decoder φ n o d e ( ⋅ ) φ_{node}(⋅) φnode(⋅) 也是一个MLP,只在训练的时候使用。
L = L t r a j + α L n o d e L=L_{traj}+αL_{node} L=Ltraj+αLnode
L t r a j L_{traj} Ltraj: negative Gaussian log-likelihood loss
L n o d e L_{node} Lnode: 是预测的节点和被掩盖节点的huber损失
GaussianLogLikelihood损失函数为:
L ( x , y ) = − l o g P ( y ) = − l o g P ( y ∣ μ ( x ) , Σ ( x ) ) L(x,y)=−logP(y)=−logP(y|μ(x),Σ(x)) L(x,y)=−logP(y)=−logP(y∣μ(x),Σ(x))
where
p ( y ) = p ( y ∣ μ , Σ ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 e x p − 12 ( y − μ ) ⊤ Σ − 1 ( y − μ ) p(y)=p(y|μ,Σ)=1(2π)n/2|Σ|1/2exp{−12(y−μ)⊤Σ−1(y−μ)} p(y)=p(y∣μ,Σ)=1(2π)n/2∣Σ∣1/2exp−12(y−μ)⊤Σ−1(y−μ)
Huber比较常见:
KaTeX parse error: Expected '}', got 'EOF' at end of input: …−12δ2otherwise
这一观察结果证实了当把栅格化图像作为输入时,感受野的重要性。同时,也体现了它的局限性,一个精心设计的裁剪策略通常伴随着计算成本的增加。
对比分辨率 400× 400(0.25 meter per pixel), 200× 200(0.5 meter per pixel) and 100× 100(1 meter per pixel) 可以看出随着分辨率的提高,性能也普遍得到了提高。
对于Argoverse数据集我们可以看出将分辨率从200×200增加到400×400会导致性能的略微下降,这可以解释为对于固定的3×3卷积核尺寸,有效感受野的减小造成的。
对于内部数据集,在大量减少模型参数和计算量的前提下,VectorNet达到了与最好的残差网络模型相当的性能。 对于Argoverse数据集,VectorNet明显优于最好的卷积网络,在预测3秒时位置误差减少了12%。
我们发现内部数据集包含很多静止的车辆,这些场景可以很容易地被卷积网络解决,因为它擅长捕捉局部模式。但是Argoverse数据集中只提供“interesting”场景。VectorNet性能好过最优的卷积网络基线,大概是因为它能够通过层级图网络捕捉更大范围的环境信息。
结果如表4所示(预测的解码器没有添加到计算量和参数量的计算中)。 我们可以看到随着卷积核尺寸和输入图片尺寸的增加,卷积网络的计算量呈二次方增加,并且模型的参数量也随着卷积核呈二次方增加。 对于VectorNet,计算量取决于场景中的向量节点和折线的数量。对于内部数据集,地图中折线的平均数量为17,包含205个向量。平均动态交通参与者折线数为59,包含590个向量。我们基于这些平均数来计算计算量。注意Vector是以障碍物为中心计算的,所以计算量随着预测目标的数量呈线性增加。
比较R18-k3-t-r400(卷积网络中最优模型)和VectorNet,VectorNet明显优于卷积网络。在计算方面,对于一个交通参与者,卷积网络比VectorNet增加了200+倍的计算量。考虑到场景中车辆的平均数量约为30辆,VectorNet的实际计算量仍然比卷积网络小得多。同时,VectorNet的参数量为卷积网络参数量的29%。基于比较可以发现VectorNet可以在大幅度减少计算成本的同时显著提高性能。
VectorNet性能最好
vectornet是一个比较新颖的特征提取工具,通过将地图与车辆历史轨迹看为"vector"的形式,能较好的学习到环境语义的embedding表达。据说Waymo内部将vector用在高速卡车上。
由于vectornet对于道路模型的依赖较强,可能其只适用于直道障碍物的预测,且后期可以探索,共享特征进行多轨迹并行预测,一次更进一步的降低时延。