该存储库包含我们论文的源代码:
具有可微分宽基线姿势优化的多会话 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
该项目依赖于现有存储库中的代码:
感谢作者开源他们的代码