Towards Real-time Semantic RGB-D SLAM in Dynamic Environments(动态语义SLAM)
動態環境下的實時語義SLAM
- 簡介
- 摘要
- 系統流程
- 實驗結果
- 總結
簡介
??在ICRA 2021上看到這樣一篇論文:Towards Real-time Semantic RGB-D SLAM in Dynamic Environments,發現它也是使用的語義網絡+基于深度圖的多視圖幾何方法來去除圖片中的動態對象的。這一方法和之前看到的 DynaSLAM 類似,所以就挺好奇地去看了看。
摘要
??論文作者認為當前大多數 SLAM 都僅適用于靜態環境中。雖然近期有些學者通過深度學習來幫助 SLAM 在動態環境下工作,但這種做法需要消耗很高的計算資源,且無法處理未經過網絡訓練的物體(即語義網絡無法識別的物體)。針對這些問題,作者做了一些嘗試:首先為了減少計算資源的消耗,作者僅在關鍵幀 KF 上進行語義分割;然后,為了處理網絡無法識別的物體,作者先對深度圖進行聚類,對聚類結果采用多視圖幾何的方法進行動態點的判斷。作者將上述優化方法用于 ORB-SLAM2 系統(ORB-SLAM2太狠了),最后也用多個數據集和實際環境驗證了優化后系統的性能(能用于實際場景確實不錯)。
系統流程
系統的整體流程圖如下
????以流程圖為參考,整個系統有以下幾個工作步驟:
1、數據獲取:
??通過 RGB-D 相機采集 RGB 圖片和深度圖片;
2、特征提取:
??采用 ORB-SLAM2 的方法提取RGB圖片中的特征點。
3、語義分割:
??如果當前幀是關鍵幀,則對圖片進行語義分割,根據分割后的結果更新 LocalMapLocal MapLocalMap,以保證 LocalMapLocal MapLocalMap 只保留靜態點。如果當前幀不是關鍵幀,則不用進行語義分割,通過現有的 LocalMapLocal MapLocalMap 實現跟蹤定位。因為僅在關鍵幀上進行語義分割,所以較之 DynaSLAM(每幀都語義分割),該系統的計算速度會快很多。這一步能夠獲得系統的初始位姿估計;
3、深度圖聚類+多視圖幾何:
??對每幀深度圖進行 K均值聚類,類別總數為 NNN(以深度值作為聚類的依據)。每一個聚類結果都被當作是某一物體的表面,且歸屬于同一類的所有點都滿足同一運動約束(同類中各點的運動方式一致)。然后將 LocalMapLocal MapLocalMap 中的點投影到當前幀上尋找匹配點,計算出各聚類結果的平均重投影誤差(某一類中所有點的重投影誤差求和取平均),如下式:
(1) 式在求重投影誤差時還加上了一個懲罰函數 ρρρ。uuu 表示是圖像上的點,PPP 是uuu 在 LocalMapLocal MapLocalMap 中匹配上的三維點。
??動態點的判斷依據為:根據各類的平均重投影誤差,把其中誤差相對較大的幾類定義為動態類,將動態類中所有點都剔除,不用于位姿估計。這種方法在泛化性方面比深度學習網絡要好。但是在判定動態類時,“誤差相對較大” 這句話比較難以把握。
(這種先將部分點歸于一類后再進行動態判斷的方法比直接對每一個點進行判斷的方法要更加穩定有效,因為后者受到圖片的測量誤差的影響更大,即單個點發生誤判的概率較大。這也是該系統和DynaSLAM系統的一大不同之處)
4、位姿估計:
??根據第3步的結果,對第2步的估計位姿進行優化,獲得更加精確的位姿。后續的步驟和 ORB-SLAM2 相似。
??上面就是整個系統的大致工作流程,作者也給出了分別采用第2步和第3步進行動態判斷的結果:
圖片中可以看出語義分割和多視圖幾何的方法是相輔相成的,兩者都有好有壞,但又能夠互相補充。
實驗結果
????下面是在數據集上的實驗結果、時間消耗,以及在實際環境下的測試結果:
????可以看出,雖然比 DynaSLAM 精度稍差,但是在時間消耗上比 DynaSLAM 有很大優勢。此外,這個系統比僅采用深度學習的 DS-SLAM 性能更佳。
總結
????感覺作者應該受到了 DyanSLAM 系統的很多啟發,因為 DynaSLAM 也是采用的語義分割+基于深度圖的多視圖幾何方法。得益于作者所提出的兩個優化方案,在保證計算性能的同時,還保證了系統的整體精度。從實驗結果中可以看出,該系統的精度和 DynaSLAM 的精度差距不是很大,但是速度比 DynaSLAM 快了將近一倍。如果把聚類和多視圖幾何判斷方法再進行優化,應該可以獲得一個更好的效果。
總結
以上是生活随笔為你收集整理的Towards Real-time Semantic RGB-D SLAM in Dynamic Environments(动态语义SLAM)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱在离别时下一句是什么呢?
- 下一篇: pytorch学习——torch.cat