自動駕駛論文閱讀筆記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完勝。