pySLAM
古典手法とディープラーニングのフロントエンドを備えたPython/C++ハイブリッド視覚SLAMパイプライン
ライセンス
GPL-3.0
概要
pySLAMは、Luigi Freda氏によるPython/C++ハイブリッドの視覚SLAMフレームワークで、特徴トラッキング、キーフレームマッピング、ループクロージング、リローカリゼーション、ボリューメトリックな密な再構成を含むフルSLAMを、単眼・ステレオ・RGB-D入力で実行します。その最大の特徴はモジュール性です。ORBやSIFTからSuperPoint、XFeat、LightGlueまで数十の交換可能な局所特徴、複数のループクロージング・場所認識バックエンド、オプションの深度予測・セマンティックマッピングモジュールにより、現代SLAMの研究と教育のための実働ラボラトリーとなっています。
pySLAMは、交換可能なコンポーネントを重視して視覚SLAMスタック全体を実装しています。フロントエンドは20を超える局所特徴の検出器/記述子をサポートし、手作りのもの(ORB、SIFT、AKAZE、BRISK)と学習ベースのもの(SuperPoint、DISK、ALIKED、XFeat)の両方を含み、マッチングは古典的なレシオテストまたはLightGlueやLoFTRのような学習型マッチャーで行えます。バックエンドはg2o上のスパースバンドル調整、複数の集約手法(DBoW2/3、VLAD、NetVLAD型のグローバル記述子)によるループクロージング、ポーズグラフ最適化を提供します。スパースSLAMを超えて、単眼深度予測(例: DepthAnything)、TSDF/ガウシアンスプラッティングのオプションを持つボリューメトリックな密な再構成、フレームごとのセグメンテーションを地図に融合するセマンティックマッピングも提供します。性能が重要な部分はC++で実装されPythonバインディングを持つため、コードベースは研究や授業のためにハックしやすく、それでいてライブカメラでの使用に十分な速さを保ちます。
重要な理由
pySLAMは視覚SLAMのリファレンスとなる実験場になりました。古典的なORB-SLAM型のパイプラインと現代の深層学習フロントエンドが一つのインターフェースの背後に共存する数少ないシステムの一つであり、研究者や学生は手作りの部品と学習された部品を、切り離された環境ではなく完全に動作するシステムの中でベンチマークできます。
解決する課題
新しい特徴・マッチャー・ループクロージング手法を完全なSLAMシステムの中で評価するには、通常はモノリシックなC++コードベースへの侵襲的な手術が必要です。pySLAMは各コンポーネントをプラグインにしているため、実験や教育ラボはアイデアから動作するSLAMまで数時間で到達できます。
主なポイント
- フル視覚SLAM: トラッキング、ローカルマッピング、ループクロージング、リローカリゼーション、密な再構成
- 20以上の交換可能な特徴検出器・マッチャーによる単眼・ステレオ・RGB-D対応
- 学習型コンポーネントが第一級: SuperPoint、XFeat、LightGlue、LoFTR、DepthAnythingなど
- TSDFおよびガウシアンスプラッティングのバックエンドによるボリューメトリックな密なマッピング
- セマンティックマッピングモジュールがセグメンテーションを3D地図に融合
対象
- コンポーネントをベンチマークするSLAM研究者
- 視覚SLAMを実践的に学ぶ大学院生
- カメラベースの自己位置推定をプロトタイピングする知覚エンジニア
- SLAMの授業を運営する教育者
制限事項
- 研究レベルのコード — ロボットへの本番デプロイ向けに堅牢化されていない
- Pythonレイヤーのため、非力なハードウェアでは最適化されたC++システムに比べてリアルタイム性能に上限がある
- GPL-3.0ライセンスはクローズドソース製品での使用を制限する
- すべての深層学習エクストラを含むフルインストールは重く、CUDAに依存する