论文笔记 DXSLAM: A Robust and Efficient Visual SLAM System with Deep Features
論文鏈接:https://arxiv.org/pdf/2008.05416.pdf
代碼鏈接:https://github.com/ivipsourcecode/dxslam
主要內容
本文的主要工作為使用CNN(Convolutional Neural Network,卷積神經網絡)提取特征,然后將所提取的特征整合到現代的SLAM(ORB SLAM2)框架中。其中,作者選擇了性能優異的HF-Net,提取每幀圖像的局部特征以及整幅圖像的全局特征,使得所整合的SLAM系統,相比使用手工特征點的SLAM系統,在環境變化、視角變化情況下擁有更好的魯棒性。ORB SLAM2中使用BoW(Bag of Words,詞袋模型)來加速特征點的匹配,本文中作者使用了FBoW(Fast Bag of Words)來進一步加速詞袋的訓練以及通過詞袋模型進行的特征點匹配過程。并且本系統可以在依賴GPU,在CPU上運行(不愧是和Intel合作的論文)。
論文的主要貢獻
1、通過CNN提取的特征,相比于手工設計的特征,使得整合后的SLAM系統在環境和視角變化的情況下有更好的魯棒性。
2、通過全局特征的輔助,使得SLAM系統中的重定位方法更加魯邦;同時,FBoW相比于傳統的BoW,有更高的成功率和更小的計算量。
3、基于全局和局部特征,提出了一種可靠的閉環檢測方法,同時一種新型的詞袋被訓練,用來整合局部特征。
4、第一款基于深度學習特征點法并且可以在無GPU的情況下運行的SLAM系統。
整個框架如下圖所示
總覽
整個框架類似于ORB SLAM2,不同點主要在于特征點提取部分,作者使用了HF-Net來提供局部以及全局特征。局部特征主要用于定位和制圖流程。基于全局特征,一個高效的重定位模塊被建立,用于系統初始化或者跟蹤失敗時快速重定位,同時,一個魯邦的回環方法被提出,用來減少累計定位誤差并獲得全局一致地圖。這個方法使用了HF-Net提取的全局特征,以及事前訓練好的詞袋模型進行局部特征匹配。進一步,為了降低系統初始化時間,提升系統效率,采用了FBoW代替傳統的BoW。Open VINO工具包的使用,使得系統可以通過CPU完成實時的特征提取。
特征提取
使用HF-Net,從每個圖像幀提取特征。圖像首先經過一個共享的編碼器,然后通過三個并行的解碼器,分別預測關鍵點的檢測得分、稠密的局部描述子和全局描述子。前兩個解碼器擁有和SuperPoint一樣的結構,全局描述子則由NetVLAD層通過聚類得到。
詞袋訓練
傳統的BoW采用訓練K-D樹的方式來加速搜索過程,但是如果K-D樹的層和節點數在詞袋訓練的過程中沒有得到合理安排,單詞就難以很好地區分出特征。為了解決這個問題,在充分考慮了所訓練的圖像序列之間的關系后,采用了一種增量式的方法訓練詞袋。在訓練過程中,首先運用HF-Net提取連續圖像序列中的關鍵點和局部描述子。對每一對臨近的圖像,使用暴力匹配的方式進行圖像匹配。匹配成功的局部描述子應該屬于相同的并且已經存在的葉子節點中,即視覺單詞;未匹配成功的特征會被分配到新的葉子節點。為了保證所提取特征的可靠性,作者通過關鍵點的檢測得分進行排序,選擇得分最高的300個成功匹配的描述子,將他們當做單詞進行訓練。在所有的訓練圖片被處理后,可以得到一系列的視覺單詞,并將這些單詞打散到父節點中。文中運用FBoW代替傳統的BoW訓練詞袋,極大程度上提升了系統效率。以初始化過程為例,DXSLAM只需要40毫秒,ORB SLAM2則需要6秒。
使用全局特征進行重定位
ORB SLAM2使用一個兩階段的流程實現重定位,首先使用BoW進行特征匹配,來檢索近似于當前的候選幀,然后通過匹配當前幀和每個候選幀的局部特征點,來估計當前幀的位姿,直到全部候選幀遍歷完或者當前幀的位姿被成功估計。失敗往往有兩種可能性:
1、BoW未能檢索到任何候選幀。
2、在第二階段,沒有足夠的匹配點來實現位姿估計。
解決第一個問題的方法是:通過學習得到的全局描述子,實現一種粗的圖像檢索,,這種方法被廣泛證明,在針對環境和視角變化時,比BoW方法擁有更好的魯棒性。被檢索的候選幀隨后被用來做群體匹配。通過匹配當前幀的和群體中的全部關鍵點,第二個問題可以得到很好地緩解。當有足夠的匹配的特征點時,會對每個群體執行RANSAC和PnP過程。
使用多層次特征來實現閉環檢測
相比于重定位重視召回率,閉環檢測更加重視準確率,因為一個錯誤的閉環檢測會損壞整個地圖。在DXSLAM中,作者使用局部和全局描述子來檢測回環。對每一個新的關鍵幀,通過和訓練好的的詞袋節點進行匹配,將局部描述子量化為單詞,然后關鍵幀可以使用一個向量進行表示。通過計算不同向量(關鍵幀)之間的距離得到相似度得分,并且挑選得分最高的K個關鍵幀。向量 v 1 v_1 v1?和向量 v 2 v_2 v2?之間的相似度的定義為:
s ( v 1 , v 2 ) = ∑ i = 1 N ∣ v 1 , i ∣ + ∣ v 2 , i ∣ ? ∣ v 1 , i ? v 2 , i ∣ s(v_1,v_2)=\sum_{i=1}^N|v_{1,i}|+|v_{2,i}|-|v_{1,i}-v_{2,i}| s(v1?,v2?)=i=1∑N?∣v1,i?∣+∣v2,i?∣?∣v1,i??v2,i?∣
因為詞袋只整合了局部描述子的的分布而忽視了他們的空間關系,所以會有誤匹配的發生。在這里,作者使用全局描述子作為補充標準處理這個問題。在閉環檢測的第二階段,通過當前幀和每一個上一步挑選出來的K個關鍵幀做內積運算,作為它們之間的距離。距離當中的最小值,如果小于預先定義的閾值,就被檢測為回環。
評價
總結
以上是生活随笔為你收集整理的论文笔记 DXSLAM: A Robust and Efficient Visual SLAM System with Deep Features的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中要让音乐暂停还用什么指令,【An
- 下一篇: Cadence Allegro如何导出与