自动驾驶论文阅读笔记1
- 1. Ployline Garph
- 2. Global Graph
- 3. 模型目标函数
- 4.Related work
- 5.Experiment
- 5.1 实验设置
- 5.2 消融实验
- 5.3 模型资源消耗
- 5.4 与其他模型的对比实验
VectorNet- Encoding HD Maps and Agent Dynamics from Vectorized Representation
VectorNet: 通过矢量化表示编码高精度地图与动态交通参与者
自动驾驶大佬waymo
论文翻译
目标:轨迹预测
方法:
- 向量化表示地图和移动agent(轨迹,车道线采样,每个点用特征向量表示)
- 利用local graph net 聚合每条折线的特征(全联接网路,一条折线最后凝练出一个特征向量–就是一个点)
- 利用全局graph聚合各个折线特性点的相互作用(全局图就是各个结点全联接构成的图,经过一层状态更新后通过解码网络得到目标对象的预测轨迹–轨迹的一步坐标位移)
(损失函数的设置,附加恢复网络等等细节需要去看原文)
20210426–(资料表明是CVPR2020的文章,但是标了arxiv:2005.就表示迷惑了)
road components
- moving agents(pedestrians, vehicles)
- road context information(lanes, traffic lights)
1. Ployline Garph
-
向量化
地图特征(车道线,交叉路口)-选定起点和方向,在spline(样条)上等空间间隔采样,连接相邻点构成向量,运动轨迹-等时间间隔采样关键点,构成向量。一条轨迹Pj\mathcal{P}_jPj就是一个向量集合{v1,v2,...,vp}\{v_1,v_2,...,v_p\}{v1,v2,...,vp}
曲线Pj\mathcal{P}_jPj向量viv_ivi-向量的dis,died_i^s,d_i^edis,die起始和终止点的坐标;aia_iai对象类型、时间戳、道路类型、限速;j是轨迹编号:
vi=[dis,die,ai,j]v_i=[d_i^s,d_i^e,a_i,j]vi=[dis,die,ai,j] -
折线子图–polyline subgraphs
同一条折线(polyline)上的节点构成一张子图,节点特征更新规则:
vi(l+1)=φrel[genc(vi(l)),φagg({ggen(vj(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))})]
gencg_{enc}genc–MLP–处理每个节点的特征。同层结点权值共享,不同层权重不同
φagg\varphi_{agg}φagg–最大池化–聚合邻居结点的信息
φrel\varphi_{rel}φrel–concatenation(简单的连接操作)–本结点特征和邻居结点特征相互结合
堆叠多层genc(⋅)g_{enc}(·)genc(⋅)操作 -
折线的表征–同一条折线上所有结点特征经过一个最大池化操作,聚合特征
p=φagg({vi(Lp)})\bm{p}=\varphi_{agg}(\{v_i^{(L_p)}\})p=φagg({vi(Lp)})
注:
- 起始和终止点的坐标–二维/三维都可以
- 目标agent最后一次被观察到的time step/位置 作为时间或者空间的原点。
- 折线子图可以看作是PointNet的一般化–在PointNet中,ds=ded^s=d^eds=de,aaa和lll为空。但是本文作者表明,odering 信息,连接性约束(没发现呀,和l有关?)使得本文子图网络能够更好的编码结构化的信息。
2. Global Graph
-
全局图
折线结点{p1,p2,...,pP}\{p_1, p_2,...,p_P\}{p1,p2,...,pP}构造全局图,A–邻接矩阵–为了简单起见,本文采用全联接图。
{pi(l+1)}=GNN({pi(l)},A)\{p_i^{(l+1)}\}=GNN(\{p_i^{(l)}\},A){pi(l+1)}=GNN({pi(l)},A)
图具体计算采用self-attention操作:
GNN(P)=softmax(PQ,PKT)PVGNN(P)=softmax(P_Q,P_K^T)P_VGNN(P)=softmax(PQ,PKT)PV
P为结点的特征矩阵,PQ,PK,PVP_Q,P_K,P_VPQ,PK,PV是P的线形投影(具体操作没说) -
预测moving agents的未来轨迹
vifuture=φtraj(pi(Lt))v_i^{future}=\varphi_{traj}(p_i^{(L_t)})vifuture=φtraj(pi(Lt))
φtraj(⋅)\varphi_{traj}(\cdot)φtraj(⋅)–轨迹解码器–MLP
(本文GNN网络只有一层,所以在推断的时候,只需要计算target agent的特征。)
- 附加图补全任务–auxiliary graph completion task
为了使图捕获轨迹和车道线强交互,在训练时,隐藏一部分折线结点特征向量,用模型去预测该特征:
p^i=φnode(pi(Lt))\hat{p}_i=\varphi_{node}(p_i^{(L_t)})p^i=φnode(pi(Lt))
φnode(⋅)\varphi_{node}(\cdot)φnode(⋅)–结点特征解码器-MLP,目标函数和BERT的目标函数相似。
(这一点写的不是很明白,φnode(⋅)\varphi_{node}(\cdot)φnode(⋅)输入特征的构造这一点)
论文解读:Attention is All you need
Transformer–论文翻译:Attention Is All You Need 中文版
论文笔记:Attention is all you need
3. 模型目标函数
多目标优化目标函数:
L=Ltraj+αLnode\mathcal{L}=\mathcal{L}_{traj} + \alpha\mathcal{L}_{node}L=Ltraj+αLnode
Ltraj\mathcal{L}_{traj}Ltraj–负高斯对数似然, 轨迹是二维随机变量,作二元高斯分布假设,使用最大似然法。二元正态分布的概率密度函数
Lnode\mathcal{L}_{node}Lnode–Huber损失函数,预测点的特征和masked 节点特征??
为了避免由 优化Lnode\mathcal{L}_{node}Lnode使得结点特征的幅度较小 而引起的平凡解,将结点特征L2正则化后再输入到后续的网路中。
20210430-还剩下related work 和实验部分没有整理
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.0st=1.0,2.0,3.0st=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完胜。