VectorNet- Encoding HD Maps and Agent Dynamics from Vectorized Representation
VectorNet: 通过矢量化表示编码高精度地图与动态交通参与者。特征编码的过程:
- 地图元素和移动agent向量化表示为polyline。(车道线、人行横道-等空间距采样轨迹,agent轨迹等时间距采样轨迹。)
- 利用polyline subgraph编码每条polyline的特征。(一条polyline encode成一个特征向量, 成为全局图中的一个node)
- 利用Global interaction graph编码节点之间的相互作用。(建模target agent与地图元素和other agent的交互)
- 的特征编码 经过一层状态更新后, 输入解码网络得到预测轨迹。(轨迹的一步坐标位移)
road components
- moving agents(pedestrians, vehicles)
- road context information(lanes, traffic lights)
坐标原点:目标agent最后一次被观察到的time step/位置
(20210426–Waymo的文章,资料表明是CVPR 2020,但是arxiv:2005. 挺迷惑的。)
参考论文翻译
1. Ployline subGarph
向量化:地图特征(车道线,人行道)-选定起点和方向,在spline(样条)上等空间间隔采样,连接相邻点构成向量,运动轨迹-等时间间隔采样关键点,构成向量。
一条polyline P j \mathcal{P}_j Pj由向量集合 { v 1 , v 2 , . . . , v p } \{v_1,v_2,...,v_p\} {v1,v2,...,vp}表征, 向量 v i = [ d i s , d i e , a i , j ] v_i=[d_i^s,d_i^e,a_i,j] vi=[dis,die,ai,j],其中 d i s , d i e d_i^s,d_i^e dis,die表示起始和终止点的坐标(二维/三维都可以); a i a_i ai对象类型、时间戳、道路类型、限速;j是轨迹编号。
Polyline subGraphs(折线子图):同一条折线(polyline)上向量节点构成一张子图,Polyline subGraphs 用于聚合polyline特征,特征聚合规则:
v
i
(
l
+
1
)
=
φ
r
e
l
[
g
e
n
c
(
v
i
(
l
)
)
,
φ
a
g
g
(
{
g
g
e
n
(
v
j
(
l
)
)
}
)
]
v_i^{(l+1)}=\varphi_{rel}[g_{enc}(v_i^{(l)}),\varphi_{agg}(\{g_{gen}(v_j^{(l)})\})]
vi(l+1)=φrel[genc(vi(l)),φagg({ggen(vj(l))})]
其中:
g
e
n
c
g_{enc}
genc–MLP–处理每个节点的特征,同层结点权值共享,不同层权重不同;
φ
a
g
g
\varphi_{agg}
φagg–最大池化–聚合邻居结点的信息;
φ
r
e
l
\varphi_{rel}
φrel–concatenation(简单的连接操作)–本结点特征和邻居结点特征相互结合
堆叠多层
g
e
n
c
(
⋅
)
g_{enc}(·)
genc(⋅)操作,同一条polyline上所有结点特征经过最大池化操作,聚合特征系形成polyline的表征:
p
=
φ
a
g
g
(
{
v
i
(
L
p
)
}
)
\bm{p}=\varphi_{agg}(\{v_i^{(L_p)}\})
p=φagg({vi(Lp)})
补充: 折线子图可以看作是PointNet的一般化–在PointNet中, d s = d e d^s=d^e ds=de, a a a和 l l l为空。但是本文作者表明odering信息,连接性约束,使得本文子图网络能够更好的编码结构化的信息。
2. Global Graph
Global Graph(全局图):折线节点
{
p
1
,
p
2
,
.
.
.
,
p
P
}
\{p_1, p_2,...,p_P\}
{p1,p2,...,pP}全连接构成全局图, Global Graph net用于编码节点间的交互 。(邻接矩阵A表示节点间的连接关系,本文采用全联接图)
{
p
i
(
l
+
1
)
}
=
G
N
N
(
{
p
i
(
l
)
}
,
A
)
\{p_i^{(l+1)}\}=GNN(\{p_i^{(l)}\},A)
{pi(l+1)}=GNN({pi(l)},A)
交互建模实际使用的是self-attention机制:
G
N
N
(
P
)
=
s
o
f
t
m
a
x
(
P
Q
,
P
K
T
)
P
V
GNN(P)=softmax(P_Q,P_K^T)P_V
GNN(P)=softmax(PQ,PKT)PV
其中:P为结点特征矩阵, P Q , P K , P V P_Q,P_K,P_V PQ,PK,PV是P的先行变换(P输入不同的MLP可得)
论文解读:Attention is All you need
Transformer–论文翻译:Attention Is All You Need 中文版
论文笔记:Attention is all you need
3. 任务、目标函数
Task1. 预测target agents的未来轨迹如下,其中:
φ
t
r
a
j
(
⋅
)
\varphi_{traj}(\cdot)
φtraj(⋅)–轨迹解码器–MLP (本文GNN网络只有一层,在推断的时候只需要计算target agent的特征。)
v
i
f
u
t
u
r
e
=
φ
t
r
a
j
(
p
i
(
L
t
)
)
v_i^{future}=\varphi_{traj}(p_i^{(L_t)})
vifuture=φtraj(pi(Lt))
Task2. 附加图补全任务–auxiliary graph completion task,为了使图捕获轨迹和车道线强交互,在训练时,隐藏一部分折线结点特征向量,用模型去预测该特征如下,其中:
φ
n
o
d
e
(
⋅
)
\varphi_{node}(\cdot)
φnode(⋅)–结点特征解码器-MLP。(不太懂
p
i
(
0
)
=
[
p
i
;
p
i
i
d
]
p_i^{(0)}=[p_i;p_i^{id}]
pi(0)=[pi;piid], 参考自BERT)
p
^
i
=
φ
n
o
d
e
(
p
i
(
L
t
)
)
\hat{p}_i=\varphi_{node}(p_i^{(L_t)})
p^i=φnode(pi(Lt))
Loss: 多目标优化目标函数:
L
=
L
t
r
a
j
+
α
L
n
o
d
e
\mathcal{L}=\mathcal{L}_{traj} + \alpha\mathcal{L}_{node}
L=Ltraj+αLnode
其中: L t r a j \mathcal{L}_{traj} Ltraj–负高斯对数似然, 轨迹是二维随机变量,作二元高斯分布假设,使用最大似然法。 L n o d e \mathcal{L}_{node} Lnode–Huber损失函数。(为了避免由 优化 L n o d e \mathcal{L}_{node} Lnode使得结点特征的幅度较小 而引起的平凡解,将结点特征L2正则化后再输入到后续的网路中。)
轨迹预测loss 参考文档:二元正态分布的概率密度函数
4.Related work
(介绍了4个部分的相关工作)
- 自动驾驶中的行为预测–IntentNet, ConvNets, MultiPath…
- 多agent交互预测
- entities 集合的表征学习–图结点的表示方式
- 自监督建模–来自NLP中单词补全任务
5.Experiment
5.1 实验设置
1 数据集
两个车辆行为预测bench-marks
- Argoverse dataset:简介 每条轨迹5s,前2s作为观测,后3s作为标签
- in-house behavior prediction dataset: 每条轨迹4s,前1s作为观测,后3s作为标签
两个数据集的历史轨迹都是从感知模型来的,所以有噪声(感知建模不准嘛)。Argoverse dataset的标签轨迹也是从感知来的,in-house behavior prediction dataset的标签轨迹是经过手工标记过的。
2 度量
ADE-Average Displacement Error–平均偏移误差,在时间
t
=
1.0
,
2.0
,
3.0
s
t=1.0,2.0,3.0s
t=1.0,2.0,3.0s预测轨迹处的偏移量,单位是米。
3 baseline–ConvNet
从最后一次观测到vehicle的帧开始,往前render N 个连续的帧,每一帧的分辨率为4004003。对于Argoverse 数据集来说400像素代表了130米,in-house数据集来说400像素代表了100米。将N帧堆叠在一起,形成一个4004003N 的图像输入数据。
ConvNet 网络模型输入数据的处理:crop the feature patch around the target vehicle from the convolutional feature map, and average pool over all the spatial locations of the cropped feature map to get a single vehicle feature vector。并且针对卷积的感受野,特征剪裁策略,和分辨率分别做了消融实验。
4 VectorNet
原则-尽量保证于ConVNet具有相同的输入信息(对比实验嘛,怎么公平怎么来)。 折线子图采用3层结构,全局图为一层结构,MLP 是64个结点。对context information,子图和全局图的层数做了消融实验。
5.2 消融实验
1.ConvNet 网络消融实验–卷积核、Crop 尺寸、图像分辨率
2.VectorNet 网络的消融实验–Context、Node Compl、子图和全局图的层数
5.3 模型资源消耗
FLOPs : FLOATING-POINT OPERATIONS PER SECOND–每秒浮点数计算
模型尺寸:
似乎pytorch可以有专门计算的接口: profile
5.4 与其他模型的对比实验
state-of-art: Agoverse Forecasting 挑战赛的冠军。结果统计在表格5中,VectorNet完胜。