2. 摘要
提出了一種基于RGB-D圖像序列的協同隱式神經同步定位與建圖(SLAM)系統,該系統由完整的前端和后端模塊組成,包括里程計、回環檢測、子圖融合和全局優化。為了在一個統一的框架中啟用所有這些模塊,我們提出了一種新的基于神經點的3D場景表示,其中每個點都保持用于場景編碼的可學習神經特征,并且與某個關鍵幀相關聯。此外,還提出了一種從分布式到集中式的協作隱式SLAM學習策略,以提高一致性和協調性。與傳統的光束法平差一樣,本文還提出了一種新的全局優化框架來提高系統精度。在不同數據集上的實驗證明了該方法在相機跟蹤和建圖方面的優越性。
3. 算法解析
重新理一下思路,NeRF SLAM為啥火?
因為NeRF和SLAM可以相互輔助,SLAM為NeRF訓練提供位姿,NeRF可以重建高清晰度的地圖、做空洞補全、或者用光度損失反過來優化位姿。
有什么問題?
個人感覺現在NeRF SLAM有兩個問題,一個是計算量大難以落地,一個是因為做不了回環和全局優化導致定位精度低。
CP-SLAM的核心思想是什么?
傳統的NeRF地圖不好做回環和優化,但是改成基于點的NeRF地圖,就可以像傳統SLAM那樣去優化了!
具體是如何實現的?
CP-SLAM本身是一個多機協同SLAM,輸入是RGB-D數據流,每個SLAM系統分別執行跟蹤和建圖,最后執行子地圖融合。每個SLAM系統都維護一個神經點輻射場,借助3個MLP(特征融合、顏色場、占用場)來渲染深度圖和顏色圖。通過計算光度和幾何損失來優化輻射場和相機位姿。同時每個單獨的SLAM不斷地用NetVLAD提取關鍵幀描述子,并發送到描述子池(有點像ORB-SLAM的關鍵幀數據庫),中央服務器檢測到回環以后融合子地圖,并執行全局BA。最后再做一個以關鍵幀為中心的地圖優化。
下面來逐個聊聊每個子模塊的具體原理。
這個神經點是啥?
神經點輻射場來源于CVPR 2022 oral的文章Point-NeRF,用神經點表示三維場景。其實就是讓空間中的點同時存儲位置信息(xyz)和局部場景信息(單層CNN提取的神經特征向量,CP-SLAM里是32維),原始Point-NeRF的神經點里還存儲了[0, 1]范圍的置信度,表示這個點有多大概率離真實物體很近。
當然,使用神經點輻射場也有優點有缺點:
優點:執行回環檢測和BA優化時,3D點比原始NeRF場景更好調整,所以就很容易引入回環和局部地圖優化。
缺點:由于神經點分布在觀察對象的表面周圍,因此未見區域的空洞填補能力弱于特征網格方法。
位姿跟蹤和NeRF建圖如何進行?
輻射場采樣上也用到了一個trick,就是盡量讓采樣點貼近物體表面。對于深度有效的點,分別從[0.95D, 1.05D]和[0.95Dmin, 1.05Dmax]區間內均勻采樣,D表示點的深度值,Dmin和Dmax表示整個深度圖的最小最大深度。
對每個采樣點xi,首先檢索它半徑r范圍內的K個鄰域點,用一個MLP(框圖中的C)分別處理這K個點,使每個點的特征向量都融合了跟采樣點的距離信息(對應f~k,x~):
再用一個MLP(框圖中的U)來學習采樣點xi的RGB信息,這里就需要用到上一步K個點的特征向量了:
最后還需要用一個MLP(框圖中的G)來學習采樣點xi的占用概率,這里還是用到上上步計算的K個特征向量,當然如果沒有鄰域點那占用肯定就是0了:
這兩步預測的占用和顏色信息實際上表示了射線中止的概率α,再加上深度值z就可以渲染得到當前視角的深度圖和RGB圖:
然后就可以使用深度圖和RGB圖計算幾何損失和光度損失來優化位姿、點特征向量、還有3個MLP:
這里還有幾個需要注意的點:
1、整個序列的第一幀需要采樣很多的點來初始化,優化步驟達到3000~5000次;
2、位姿表示成四元數和平移格式,當前幀位姿的初始值設置為上一幀的位姿,優化時要固定神經特征向量和3個MLP權重;
3、優化位姿沒有用到光度損失,作者認為RGB圖是一個高度非凸問題。
基于學習的回環檢測如何實現?
這部分主要是用于融合多個SLAM系統分別建立的子地圖,并減少位姿的累計漂移。首先對每個關鍵幀用預訓練的NetVLAD提取描述子,并把描述子扔到池子里(類似ORB-SLAM的關鍵幀數據庫),然后用余弦相似性來檢測回環。
局部優化很吃初值,如果兩幀運動太快的話,就很容易陷入局部最優,所以CP-SLAM采用了一個由粗到精的回環檢測策略。如果相似性超過λfine的話直接執行回環優化和子地圖融合,如果低于λfine但高于λcoarse的話就只做一個位姿圖優化。當然子地圖融合之后肯定有大量的冗余點,還需要做一步非極大值抑制(網格過濾)。
SLAM協同如何實現?
CP-SLAM本身就是一個協同SLAM,協同部分是設計了一個兩階段(從分布式到集中式)的MLP訓練策略,來提高協作一致性。分布式階段就是每個SLAM單獨做跟蹤和優化,執行回環和子地圖融合以后就進入集中式階段,注意集中式階段需要一個中心服務器來做子圖和優化的全局管理。
這個階段用的是聯合學習,也就是以共享的方式訓練單個網絡。在子地圖融合的同時,對每組MLP進行平均處理,并對所有關鍵幀上的平均MLP進行微調,隨后將共享MLP轉移到每個SLAM做訓練,并且平均每個SLAM權重作為共享MLP的最終優化結果。
最后簡單說一下位姿圖優化
這個模塊分為兩部分,一部分是維護子地圖的共視圖,一部分是是基于幀的地圖優化。在執行子地圖融合后做全局優化,位姿圖中每幀的位姿是頂點,序列相對位姿和回環相對位姿是邊,優化還是用的L-M算法。
為了方便優化3D點云位置,作者還做了一個trick:每個3D點都與一個關鍵幀相關聯。
4. 實驗結果
實驗這一塊分別對比了單機SLAM和協作SLAM模式,單機SLAM對比在Replica數據集進行,對比傳統SLAM(ORB-SLAM3)和NeRF SLAM(NICE-SLAM和Vox-Fusion),協同SLAM對比的傳統SLAM方案(CCM-SLAM、Swarm-SLAM、ORB-SLAM3)。CP-SLAM的運行環境是一塊3090,如果需要做協同的話,就再需要一塊3090做為中心服務器。
雙機協作精度的定量對比,注意ORB-SLAM3本身不是協作SLAM,所以作者的實驗方法是融合數據集,然后用ORB-SLAM3的多地圖系統來執行地圖融合。
4個場景上CP-SLAM和CCM-SLAM的協作實驗軌跡對比,可以發現CP-SLAM的地圖融合效果還是比較好的。
單機SLAM的精度對比,這個就說明CP-SLAM的精度超越ORB-SLAM3了。當然如果不加入回環的話,CP-SLAM精度還是不夠,這一點上說明限制NeRF SLAM精度提升的關鍵就在局部地圖優化和回環優化。
單機SLAM軌跡的定性對比,對比的NICE-SLAM和Vox-Fusion這兩個NeRF SLAM方案,沒有對比ORB-SLAM3。
TUM數據集上精度和魯棒性的定量對比,但對比的還是只有Co-SLAM和ESLAM這兩個NeRF SLAM方案,沒對比ORB-SLAM3。這里也推薦工坊推出的新課程《徹底剖析激光-視覺-IMU-GPS融合SLAM算法:理論推導、代碼講解和實戰》。
NeRF建圖的定量對比,證明三維重建的精度超越了之前的NeRF SLAM方案。
NeRF建圖的定性對比。
神經點密度的消融實驗,證明神經點不是越多越好,也不是越少越好。
Office-0-loop場景上運行時間和內存消耗的定量對比,包括單幀跟蹤時間、建圖時間、MLP大小、整個神經場的內存大小。NICE-SLAM神經場的尺寸超級大,這是因為它為了解決遺忘問題設計的多層特征網格。
地圖優化和采樣點融合的消融實驗,還是驗證它們的策略是對的。
5. 總結
本文介紹了浙大最新的工作CP-SLAM,號稱是第一個基于NeRF的協作SLAM,跟傳統SLAM一樣具備前后端,定位精度和建圖質量都有了很大提升。可惜沒有開源。
審核編輯:劉清
-
RGB
+關注
關注
4文章
798瀏覽量
58461 -
CCM
+關注
關注
0文章
144瀏覽量
23970 -
SLAM
+關注
關注
23文章
423瀏覽量
31821 -
MLP
+關注
關注
0文章
57瀏覽量
4241
原文標題:NeurlPS'23 | 第一個協作神經隱式SLAM!(浙大NICE-SLAM團隊最新力作)
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論