<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • 【論文閱讀】CVPR2022: Learning from all vehicles

    Column: March 23, 2022 1:08 PM
    Last edited time: March 23, 2022 11:13 PM
    Sensor/組織: 現leaderboard第一名,RC上總分94分 前無古人后無來者
    Status: Reading
    Summary: IL; 輸出 中間層 map再去學
    Type: CVPR
    Year: 2022

    碎碎念: 第一眼看上去真的好像特斯拉AI day介紹的方案,提取相關照片,特斯拉AI day記錄后面發吧 b站有中文字幕版

    1. Motivation

    來源于 carla leaderboard 自動駕駛排行榜,主要任務:就是通過得到的傳感器信息來操控車輛的運行,可 端到端學習 也可以 傳統方案

    問題場景

    現實生活中,可能大家開車10000個小時 都不會遇到一次事故,但是我們一定見到過事故現場,由此啟發:learning-based 也可以從log中的其他車輛行為學習到經驗 (故事能力 max)

    學習其他車輛的軌跡(也可以說是預測其他車輛軌跡)有助于我們自車的sample efficiency 而且也可以幫助我們see more interesting scenarios,同時也可以幫助我們避免碰撞

    但是問題是:對于其他車輛來說 是不像本身一樣有所有傳感器數據的,對于我們來說是一種 partial observation 所以需要一種 中間的表達態 來表示周圍信息以代替傳感器數據,然后所有可觀測的車輸出這樣的數據 到網絡中

    Contribution

    文章里沒有總結contribution... 以下為簡述方法

    LAV 就是用來解決上述問題的,通過對perception and motion的部分觀測 設計一個能用于識別、預測和規劃的整體框架。(類似于特斯拉AI day介紹的:先進行解耦 multi-task,然后合起來 輸出中間的vector map,然后只把vector map輸入到規劃中去)

    主要部分類似于 lbc 里 privileged distillation approach 來解耦 perception 和 action 兩個部分,也就是先做感知的模塊然后再action

    1. 先用 3D detection 和 分割任務學習出 感知模塊,輸出a viewpoint invariant representation

      在這個模塊中 并不區分場景中自車和其他車(應該是指viewpoint上有自車信息)

    2. 與前一步同時進行的還有motion planner,不同于之前 action的輸出,這里僅輸出future waypoints 來表示motion plan,整個planner預測周圍所有車的軌跡和他們的high-level commands(label形式 后面有詳細介紹)

    3. 最后把他們合起來成joint framework 然后用privileged distillation來提取出

    整個網絡最后輸出的是一層蒸餾后的用perception module對所有車進行預測輸出view point invariant vsion features,然后給到motion prediction module進行軌跡輸出

    2. Method

    整個訓練完成后,方法步驟是三層:

    1. perception 將 sensor data 轉為 map-view feature
    2. 使用perception輸出的features,對所有車執行motion planner,輸出軌跡和high-level command
    3. 使用兩個PID對自車輸出的軌跡進行跟隨

    2.1 框架

    2.2 Perception Model

    使用三個相機 合起來,和wor里的操作是一樣的,為了獲得更廣的視角(但是這樣紅綠燈也會更小不好識別)

    照片示意圖(右側為Telephoto 在2.3 c會用到)

    \(\mathbf{I}_{t}=\left\{I_{t}^{1}, I_{t}^{2}, I_{t}^{3}\right\}\) 分別代表三個相機,\(L_t\) 代表激光雷達點云,兩個的combine方法來自 point-painting [46] 將 RGB 和 a light-weight center-point [47] with pointpillars[27] 處理后的點云進行融合

    經過處理后這層框架輸出的是map-view feature representation \(f \in \mathbb{R}^{W \times H \times C}\) 其中 W寬,H高,C為通道數

    網絡框架細節

    使用pointpillars with pointpainting進行多模態 3D perception backbone \(P_B\)

    • 使用ERFNet 對每個相機輸出的圖片進行計算semantic segmentation scores的計算,分割的label包含:背景、車輛、road 道路、lane markings和行人

    • pointpillars 方面,先用FC-32-32 with batch norm作為point net層,然后對激光雷達點云在:\(x \in [-10m,70m],y\in [-40m,40m]\) 進行create pillars,每個pillars表示 \(0.25m \times 0.25m\)的空間范圍,使用默認的2D CNN multi-scale features去獲取spatical features \(\phi_{t} \in \mathbb{R}^{192 \times 160 \times 160}\) with 0.5x resolution of the original pillars

      其中和pointpillars本身直接使用超參數build dense pillars,本文選擇sparesly represent,使用一個spare PointNet去梳理sparese pillar features

    • 對于融合圖片分割和點云檢測輸出BEV feature則是使用簡單版的one-stage centerpoint。預測兩個centerness maps,一個為車,一個為行人

    • 溫馨鏈接:

      [27] pointpillars很不錯的一篇 工業界也常用的點云檢測框架,博客園不錯的解釋博客:

      點云3d檢測模型pointpillar

    2.3 plan motion

    首先需要注意的是只有ego car有明確的GNSS的目標點 \(g\in \mathbb R^2\),其他npc沒有目標點的,其次 high level command也是只有ego car有,所以其他車輛預測時是需要單獨infer的

    整個這個motion planner 內部也有兩步:

    a. 標準的RNN \(M(\hat f,c)\)

    預測未來 \(n=10\) 的路徑點 waypoints,使用的是:high level commnd \(c\) (包含:左轉,右轉,直行,跟隨,換左道,換右道)

    根據前情提要,我們就得分為兩個部分loss,然后訓練這個網絡時 是兩部分loss相加:一個ego 有真值的 \(\hat c\),一個其他npc 需要infer的 \(c\)

    \[\mathcal{L}_{M}^{e g o}=\mathrm{E}_{\hat{f}, y, \hat{c}}\left[\|y-M(\hat{f}, \hat{c})\|_{1}\right]\tag{1} \]

    \[\mathcal{L}_{M}^{\text {other }}=\mathrm{E}_{\hat{f}, y}\left[\min _{c}\|y-M(\hat{f}, c)\|_{1}\right] \]

    b. refine RNN \(M'(\hat f, g, \tilde y)\)

    在a輸出后,使用a輸出的 \(\tilde y\) 作為輸入,然后結合 map-view feature \(\hat f\) 和 GNSS給出的goal 來為ego car輸出相對目標點

    \[\mathcal{L}_{M}^{\text {refine }}=\mathrm{E}_{\hat{f}, y, \tilde{y}, \hat{g}}\left[\left\|\tilde{y}+M^{\prime}(\hat{f}, \hat{g}, \tilde{y})-y\right\|_{1}\right] \tag{3} \]

    這一部分的loss backpropagating 同樣也會傳回到perception backbone內,所以此時perception model也可以attend to the low-level details

    網絡框架細節

    首先得到了ego car和其他車的detection,然后針對每輛車的位置和yaw角度,截取ROI 感興趣的區域輸入到一個CNN 對于車輛 \(i\) 輸出一個embedding \(z^i\),這個\(z^i\) 是在 \(M,M'\)間共享的

    • \(M\) 對于每個High-level command 都使用了一個GRU,the GRU rolled out n次去輸出連續路徑點之間的offset
    • \(M'\) 使用了兩個種類的recursions和rollouts,針對waypoints的rollouts,針對refinement iterations的rollouts

    這里對GRU輸出相對位置有點像transfuser NEAT里的那樣,看來是預測那邊遷移task過來的

    問題區:

    • 對于其他車輛的預測軌跡

      we observe their future trajectory to obtain supervision for future waypoints y

    • 原文寫的是:We instead allow the model to infer the high-level command directly and optimize the plan for the most fitting high-level command.

      然而... 咋fitting出來的呢 emmm 后面看代碼把

    c. controller

    當輸出了相對目標點,還需要進行一層控制,因為目標點并不能直接給車,CARLA內 車接受的是油門,方向盤和剎車指令。這里作者和其他的transfuser NEAT 之類的用的是一樣的 兩個PID 控制。有意思的是(和我 前幾天和同學討論的brake最好外加一個network只做brake響應 這樣應該能降低事故率)沒想到想一塊了 簡直了 hhhh

    也就是雖然PID會根據motion plan的相對坐標輸出油門、方向盤,但是這里多加了對剎車的neural network calssifier專門對交通燈和危險場景進行剎停

    這個分類器的輸入是前面的三個相機外加一個遠距相機 類似于前面說面的照片 右邊那張,也就說整體系統是四個相機,只是前面用了三個,這里用的四個

    網絡框架細節

    網絡使用的是Resnet18輸出fixed sized embedding然后concatenate到一起 放入一個線性層去預測binary brake(也就是剎車還是不剎車 二值)

    然后對于輸出的軌跡 進行一層判斷,如下圖邏輯,如果該軌跡會導致碰撞就調整一下

    總結

    所以我們先用3D detection和分割任務學習了perception model,然后plan motion進行軌跡預測再往回傳到perception進行loss,最后這兩者輸出map-view feature帶motion plan預測的軌跡,然后用high-level command likelihodd thereshold 來檢查是否碰撞

    • 這里的檢查碰撞沒看懂?

    3. 實驗部分

    這一部分 看下在線排行榜 RC方面達到了驚人的94分 真的是令人敬佩,做過這個任務的就知道 RC打到80分以上已經算是突破了,然后扣完分也有61分,甩現在的 March 23, 2022 第二名十分了,詞窮只能再說一句 牛掰!

    這里就貼一下表格,因為我做過這個任務... 所以基本不用看文字 我都知道這些指標是些啥 好壞與否hhh,主要就貼消融實驗里的部分了

    之所以開頭說和特斯拉 AI day說的很像是因為下面這幅效果圖 hhh 真的太像了,果然這個作者的效果圖都超酷hhh WOR也是

    4. Conclusion

    沒啥好conclusion了,一句話 牛掰,這個作者我著實佩服,按著每年一篇的速度(還基本上是一個人在做)引領 CARLA 這個自動駕駛任務的方向!【從lbc, wor 再到現在的lav】佩服!

    就貼一下原文的討論把,雖然我覺得這已經是到頭了 真的是厲害

    碎碎念

    前段時間趕完論文后,又看了一遍WOR的代碼和評估,當時和這個作者在github 交流了好久 發現我竟然沒follow,隨手一個follow 第二天看的時候發現啊,大佬回follow我了 這就像你偶像關注你一樣 hhh 太奇妙了

    另外 有意思的是,我做的這個任務的時候 到后面 我一直以為瓶頸在專家數據,LAV這篇絲毫沒提這個,而... 代碼也沒po 他是如何收集數據的,比如transfuser, lbc 和mmfn 都會進行說明數據如果進行收集,不過從開出來的數據集400多G 再瞅瞅我的 100G hhh 知道了 差距,此點的相關issue


    代碼運行相關,好像代碼沒po全還有些小問題,

    PS 相關包的下載可能會出現的問題,請通過以下命令

    conda install pytorch-scatter -c pyg
    

    記得下載 git-lfs

    posted @ 2022-03-23 23:32  Kin_Zhang  閱讀(518)  評論(0編輯  收藏  舉報
    国产美女a做受大片观看