視覺定位與導航技術是智能體具備的基礎能力之一,隨著無人駕駛的發展,基於低成本攝像頭及人工智能算法的視覺定位與導航技術成為了無人駕駛的主流技術路線之一。
在傳統工作方式中,視覺定位與導航技術通常采用SLAM《Simultaneous Localization And Mapping,同步定位與建圖》的方式構建一個幾何地圖,然後在地圖中進行路徑規劃和導航。
在每一個時刻,無人車可以通過使用當前圖像和地圖比對的方式,或者采用視覺裡程計的方式,估計當前相機的位姿進行無人車定位。
但在開放、復雜的無人駕駛場景中,視覺定位與導航技術在傳統工作方式下還存在一些明顯的挑戰:
Part 1
視覺定位的挑戰
一、攝像頭視角有限
有限的攝像頭視角,限制了無人車在停車場等擁堵場景中做到實時魯棒的位姿估計。
一方面,當相機發生旋轉,偏移建圖路線的時候,有限的可視角度會導致特征點丟失。
另一方面,當場景中動態物體較多的時候,可能導致相機的視野中被動態的車輛和行人占滿,導致位姿估計錯誤。
基於此,我們采用了魚眼相機、多相機等作為傳感器,顯著擴大了視覺定位中的攝像頭視角。
魚眼相機:應用魚眼相機可以為視覺定位創造一個超大范圍的場景視角,但同時魚眼相機也存在較大的畸變這一挑戰,大畸變使得普通的相機模型無法適配,並且普通的描述子也不能適用。
另外目前常見的開源SLAM系統,如ORB-SLAM等並不能很好地支持魚眼SLAM模型。
針對這個問題,我們提出了一種基於立方體展開相機模型的SLAM系統(CubemapSLAM,圖1》,該模型既可以有效去除魚眼相機圖像中存在的較大畸變,又能夠保留原始圖像所有的場景視角。
目前,在公開數據集和馭勢科技自主采集的數據集中,我們的算法均優於已有的魚眼SLAM方法。
圖1
我們的方法已於去年發表在ACCV2018,同時對我們的CubemapSLAM算法進行了開源,歡迎大家使用並反饋。
鏈接:
https://github.com/nkwangyh/CubemapSLAM
此外更重要的是,我們研究的算法並沒有停留在論文階段,而是更進一步,落地於公司商業化運營項目,在真實的自主代客泊車《AVP》場景中進行了運用《圖2》。
圖2
多相機系統:我們研發了緊耦合多相機的SLAM定位系統《圖3》。
在多相機系統中,由於每個相機的光心位置不同,因此,我們采用了一種叫做General Camera的模型來表達多相機系統。
同時,多相機系統的精度受相機之間的外參影響比較大,因此標定的質量非常關鍵。
除了常規靜態標定之外,我們還將多相機的外參納入到SLAM系統的優化框架中。
圖3
二、Long-Term Visual Localization
自動駕駛視覺定位的另一個重大挑戰是光照和環境的變化。
同樣的一個場景,如果建圖的時間是白天,定位的時間是晚上,我們也需要無人車能夠穩定工作。
夏天建的圖,到了冬天,定位系統也要能識別出來。
因此,我們需要實現自動駕駛在不同光照與環境變化中的『Long-Term Visual Localization』任務,而這一任務,我們一般又劃分為位置識別(Place Recognition)和位姿估計(Metric Localization)兩項子任務。
位置識別任務旨在找到相機在地圖中的大致位置,即找到地圖數據庫中跟當前圖片最相近的一張圖。
最常見的傳統做法一般是采用Bag-of-Words(BoW)技術,把圖片中的SIFT,ORB等特征點轉化成向量表示。
在這個向量空間上最接近的圖片,即認為是當前圖片所在的位置。
但通過位置識別任務得到的隻是當前相機的大致位置,在無人駕駛中,為了得到相機和車輛的精確位置,我們還需要接著做位姿估計。
一般在這一步,算法會把當前圖像上的特征點和地圖中的特征點進行特征匹配(Feature Matching),根據成功匹配的特征點計算中相機的最終精確位置。
位置識別和位姿估計這兩項任務還存在很多挑戰,面對其中最主要的挑戰:光照和環境的變化,我們采取了深度學習《Deep Learning》的方法。
目前,深度學習已經在計算機視覺多個領域得到廣泛驗證,具備超越傳統方法的應用能力。
位置識別(Place Recognition):對於位置識別任務而言,如果我們把每一個位置當做一個類別《Class》,那麼我們有很容易獲取的Label : GPS作為監督信號。
GPS的坐標值本身是連續的,兩個坐標之間的歐式距離可以反應出兩張圖之間的遠近。
因此可以把這個問題當做度量學習《Metric Learning)來訓練。
通過這樣訓練出來的Feature,可以做到大幅超過BoW的位置識別效果。
我們在這種網絡基礎之上,提出了Landmark Localization Network (LLN,圖4),幫助挑選出圖像中最有顯著性的部分。
從結果中我們看到,僅僅使用GPS這個弱監督信號,我們卻學習出了跟Place Recognition這個任務最相關的特征,如圖6所示,我們對LLN網絡的Feature Map進行了可視化,在第二行中我們看到垃圾桶部分的響應比後面的紅墻要高很多,而在第三行中旅館的招牌也得到較高的響應。
我們的結果已發表在ICRA19。
圖4
圖5
圖6
我們也嘗試了使用GAN的方法來進行不同光照之間的變換。
跟以往做法不同的是,我們可以做到在連續時間域上對圖像進行連續變換《圖7》。
從圖8可以看到,當把當前圖像變換到和地圖中的時刻後,特征匹配的數量會大幅提高。
圖7
圖8
位姿估計(Metric Localization):在位姿估計這一任務中,傳統的方法會使用ORB,SIFT等特征進行匹配和解算位姿。
目前也有很多使用CNN進行特征點提取(Detection)和描述(Description)的方法,比如Superpoint是其中效果比較好的一種。
我們在Superpoint的基礎上進行了改進,加入了Saliency Ranking機制《圖9》,在特征點提取數量較少的情況下,可以達到比Superpoint更高的重復率《Repeatability,圖10)。
我們用這個方法參與了今年CVPR19的Local Feature Challenge,並最終進入了前三名。
圖9
圖10
在這個基礎上,我們也訓練了一些檢測器去識別高層語義特征,比如道路上的標牌,車道線,路燈桿等等。
這些特征在公共道路上面普遍存在,相比較Low-Level特征點,這些語義特征更加稀疏和可靠。