該存儲庫包含我們論文的源代碼:
具有可微分寬基線姿勢優化的多會話 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 主幹、雙視圖主幹和單應性預訓練後的雙視圖主幹的模型權重:
https://drive.google.com/drive/folders/11iC4ZAmO_mWMUjkpS83HgVcS80hFL-30?usp=sharing
如果之前沒有執行過,請執行conda install jupyter
。
我們提供筆記本來示範我們的雙視圖姿勢方法。函數run_model(model, images, intrinsics)
輸出姿勢/匹配的中間預測列表。最後(最佳)預測的形式為
若要在 Scannet / megadepth 上視覺化預測,請按照兩個視圖資料下載說明並執行
jupyter notebook demo_scannet_megadepth.ipynb
若要視覺化任何影像對的預測,請編輯並執行demo_pair.ipynb
jupyter notebook demo_pair.ipynb
雙視圖
LoFTR的作者慷慨地提供了Scannet和Megadepth的測試集。下載並將它們分別解壓縮到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
兩個腳本都遵循相同的模板。將管道擴展到新資料只需要實作一個資料載入器來載入圖像和內在函數。
雙視圖姿勢
要在 Scannet 上評估我們的雙視圖姿勢方法,請執行
python evaluate.py --dataset test_scannet --load_ckpt twoview.pth -o ScanNetDatasetWrapper.pad_to_size=840
對於 Megadeep,運行
python evaluate.py --dataset test_megadepth --load_ckpt twoview.pth
資料下載
合成同應詞:執行 https://github.com/filipradenovic/revisitop 中的下載腳本來下載 Oxford-Paris 幹擾資料集。將檔案儲存在data/revisitop1m/jpg/
下
Scannet/Megadepth :依照 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
├── ...
單應性二視圖預訓練
在一台或多台 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
二視圖全訓練
在一台或多台 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訓練
在一台或多台 A6000(我們使用了 1 台)上,運行
python train_vo.py --steps=240000 --lr=0.00008 --name=vo
mv checkpoints/vo_240000.pth vo.pth
該專案依賴現有儲存庫中的程式碼:
感謝作者開源他們的程式碼