【論文閱讀】CVPR2021: MP3: A Unified Model to Map, Perceive, Predict and Plan


Sensor/組織: Uber
Status: Reading
Summary: 非常棒!端到端輸出map中間態 一種建圖 感知 預測 規划的通用框架
Type: CVPR
Year: 2021
引用量: 20

1. Motivation

HD Map有相當豐富的語義信息比如lanes,crosswalks,traffic lights等等的拓撲和信息。這些信息給 感知和motion forecast任務 提供了很多先驗信息。但是

  1. 人為制作hd map是非常cost的,而且還需要實時去根據道路維護hd map
  2. 即使是持續維護hd map,在運行過程中也要保證有厘米級的定位

由此本文提出一種端到端方法 去表達map中間態,同時能在定位失效的情況下整個車輛的運行

問題場景

在沒有HD Map的場景下進行自動駕駛任務是比較困難的,比如感知就損失了先驗信息,比如道路上更多的是車,行人橫穿馬路的crosswalk位置等。而更重要的是規划模塊大部分時候需要一個地圖先驗進行車道中心線的跟隨。如果沒有HD Map的話 SDV(自動駕駛車輛)應該能有能力根據場景內容進行High-level command的輸出

相關工作對於端到端的基本都是直接收到所有傳感器數據進入網絡輸出動作,並沒有一種中間表達態,而這一層存在的意義也很重要:

  1. interpretability 對於自動駕駛系統的可解釋性
  2. 直接的端到端形式 缺乏整體結構和先驗知識的有效利用 brittle to distribution shift [44]

論文相關工作部分着重介紹了online mapping, perception, prediction and motion planning各個子模塊的工作同時分析他們如何在端到端的下游中起到作用

Contribution

提出了一種 針對端到端任務下的 mapless drivining approach 使得整個過程具有更多可解釋性,不會有information loss,而且對於中間態表達的不確定性 也有一定解釋。主要方法步驟看下部分和框圖基本能理解個大概

發現CV會好像論文介紹后 也可以不總結貢獻哎


問題區

  • 這點怎么證明?... 怎么說明沒有information loss 或是其他方法有 信息損失呢?

2. Method

  1. 提出了使用probabilistic spatial layers去建模環境內的靜態和動態部分,其中
    • 靜態部分是以規划為中心的online mapping,提取處那些區域可以進行駕駛和相關的交通信息(比如紅綠燈 限速等)
    • 動態部分主要是其他道路交通參與者,用一個novel occupancy flow來提供隨時間 occupancy和 其速度信息。
  2. 隨后走到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{F}_{\left(t, i_{1}\right) \rightarrow\left(t+1, i_{2}\right)}^{c}\right)=\sum_{k} p\left(\mathcal{O}_{t, i_{1}}^{c}\right) p\left(\mathcal{K}_{t, i_{1}}^{c}=k\right) p\left(\mathcal{V}_{t, i_{1}, k}^{c}=i_{2}\right) \]

其中 \(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\) 的概率:

\[p\left(\mathcal{O}_{t+1, i}^{c}\right)=1-\prod_j\left(1-p\left(\mathcal{F}_{(t, j) \rightarrow(t+1, i)}^{c}\right)\right) \]

如果好奇如何推導的建議查附錄,這里就不展開了... 因為看起來問題不大:二項分布 有無 & 連乘得大圖

2.3 Motion Planning

這一部分有對不確定性的score加入,然后向整體框圖那樣 根據所有的來進行選擇一個最小的cost。下圖為對應細節框架設計

Trajectory Sampling

一開始看的時候... 我還以為是model-based,細看是從large-dataset學到的采樣(不用網絡)。

  1. 從數據集里提取出車輛軌跡,一共150個小時的manual driving data

  2. 聚類(因為高效)每個軌跡的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 會被保留

  3. 再加上速度和曲率放入自行車模型 給一遍 rollout 來生成連續速度和轉角的軌跡。

**Route Prediction**

如上網絡 輸入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

有以下幾條

  1. 為鼓勵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 保持在路線上,並且僅在路線內移動時才會獲得獎勵。

  2. 引入了一個cost-to-go,來應對超出計划范圍的預測路線,對於盡頭轉彎或者車輛高速下比較有用。具體來說,假設 SDV 保持恆定的速度和航向,我們計算所有與 SDV 重疊的 BEV 網格單元 j 的平均值 \(1-R_j\)

  3. 為確保SDV行駛在道路中心線上,use the predicted reachable lanes distance transform \(\mathcal M^D\) 去對軌跡點進行penalize。

  4. 同時為了考慮 \(\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

  5. 使用一個penalize 約束SDV在道路上,不去碰撞邊緣

    \[f_{a}(\mathbf{x}, \mathcal{M})=\max _{i \in m(\mathbf{x})}\left[1-P\left(\mathcal{M}_{i}^{A}\right)\right] \]

  6. 再加一個交叉路口的紅綠燈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\)

\[f_{o}\left(\mathbf{x}_{t}, \mathcal{O}\right)=\sum_{c} \max _{i \in m\left(\mathbf{x}_{t}\right)} P\left(\mathcal{O}_{t, i}^{c}\right) \]

其中 \(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM