このリポジトリには、論文のソース コードが含まれています。
微分可能なワイドベースラインポーズ最適化を備えたマルチセッション SLAM
ラハヴ・リプソン、ジア・デン
@inproceedings{lipson2024multi,
title={Multi-Session SLAM with Differentiable Wide-Baseline Pose Optimization},
author={Lipson, Lahav and Deng, Jia},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
year={2024}
}
git clone --recursive [email protected]:princeton-vl/MultiSlam_DiffPose.git
cd MultiSlam_DiffPose
conda env create --file environment.yml --name msdp
conda activate msdp
サードパーティのライブラリhlocもインストールする必要があります。
cd thirdparty/Hierarchical-Localization
python -m pip install -e .
cd ../..
そしてエイゲン
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
unzip eigen-3.4.0.zip -d thirdparty
最後に、実行します
pip install .
モデルの重みをダウンロードする
VO バックボーン、2 ビュー バックボーン、およびホモグラフィーの事前トレーニング後の 2 ビュー バックボーンのモデルの重みを提供します。
https://drive.google.com/drive/folders/11iC4ZAmO_mWMUjkpS83HgVcS80hFL-30?usp=sharing
まだ実行していない場合は、 conda install jupyter
実行します。
2 つのビューのポーズ方法をデモするためのノートブックを提供します。関数run_model(model, images, intrinsics)
ポーズ/一致の中間予測のリストを出力します。最後の (最良の) 予測は次の形式になります。
Scannet / mega Depth で予測を視覚化するには、2 つのビューのデータのダウンロード手順に従って、実行します。
jupyter notebook demo_scannet_megadepth.ipynb
任意の画像ペアの予測を視覚化するには、 demo_pair.ipynb
を編集して実行します。
jupyter notebook demo_pair.ipynb
2 つのビュー
LoFTR の作成者は、Scannet と Mega Depth のテスト セットを惜しみなく提供しています。これらをそれぞれdata/scannet/scannet_test_1500/
およびdata/megadepth/megadepth_test_1500/
にダウンロードして解凍します。
untar megadepth_test_1500.tar -C data/megadepth/
untar scannet_test_1500.tar -C data/scannet/
マルチセッションSLAM
EuRoC : ここで EuRoC データセットからシーケンスをダウンロードします。必ず ASL 形式をダウンロードしてください。 data/EuRoC
の下のシーケンスを解凍します。
ETH3D : 提供されたスクリプト download_eth3d_slam_datasets.py を使用して、ETH3D トレーニング データセットからシーケンスをダウンロードできます。モノラル、RGBのみ選択可能です。 data/ETH3D
の下のシーケンスを解凍します。
マルチセッションSLAM
すべての EuRoC シーケンス グループに対する完全なマルチセッション SLAM アプローチを評価するには、次を実行します。
python eval_euroc.py ' Vicon 1 '
python eval_euroc.py ' Vicon 2 '
python eval_euroc.py ' Machine Hall '
python eval_euroc.py ' Machine Hall0-3 '
ETH3D シーケンス グループでメソッドを評価するには、次を実行します。
python eval_eth3d.py sofa
python eval_eth3d.py table
python eval_eth3d.py plant_scene
python eval_eth3d.py einstein
python eval_eth3d.py planar
どちらのスクリプトも同じテンプレートに従います。パイプラインを新しいデータに拡張するには、イメージと組み込み関数をロードするためのデータローダーを実装するだけで済みます。
2視点ポーズ
Scannet で 2 ビュー ポーズ法を評価するには、次のコマンドを実行します。
python evaluate.py --dataset test_scannet --load_ckpt twoview.pth -o ScanNetDatasetWrapper.pad_to_size=840
Mega Depth の場合は、次を実行します。
python evaluate.py --dataset test_megadepth --load_ckpt twoview.pth
データダウンロード
合成ホモグラフィー: https://github.com/filipradenovic/revisitop でダウンロード スクリプトを実行して、Oxford-Paris ディストラクター データセットをダウンロードします。ファイルをdata/revisitop1m/jpg/
に保存します。
Scannet/Mega Depth : LoFTR トレーニング データのセットアップの指示に従います: https://github.com/zju3dv/LoFTR/blob/master/docs/TRAINING.md。 *_indices.tar
index
サブフォルダーに解凍します。
VO データのダウンロード: VO バックボーンをトレーニングするためのデータをダウンロードするには、DROID-SLAM リポジトリからのダウンロード手順に従います。
完全なデータ レイアウトは次のようになります。
├── data
├── revisitop1m
├── jpg
├── revisitop1m.txt
├── scannet
├── index
├── scannet_test_1500
├── train
├── megadepth
├── index
├── scannet_test_1500
├── train
├── TartanAir
├── abandonedfactory
├── ...
ホモグラフィー 2 ビュー事前トレーニング
1 つまたは複数の A6000 (ここでは 1 つを使用) で、次のコマンドを実行します。
python train.py -g train_homog.gin --batch_size 14 --name homog_pretrain
mv model_weights/homog_pretrain/step_140000.pth homog_pretrain.pth
2 ビューの完全なトレーニング
1 台または複数の A6000 (ここでは 10 台を使用) で、次のコマンドを実行します。
python train.py -g train_pose.gin --batch_size 12 --name twoview --load_ckpt homog_pretrain.pth
mv model_weights/twoview/step_100000.pth twoview.pth
VOトレーニング
1 つまたは複数の A6000 (ここでは 1 つを使用) で、次のコマンドを実行します。
python train_vo.py --steps=240000 --lr=0.00008 --name=vo
mv checkpoints/vo_240000.pth vo.pth
このプロジェクトは、既存のリポジトリのコードに依存しています。
コードをオープンソースにしてくれた作者に感謝します