目标:轨迹预测
方法:
(损失函数的设置,附加恢复网络等等细节需要去看原文)
20210426–(资料表明是CVPR2020的文章,但是标了arxiv:2005.就表示迷惑了)
road components
向量化
地图特征(车道线,交叉路口)-选定起点和方向,在spline(样条)上等空间间隔采样,连接相邻点构成向量,运动轨迹-等时间间隔采样关键点,构成向量。一条轨迹 P j \mathcal{P}_j Pj就是一个向量集合 { v 1 , v 2 , . . . , v p } \{v_1,v_2,...,v_p\} {v1,v2,...,vp}
曲线 P j \mathcal{P}_j Pj向量 v i v_i vi-向量的 d i s , d i e d_i^s,d_i^e dis,die起始和终止点的坐标; a i a_i ai对象类型、时间戳、道路类型、限速;j是轨迹编号:
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]
折线子图–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(⋅)操作
折线的表征–同一条折线上所有结点特征经过一个最大池化操作,聚合特征
p = φ a g g ( { v i ( L p ) } ) \bm{p}=\varphi_{agg}(\{v_i^{(L_p)}\}) p=φagg({vi(Lp)})
注:
全局图
折线结点 { p 1 , p 2 , . . . , p P } \{p_1, p_2,...,p_P\} {p1,p2,...,pP}构造全局图,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的线形投影(具体操作没说)
预测moving agents的未来轨迹
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))
φ t r a j ( ⋅ ) \varphi_{traj}(\cdot) φtraj(⋅)–轨迹解码器–MLP
(本文GNN网络只有一层,所以在推断的时候,只需要计算target agent的特征。)
论文解读:Attention is All you need
Transformer–论文翻译:Attention Is All You Need 中文版
论文笔记:Attention is all you need
多目标优化目标函数:
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损失函数,预测点的特征和masked 节点特征??
为了避免由 优化 L n o d e \mathcal{L}_{node} Lnode使得结点特征的幅度较小 而引起的平凡解,将结点特征L2正则化后再输入到后续的网路中。
20210430-还剩下related work 和实验部分没有整理
(介绍了4个部分的相关工作)
1 数据集
两个车辆行为预测bench-marks
两个数据集的历史轨迹都是从感知模型来的,所以有噪声(感知建模不准嘛)。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,子图和全局图的层数做了消融实验。
1.ConvNet 网络消融实验–卷积核、Crop 尺寸、图像分辨率
2.VectorNet 网络的消融实验–Context、Node Compl、子图和全局图的层数
FLOPs : FLOATING-POINT OPERATIONS PER SECOND–每秒浮点数计算
模型尺寸:
似乎pytorch可以有专门计算的接口: profile
state-of-art: Agoverse Forecasting 挑战赛的冠军。结果统计在表格5中,VectorNet完胜。