Sensor/組織: Uber
Status: Reading
Summary: 非常棒!端到端輸出map中間態 一種建圖 感知 預測 規劃的通用框架
Type: CVPR
Year: 2021
引用量: 20
-
參考與前言
論文連結:
arxiv上鍊接(CVPR那個連結缺少附錄 ):
1. Motivation
HD Map有相當豐富的語義資訊比如lanes,crosswalks,traffic lights等等的拓撲和資訊。這些資訊給 感知和motion forecast任務 提供了很多先驗資訊。但是
- 人為製作hd map是非常cost的,而且還需要實時去根據道路維護hd map
- 即使是持續維護hd map,在執行過程中也要保證有釐米級的定位
由此本文提出一種端到端方法 去表達map中間態,同時能在定位失效的情況下整個車輛的執行
問題場景
在沒有HD Map的場景下進行自動駕駛任務是比較困難的,比如感知就損失了先驗資訊,比如道路上更多的是車,行人橫穿馬路的crosswalk位置等。而更重要的是規劃模組大部分時候需要一個地圖先驗進行車道中心線的跟隨。如果沒有HD Map的話 SDV(自動駕駛車輛)應該能有能力根據場景內容進行High-level command的輸出
相關工作對於端到端的基本都是直接收到所有感測器資料進入網路輸出動作,並沒有一種中間表達態,而這一層存在的意義也很重要:
- interpretability 對於自動駕駛系統的可解釋性
- 直接的端到端形式 缺乏整體結構和先驗知識的有效利用 brittle to distribution shift [44]
論文相關工作部分著重介紹了online mapping, perception, prediction and motion planning各個子模組的工作同時分析他們如何在端到端的下游中起到作用
Contribution
提出了一種 針對端到端任務下的 mapless drivining approach 使得整個過程具有更多可解釋性,不會有information loss,而且對於中間態表達的不確定性 也有一定解釋。主要方法步驟看下部分和框圖基本能理解個大概
發現CV會好像論文介紹後 也可以不總結貢獻哎
問題區
-
這點怎麼證明?... 怎麼說明沒有information loss 或是其他方法有 資訊損失呢?
2. Method
- 提出了使用probabilistic spatial layers去建模環境內的靜態和動態部分,其中
- 靜態部分是以規劃為中心的online mapping,提取處那些區域可以進行駕駛和相關的交通訊息(比如紅綠燈 限速等)
- 動態部分主要是其他道路交通參與者,用一個novel occupancy flow來提供隨時間 occupancy和 其速度資訊。
- 隨後走到motion planning模組進行retrieve dynamically feasible trajectories,預測地圖上的spatial mask以給出SDV一條能走的路,同時使用online mapping和occupancy flow用來作為計算可解釋性的safe planning cost
整體框架
2.1 LiDAR
首先對比其他直接輸入一幀雷達點雲不同之處,這裡是exploits a history of LiDAR point clouds 以提取場景此時間下 更豐富的幾何和語義特徵點
參考[30] 將 \(T_p=10\) 歷史LiDAR點弄成BEV 也就是1秒內的所有鐳射雷達點,然後以 \(a=0.2m/\text{voxel}\) 的解析度進行voxelized處理,ROI為 \(W=140m\) 前後各70m,\(H=80\),左右各40和 \(Z=10\) 高5m,然後參考[9]將高度和時間作為單獨的通道 以避免使用三維卷積 saving memory and 減少計算時間。所以整個 3D tensor是:\(\left(\frac{H}{a}, \frac{W}{a}, \frac{Z}{a} \cdot T_{p}\right)\)
下圖橙黃部分為LiDAR對應網路框架,同時結合了[9,52]來進行的提取場景中的幾何、語義和motion資訊
2.2 Scene Representations
主要是用來給出環境資訊的一定先驗,並在這層輸出視覺化,再有問題出現時,有一定的可解釋性。同時包含對靜態環境的預測=online map,和預測動態障礙物位置和速度=dynamics occupancy field
下圖三為相關的視覺化表達,同時因為感測器感知的侷限性,考慮不確定性來評估SDV可能出現的危險也是很重要的;圖四為dynamic occupancy field的建立過程
online map:主要包含可行駛區域(drivable area),可到達道路(reachable lanes),交叉路口(intersection);正常情況下 我們希望SDV儘可能接近reachable lanes,也就是道路中心線,交叉路口主要幫助理解紅綠燈,停車和讓行等標誌
dynamic occupancy field:主要是幫助SDV理解其他道路參與者,如圖四所示,先進行實際的柵格佔據,再根據預測的路徑進行flow的新增,BEV 0.4m/pixel 解析度,包含:初始柵格(Initial occupancy),temporal motion field‘;需要注意的是 對 vehicles, pedestrains and bikes 進行了分類 各自都有自己的occupancy flow
從下部分圖八中對應到上面的整體框圖,可以看到感知和預測模組的整個網路框架細節部分
概率模型
作用:reason about uncertainty in our online map and dynamic occupancy filed,主要就是解釋occupancy flow整個的建立過程
下面為notation與公式細節
- 如圖三所示 每個map都是自己的語義通道,定義為\(\mathcal M\)
- 用 \(i\) 表明 spatial index
- drivable area 和 交叉路口 通道分別用 \(\mathcal{M}_{i}^{A} \text { and } \mathcal{M}_{i}^{I}\) Bernoulli random variables 伯努利分佈
- 將SDV到車道中心線的距離model as 拉普拉斯運算元 \(\mathcal{M}_{i}^{D}\),因為作者發現比Gaussian更準確
- 將SDV到最近車道中心線的方向 表示為 \(\mathcal{M}_{i}^{\theta}\) 用Von Mises 分佈 因為範圍可以從 -pi到pi
- 前面提到了 會對動態障礙物進行分類 \(\mathcal O^c\) 其中c為class 包含:車輛、行人、騎自行車的人 \(\mathcal O^c_{t,i}\) 為類c下 spatio temporal index t,i 的Bernoulli random variables
- 對每個類別在每個 spatio-temporal location進行建分佈:\(\mathcal{K}_{t, i}^{c}\) over K BEV motion vectors \(\left\{\mathcal{V}_{t, i, k}^{c}: k \in 1 \ldots K\right\}\)
終於介紹完了 emmm 接著直接走到公式:在連續時間 t 和 \(t+1\) 時從位置 \(i_1\) 到位置 \(i_2\) 的 對應整體occupancy flow的概率為:
其中 \(p\left(\mathcal{V}_{t, i_{1}, k}^{c}=i_{2}\right)\) 如果位置 \(i_2\) 在連續motion vector附近的4個格的話,使用的是線性插值;否則直接為0 如圖四部分,這裡是對整體 F occupancy flow,下面為單個格 \(i\) 在時間 \(t+1\) 下 從 t 轉過來的所有格 \(j\) 的概率:
如果好奇如何推導的建議查附錄,這裡就不展開了... 因為看起來問題不大:二項分佈 有無 & 連乘得大圖
2.3 Motion Planning
這一部分有對不確定性的score加入,然後向整體框圖那樣 根據所有的來進行選擇一個最小的cost。下圖為對應細節框架設計
Trajectory Sampling
一開始看的時候... 我還以為是model-based,細看是從large-dataset學到的取樣(不用網路)。
-
從資料集裡提取出車輛軌跡,一共150個小時的manual driving data
-
聚類(因為高效)每個軌跡的bin包含當前SDV的速度、加速度和曲率
使用初始 速度、曲率和加速度 對應每個bin size為 2.0 (m/s), 0.02 (1/m), 1.0 (m/s^2),去將軌跡分類成不同的bins;每個bin中的軌跡都會被聚類成3000個sets,然後 closest trajectories to cluster prototype 會被保留
-
再加上速度和曲率放入自行車模型 給一遍 rollout 來生成連續速度和轉角的軌跡。
如上網路 輸入online map和縱向的距離,然後加上high-level action,\(c=(a,d)\) 其中a包含 keep lane, 左轉,右轉。這裡手動給GPS加了(0,5)的高斯噪音
Scoring Cost
最後所有的東西都到了這一步來輸出實際車輛要執行的那條軌跡,也就是cost最低的,一共有三個指標:routing and driving on roads、safety、comfort
Routing and Driving on Roads
有以下幾條
-
為鼓勵SDV執行high-level command,使用評分函式使得SDV 在 \(\mathcal R\) 中概率較高的區域行駛更遠距離的軌跡
\[f_{r}(\tau, \mathcal{R})=-m(\tau) \min _{i \in m(\tau)} \mathcal{R}_{i} \]其中 \(m(\tau)\) 是指 BEV下 SDV選擇軌跡 \(\tau\) 所佔領的grid cells。用上述 scoring function 可以確保 SDV 保持在路線上,並且僅在路線內移動時才會獲得獎勵。
-
引入了一個cost-to-go,來應對超出計劃範圍的預測路線,對於盡頭轉彎或者車輛高速下比較有用。具體來說,假設 SDV 保持恆定的速度和航向,我們計算所有與 SDV 重疊的 BEV 網格單元 j 的平均值 \(1-R_j\)
-
為確保SDV行駛在道路中心線上,use the predicted reachable lanes distance transform \(\mathcal M^D\) 去對軌跡點進行penalize。
-
同時為了考慮 \(\mathcal M^D\) 和 \(\mathcal M^\theta\) 上的不確定性,使用 cost function: product of SDV velocity and standard deviation of gird cells,即 \(\mathcal M^D\) 和 \(\mathcal M^\theta\) 下 SDV 所佔領的那些格
\[f_{d}\left(\mathbf{x}, \mathcal{M}^{\theta}, \mathcal{M}^{D}\right)=\sum_{i \in m(\mathbf{x})} \mathbf{x}_{v}\left(\sigma_{i}^{D}+\frac{1}{k_{i}^{\theta}}\right) \]其中 \(k_i^\theta\) is the concentration parameter of the von Mises distribution representing lane direction
-
使用一個penalize 約束SDV在道路上,不去碰撞邊緣
\[f_{a}(\mathbf{x}, \mathcal{M})=\max _{i \in m(\mathbf{x})}\left[1-P\left(\mathcal{M}_{i}^{A}\right)\right] \] -
再加一個交叉路口的紅綠燈cost,之間使用predicted junction probability map \(\mathcal M^J\) 對闖紅燈的行為進行懲罰
Safety
即對SDV overlaps occupied regions進行懲罰,對於那些沒有重合的 但是距離障礙物太近的軌跡點 \(\mathbf x\),根據距離和SDV現在的速度進行剎車計算來measure the violation of safety distance,對於comfrotable deceleration的狀態為 \(\mathbf x_t\)
其中 \(m(\mathbf{x}_{t})\) 表示BEV grid-cells,對應 \(c\) 為語義的class that overlap 在狀態 \(\mathbf x_t\) 下的SDV多邊形
Comfort
對jerk, 橫向加速度,曲率和曲率變化率進行comfortable driving的定義
問題區
-
附錄有部分公式
-
\[f_{d}(\mathbf{x}, \mathcal{M})=\underset{i \in m(\mathbf{x})}{\mathbb{E}}\left|\mathcal{M}_{i}^{\theta}-\mathbf{x}_{\theta}\right| \]
2.4 Training Loss
像GRI和MaRLn一樣 是兩個階段的loss回饋,這樣訓練整個任務的效果會好很多
第一階段: Multi-task 多工學習下的 loss
第二階段: Trajectory Scoring的
更多詳情見arxiv上的論文主頁附錄
3. 實驗
直接摘取了論文裡的表格和圖,從數字看來這個效果提升很大啊,成功率直接飆升
在附錄裡,做了很多個消融實驗,這個工作量也挺大的,可惜沒開 hhh 附錄裡也做了將HD Map加到Motion plan的地方進行的對比
4. Conclusion
也直接摘取了 和前面方法總結基本一致,可以看看:
整體來說 這篇工作雖然沒有開源,但是很完整,可以說非常完整。從方法設計,到為什麼要提出一個模組部分,motivation非常好。整篇文章講的也很好,算是近期看過的第一名了
碎碎念
這個... 工作好棒啊,看到過程 特別是occupancy flow那個處理 很聰明,妙啊.. 甚至整條方法鏈感覺比LAV更完善一點,雖然這個不開源,公司做的嘛.. 向來都是不開源,而且資料集好像也沒引用 是自己的資料集,所以不如LAV 開源的這種 直接對著程式碼 更爽點。不過有一點是 MP3 本文的方法講的很仔細,包括附錄的網路圖和一些引數,仔細到 大佬們 應該能照著復現。感謝傑哥組會指出這篇 hhh 漏網之魚
贈人點贊 手有餘香 ?;正向回饋 才能更好開放記錄 hhh