文献阅读报告-Learning Lane Graph Representations for Motion Forecasting-ECCV,2020
原文文献:
Liang, M. and 6 colleagues 2020.\ Learning Lane Graph Representations for Motion Forecasting.\ arXiv e-prints.ECCV, 2020
文章目录
1. 概览
1.1 简述
文中提出一个运动预测模型,通过利用车道图结构以及actor-map表示交互地图,取代编码栅格图像矢量化图,。通过构造一个车道图像从原始地图数据显式保存地图结构。为了捕获车道图的复杂拓扑和长时依赖关系,提出了LaneGCN(一种图运算算子),它使用多个邻接矩阵扩展图的卷积操作,并沿车道进行尺度扩张。捕捉actor和map之间的复杂的相互作用,利用一个融合网络(FusionNet)对四种类型的交互:actor-to-lane, lane-to-lane, lane-to-actor, actor-to-actor进行建模。
1.2 主要结论和贡献
- 过往方法的缺点:
1)rasterization 的过程不可避免的会导致信息的丢失。
2)使用二维卷积捕捉地图图结构复杂的拓扑结构,效率可能会很低。 - 主要贡献:
1)代替删格化地图,从矢量地图数据中构造车道图。
2)提出车道图卷积网络(laneGCN),以此捕捉车道的拓扑结构和长时依赖。
3)将actor和车道表征为图中的节点,使用1D CNN和LaneGCN,分别提取actor和车道的节点特征,利用GCN和空间注意力模型捕捉四种交互类型:A2L, L2L, L2A, A2A。
1.3 测试与实验
在Argoverse运动预测基准上进行训练。
数据集:Argoverse
数据规模:train:205942 vail:39472 test:78143
seq_len: 5s observe: 2s pred:3s
KPI:minADE, minFDE, MR(漏失率,最终预测的位置与gt之间超过2m的比率)
1.3.1 与VectorNet的比较
首先,VectorNet使用无向全连接的普通图网络(Vanilla GCN),本文泽根据map拓扑构造稀疏连接的车道图,并提出了针对特定任务的多类型扩展图操作符。
其次,VectorNet使用折线级的节点进行交互,而我们的LaneGCN使用折线段作为地图节点以获取更高的分辨率。注意,在我们的方法中,不同折线中的节点可以扩展连接的相互作用。
1.4 进一步研究方向
2. 模型
首先从原始地图数据(HD-map)中构造车道图像并使用LaneGCN提取地图特征。同时,ActorNet从观察到的过去轨迹中提取行动者的特征。然后使用FusionNet融合模型模拟actor和车道图之间的交互,并预测未来的轨迹。
2.1 模型整体框架
1. ActorNet:
ActorNet接收actor的历史轨迹作为输入,并使用一维卷积提取actor节点的特征。
1)Input tensor:
(
x
,
y
,
m
a
s
k
)
∗
T
{(x, y, mask)*T}
(x,y,mask)∗T 。其中,
(
x
,
y
)
(x,y)
(x,y): actor的坐标信息,mask: 掩码矩阵,表示轨迹是否需要0填充,T: 输入的seq长度。
2)Model:使用多尺度的一维卷积代替CNNs和RNNs,3组多尺度一维卷积+FPN(特征金字塔网络)+输出残差块
3)Output:
(
128
,
1
)
{(128, 1)}
(128,1),输出一维特征图,128为输出的
h
i
d
d
e
n
_
s
i
z
e
hidden\_size
hidden_size。
2. MapNet:
从HD地图中构建车道图(矢量化),并使用设计的LaneGCN提取车道节点的Feature。
1)车道图(lane map)的构建,将车道节点定义为车道中心线任意两点之间的中心线片段,而车道节点的位置定义为两点之间的平均坐标。
2)Input:
V
∈
R
N
∗
2
V\in\R^N*2
V∈RN∗2,
{
A
i
}
\{A_i\}
{Ai}为邻接矩阵,
i
∈
{
p
r
e
,
s
u
c
,
l
e
f
t
,
r
i
g
h
t
}
i\in\{pre,suc,left,right\}
i∈{pre,suc,left,right},其中V为节点矩阵,N表示为节点的数量,2为节点的位置纬度,
{
A
i
}
∈
R
N
×
N
\{A_i\}\in\R^{N\times N}
{Ai}∈RN×N表示为车道节点属于哪一类型的连通性。节点特征:编码节点的特征信息,考虑相应线段节点的形状(大小和方向)和位置(中心坐标):
x
i
=
M
L
P
s
h
a
p
e
(
v
i
e
n
d
−
v
i
s
t
a
r
t
)
+
M
L
P
l
o
c
(
v
i
)
x_i=MLP_{shape}(v_i^{end}-v_i^{start})+MLP_{loc}(v_i)
xi=MLPshape(viend−vistart)+MLPloc(vi)
其中,MLP为多层感知器,
x
i
∈
X
,
v
i
∈
V
x_i\in X,v_i\in V
xi∈X,vi∈V, X为节点特征矩阵用来捕捉每一条节点线段的本地信息。
3)LanConv算子:
为了聚合更多的拓扑信息,文章中设计了LaneConv操作符:
Y
=
X
W
0
+
∑
i
∈
{
p
r
e
,
s
u
c
,
l
e
f
t
,
r
i
g
h
t
}
A
i
X
W
i
Y=XW_0+\sum_{i\in \{pre,suc,left,right\}}A_iXW_i
Y=XW0+i∈{pre,suc,left,right}∑AiXWi
为捕捉长时依赖信息,将LaneConv进行扩张卷积的类比,定义K-dilation-LaneConv:
Y
=
X
W
0
+
A
p
r
e
k
X
W
p
r
e
,
k
+
A
s
u
c
k
X
W
s
u
c
,
k
Y=XW_0+A_{pre}^kXW_{pre,k}+A^k_{suc}XW_{suc,k}
Y=XW0+AprekXWpre,k+AsuckXWsuc,k
为了进一步提升网络的性能在扩张卷积的基础上,使用多尺度信息定义LaneGCN。
最后,LaneGCN是由4个多尺度Lanconv块组成的堆栈,每一个块由一个
L
a
n
e
C
o
n
v
(
1
,
2
,
4
,
8
,
16
,
32
)
LaneConv(1,2,4,8,16,32)
LaneConv(1,2,4,8,16,32)和全连接层组成,网络的通道数为128。
3. FusionNet:
融合模块由四个网络子模块组成,用于处理actor和车道节点之间所有的信息流,A2L,L2L,L2A,A2A。
其中,
A2L引入了实时交通信息,如堵塞或使用的车道,用来更新车道节点传播特性的车道的交通信息图。
L2A将更新地图特征并与实时交通信息进行融合,反馈给actor。
A2A处理actor之间的交互并输出actor的特征,然后被预测头用于运动预测。这三个模块的网络模型采用空间注意力层,
L2L使用LaneGCN去提取feature。
节点的特征聚合:
y
i
=
x
i
W
0
+
∑
i
ϕ
(
c
o
n
c
a
t
(
x
i
,
Δ
i
,
j
,
x
j
)
W
1
)
W
2
y_i=x_iW_0+\sum_i\phi(concat(x_i,\Delta_{i,j},x_j)W_1)W_2
yi=xiW0+i∑ϕ(concat(xi,Δi,j,xj)W1)W2
4. Prediction Header
预测头进行预测时,使用两个分支,一个分支是回归模型,用来预测k个轨迹,一个分支是分类模型,用来对每条轨迹进行打分,得到每条轨迹的置信度。
5. 模型的总体结构图:
6.损失函数
使用分类和回归损失函数对模型进行端到端的训练:
L
=
L
c
l
s
+
L
r
e
g
L=L_{cls}+L_{reg}
L=Lcls+Lreg
分类:
L
c
l
s
=
1
M
(
K
−
1
)
∑
m
=
1
M
∑
k
=
k
^
m
a
x
(
0
,
c
m
,
k
+
ϵ
−
c
m
,
k
^
)
L_{cls}=\frac{1}{M(K-1)}\sum_{m=1}^M\sum_{k=\hat k}max(0,c_{m,k}+\epsilon-c_{m,\hat k})
Lcls=M(K−1)1m=1∑Mk=k^∑max(0,cm,k+ϵ−cm,k^)
其中,M为actor的总数,K为轨迹生成的数量,
k
^
\hat k
k^为k条轨迹中具有最小FDE的那条轨迹,以此为label,c为分类模型的置信度输出。
回归:
L
r
e
g
=
1
M
T
∑
m
=
1
M
∑
t
=
1
T
r
e
g
(
p
m
,
t
k
^
−
p
m
,
t
∗
)
L_{reg}=\frac{1}{MT}\sum_{m=1}^{M}\sum_{t=1}^{T}reg(p_{m,t}^{\hat k}-p_{m,t}^{*})
Lreg=MT1m=1∑Mt=1∑Treg(pm,tk^−pm,t∗)
其中,
r
e
g
(
x
)
=
∑
i
d
(
x
i
)
reg(x)=\sum_id(x_i)
reg(x)=∑id(xi),使用smoothed l1损失:
d
(
x
i
)
=
{
0.5
x
i
2
i
f
∣
∣
x
i
∣
∣
<
1
∣
∣
x
y
∣
∣
−
0.5
o
t
h
e
r
w
i
s
e
,
d(x_i)=\begin{cases} 0.5x_i^2&if||x_i||<1 \\ ||x_y||-0.5&otherwise, \\ \end{cases}
d(xi)={0.5xi2∣∣xy∣∣−0.5if∣∣xi∣∣<1otherwise,
3. 问题以及思考
- 多尺度1D卷积处理actorNet的有效性?是否可以提取时序序列数据?