SLAM相機定位
摘要
深度學習在相機定位方面取得了很好的結果,但是當前的單幅圖像定位技術通常會缺乏魯棒性,從而導致較大的離群值。在某種程度上,這已通過序列的(多圖像)或幾何約束方法解決,這些方法可以學習拒絕動態對象和光照條件以獲得更好的性能。在這項工作中,我們顯示出注意力可以用來迫使網絡專注於幾何上更魯棒的對象和特征,即使僅使用單個圖像作為輸入,也可以在通用基准中實現最新的性能。通過公共室內和室外數據集提供了廣泛的實驗證據。通過顯著性圖的可視化,我們展示了網絡如何學習拒絕動態對象,從而產生好的全局相機位姿回歸性能。
源代碼開源:https://github.com/BingCS/AtLoc。
這項工作的主要貢獻如下:
•我們提出了一種新的用於單圖像攝像機定位的自注意引導神經網絡,允許精確和穩健的攝像機姿態估計。
•通過在注意之后可視化特征顯著性圖,我們展示了我們的注意機制如何鼓勵框架學習穩定的特征。
•通過在室內和室外場景中的大量實驗,我們證明我們的模型在姿勢回歸中達到了最佳狀態,甚至優於多幀(順序)方法。
算法流程
圖7,提出的AtLoc框架的概述,該框架包括視覺編碼器(從單個圖像中提取特征),注意力模塊(計算注意力並重新加權特征)和位姿回歸器(將新特征映射到相機位姿)
1. 視覺編碼器
視覺編碼器用於從單幅圖像中提取位姿回歸任務所需的特征。我們采用34層的殘差網絡(ResNet34)作為視覺編碼器的基網絡。ResNet34的權重是使用ResNet34經過ImageNet數據集上的圖像分類預訓練預先初始化的。為了鼓勵學習有利於位姿回歸的特征,用C維全連接層替換ResNet34最后的1000維全連接層並刪除用於分類的Softmax層。C是輸出特征的維度,考慮到模型的效率和性能,選擇維數為C = 2048。給定輸入圖像I, 通過視覺編碼器f encoder提取特征x:
2. 注意力模塊
我們在注意力模塊中采用了non-local風格的自注意力機制,該方法已應用於視頻分析和圖像生成。這旨在捕獲圖像特征的長期依賴性和全局相關性,這將有助於從廣泛分離的空間區域中生成更好的,注意力引導的特征圖。
首先利用視覺編碼器提取的特征x,計算兩個嵌入空間 θ(xi) and φ(xj)之間的點積相似度:
3. 學習相機位姿
位姿回歸器通過多層感知機將注意力引導特征Att(x)分別映射到位置p∈R3和四元數q∈R4:
訓練的損失函數:
4. 時序約束
我們通過合並圖像對之間的時序約束,將我們提出的AtLoc擴展為AtLoc +。直觀上,時序約束可以強制學習全局一致的特征,從而提高總體定位精度。考慮時序約束的損失為:
其中Iij = (pi− pj, qi−qj)
主要結果
圖8, 7 Scenes上的相機定位結果(不包括時序約束)。對於每個場景,我們計算了各種基於單幀圖像的方法估計的位置和旋轉的中值誤差。
圖9,7 Scenes上的相機定位結果(包括時序約束)。對於每個場景,我們比較了 VidLoc, MapNet 和我們的方法估計的位置和旋轉的中值誤差。
圖10,OxfordRobotCar數據集的LOOP序列和FULL序列上的相機定位結果。對於每個場景,我們計算了 Posenet+, MapNet 和我們的方法估計的位置和旋轉的中值誤差。Posenet和AtLoc利用單個圖像,而MapNet和AtLoc +利用圖像序列。
圖11,從Chess序列中選擇的兩個場景的顯著性圖。
圖12,Oxford RobotCar的LOOP1(上),LOOP2(中)和FULL1(下)的軌跡。真實軌跡用黑線表示,紅線表示預測軌跡。軌跡中的星號代表起點。