pySLAM
Python/C++ 混合式視覺 SLAM 流程,兼具傳統與深度學習前端
授權條款
GPL-3.0
概述
pySLAM 是 Luigi Freda 打造的 Python/C++ 混合式視覺 SLAM 框架,可在單目、立體與 RGB-D 輸入上執行完整的 SLAM:特徵追蹤、關鍵影格建圖、迴路閉合、重新定位與體積式稠密重建。它最大的特色是模組化:數十種可互換的局部特徵(從 ORB、SIFT 到 SuperPoint、XFeat 與 LightGlue)、多種迴路閉合與地點辨識後端,以及可選用的深度預測與語意建圖模組,使它成為現代 SLAM 研究與教學的實用實驗室。
pySLAM 實作完整的視覺 SLAM 堆疊,並強調可替換的元件。前端支援二十多種局部特徵偵測器/描述子,包括人工設計的(ORB、SIFT、AKAZE、BRISK)與學習而得的(SuperPoint、DISK、ALIKED、XFeat),匹配可使用傳統的比率測試,或 LightGlue 與 LoFTR 等學習式匹配器。後端提供基於 g2o 的稀疏光束法平差、採用多種聚合方法(DBoW2/3、VLAD、NetVLAD 風格的全域描述子)的迴路閉合,以及位姿圖最佳化。除了稀疏 SLAM 之外,它還提供單目深度預測(例如 DepthAnything)、可選 TSDF/Gaussian splatting 的體積式稠密重建,以及將逐影格分割融合進地圖的語意建圖。對效能要求高的部分以 C++ 執行並提供 Python 綁定,讓程式碼庫便於研究與課程修改,同時也快到足以處理即時攝影機畫面。
為何重要
pySLAM 已成為視覺 SLAM 的參考試驗場:它是極少數讓傳統 ORB-SLAM 式流程與現代深度學習前端在同一介面下共存的系統之一,讓研究人員與學生能在完整運作的系統中比較人工設計與學習而得的元件,而不是孤立地比較。
解決的問題
要在完整的 SLAM 系統中評估新的特徵、匹配器或迴路閉合方法,通常意味著要對龐大的單體 C++ 程式碼庫動大手術。pySLAM 將每個元件都做成外掛,讓實驗與教學實驗課在幾小時內就能從構想走到可執行的 SLAM。
重點
- 完整的視覺 SLAM:追蹤、區域建圖、迴路閉合、重新定位與稠密重建
- 支援單目、立體與 RGB-D,具有 20 多種可替換的特徵偵測器與匹配器
- 學習式元件同樣是一等公民:SuperPoint、XFeat、LightGlue、LoFTR、DepthAnything 等
- 具 TSDF 與 Gaussian splatting 後端的體積式稠密建圖
- 語意建圖模組將分割結果融合進 3D 地圖
適用對象
- 評測元件的 SLAM 研究人員
- 動手學習視覺 SLAM 的研究生
- 為以攝影機為基礎的定位製作原型的感知工程師
- 開設 SLAM 課程的教育工作者
限制
- 研究等級的程式碼,未針對機器人上的生產部署強化
- 在效能較弱的硬體上,Python 層使即時效能不及最佳化的 C++ 系統
- GPL-3.0 授權限制了在閉源產品中的使用
- 包含所有深度學習附加元件的完整安裝十分龐大,且依賴 CUDA