當前位置:
首頁 > 最新 > 自動駕駛中語義追蹤的「正確」打開方式

自動駕駛中語義追蹤的「正確」打開方式

今天給大家介紹的是一篇比較系統性」集大成」的工作[1],可能不像之前介紹的那些工作,都是從某點insight出發導出了一些很簡單的性質或者結論,這篇工作集成了多個成熟的技術,但是又對問題進行了深入的定製化。同樣作為自動駕駛的從業者,我是很欣賞這樣的工作,並理解這背後的工作量和艱辛的,所以今天給大家換換口味。

這篇文章想要處理的問題是基於視覺的自動駕駛中的一個核心問題:如何通過雙目相機準確追蹤道路上車輛準確的位姿和狀態?這篇文章給出了一個系統性的解決方案,如下圖所示,整個系統分為幾個部分:

第一部分是通過標準的Deep Learning方法進行2D Detection和視角分類,並通過相機模型,預測出初始的3D框;第二部分通過提取ORB特徵和魯棒匹配,完成雙目深度估計與時序追蹤;第三部分,也是整個paper的核心,通過SLAM中常用的Bundle Adjustment技術,聯合優化自身位姿、每個車輛的位姿和狀態,得到最終結果。下面詳細介紹每一部分的工作。由於文章中符號很多,而且有一些描述不很清晰的地方,下面部分將主要用語言來描述每一部分在做的事情和想法。雖然可能不十分精確,但是這樣更有益於大家理解主旨,如果有興趣的同學可以直接查閱原文來看精確的數學描述。

在第一部分中,主要follow了CVPR17的一個工作(原文citation[24]),基本思想是通過預測2D框以及不同的觀測視角,同時假設2D框能夠緊密包圍3D框,那麼給定視角,相機內參和車輛dimension的情況下,最緊的3D框和水平旋轉角度可以直接通過線性方程組解出。注意這裡做了很強的假設,也就是2D框完全準確,已經每種車輛的dimension是完全一致的,所以這個計算出的3D框只是作為後續操作的初始值,在第三部分中,還會重新優化這4個自由度的變數。

在第二部分中,主要任務是建立起可靠的local feature匹配和幀間association。幀間association和雙目深度估計都使用了比較成熟的方案或簡單的baseline。由於在第一步已經有了初步的距離估計,在雙目匹配的過程中可以縮小匹配範圍以提升結果。local feature這裡使用的是經典的ORB feature。對於每個特徵點,分別在左右眼和時序上進行匹配,後用RANSAC做outlier去除。

第三部分,也是整個文章中最重要的部分,把沈老師很熟悉的Bundle Adjustment (BA) 引入到了整個的位姿狀態精調中來。這部分優化分為兩個步驟,第一部分(Camera BA)是利用前面得到的背景中的匹配的點,聯合優化自身相機位姿,以及在上一步匹配過的背景特徵點坐標來優化reprojection error,這是在SLAM和SfM中的經典BA。通過這一步,可以得到相對準確的自身位姿為下一步使用。第二部分(Object BA)是針對每一輛車,充分挖掘2D和3D之間關係,以及各種約束。這部分BA分為4個loss term,聯合優化了每個車輛自身的位姿,大小,速度和方向盤轉角以及在上一步得到的ORB特徵點的對應3D位置,下面分別介紹這4部分:

特徵點一致性loss:原文中的公式(16) (17),符號非常複雜,要做的事情其實就是要求特徵點對應的3D位置經過各種投射變換之後能夠在它在2D圖像上的坐標對應。文中分別對於左眼和右眼圖像計算了loss,下面以左眼為例分布解釋下在做什麼:

首先,作者假設車輛是一個剛體,也就意味著在幀間匹配得到的特徵點,在車輛坐標系下的相對位置是不會隨時間變化,所以公式(16)中的f是沒有上標t的。

第一步變換,將特徵點的3D位置f由車體坐標系轉換到世界坐標系。

將世界坐標系內的f轉換到相機坐標系。

將相機坐標系中的f通過相機內參矩陣投影回2D圖像。

這樣就可以計算這兩者之間的一個差值,作為loss function。對於右眼,計算方法類似,只不過需要使用雙目標定的外參,將左眼相機坐標系轉換到右眼相機坐標系中,其餘一致。

2.3D框與2D框一致loss:這一個term和第一部分的原理是類似的,區別在於,在這部分中,車輛的dimension和車輛的位姿被同時作為優化變數聯合優化,而不是像第一部分中,車輛的dimension固定。所以通過加入這個term解決了在第一步中由於dimension不準確導致的錯誤估計。

3.車輛動力學模型loss:除了車輛位姿,我們在自動駕駛中還會關係車輛的狀態,包括速度和方向盤轉角,這對於後續的車輛意圖估計等任務有著極大的幫助。實際的車輛當然不可以抽象成一個無規律的質點的運動,所以在這個loss中,作者使用了一個車輛動力學模型來描述當前時刻與前一時刻的位姿和狀態之間的關係。這個動力學模型來源於原論文引用[27]。除了位姿之外,這個loss里還引入了車輛速度、方向盤轉角以及車輛輪距(可以從車輛大小的出)作為優化變數。

4.點雲對齊loss:這一個loss文中描述得不是很清楚。首先,這裡的點雲並不是指LiDAR點雲,而是指從雙目中恢復出來的點雲。以我個人的理解,這個loss的意義在於約束每輛車的特徵點的3D位置可以落在對應車輛的3D框內。具體的細節文中只提到了minimize the distance of the feature points and their corresponding observed surface. 個人不是很理解具體的這個做法,為什麼需要minimize這樣的距離,而不是直接根據是否在3D框內計算loss。另外,這樣的做法是否假設了所有特徵點都在3D框的面上,這也不是很合理。總之,這樣的一個loss是有必要的,但是具體實現方式可能會有更好的。

在實驗中,作者使用了KITTI數據集,分別對ego-motion和object localization&pose估計進行了比較。在ego-motion中,作者對比了經典的ORB-SLAM,由於這個方法能夠很好地去除由於移動物體帶來的特徵點匹配失敗,在一些車輛較多的複雜場景中取得了較大的提升。在object motion&pose中,由於前述引入的諸多先驗和約束,對比baseline也有了巨大提升。相信這個方法也可以從更強大的Deep learning方法中得到更準確的2D檢測和視角估計而受益。強烈推薦大家觀看一下下面在KITTI上的結果視頻:https://www.youtube.com/watch?v=5_tXtanePdQhttps://www.https://www.youtube.com/watch?v=5_tXtanePdQ

總結以上,這篇文章應該是我見到的一篇將這麼多先驗緊耦合在一起的系統性工作。這可能和沈老師之前的SLAM背景很相關。雖說每個模塊都有改進的空間,但是這篇文章提供了一套切實可行的框架來解決視覺自動駕駛中的這個難題。相比於諸多暴力使用CNN來預測車輛位姿、狀態甚至意圖的paper,我個人更欣賞這樣能夠把high level semantic和geometry進行深度融合的工作,在今年CVPR上也見到這個方向很好的嘗試[2]。希望介紹的這個工作能夠啟發大家更深度地思考問題的本質和結構,而不是將所有問題都扔給CNN做一個黑盒來預測,做出更多有insight的工作。

[1] Li, P., Qin, T., & Shen, S. (2018). Stereo Vision-based Semantic 3D Object and Ego-motion Tracking for Autonomous Driving.ECCV2018

[2] Yin, Z., & Shi, J. (2018, March). GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose. InCVPR2018


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 VALSE 的精彩文章:

TAG:VALSE |