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