该存储库包含我们论文的源代码:
具有可微分宽基线姿势优化的多会话 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 第三方/分层本地化 python -m pip install -e .cd ../..
和本征
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip 解压缩 eigen-3.4.0.zip -d 第三方
最后,运行
点安装。
下载模型权重
我们提供了 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笔记本demo_pair.ipynb
双视图
LoFTR的作者慷慨地提供了Scannet和Megadepth的测试集。下载并将它们分别解压到data/scannet/scannet_test_1500/
和data/megadepth/megadepth_test_1500/
中。
解压megadepth_test_1500.tar -C data/megadepth/ 解压 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 '机器大厅'python eval_euroc.py '机器大厅0-3'
要在 ETH3D 序列组上评估我们的方法,请运行
python eval_eth3d.py 沙发 python eval_eth3d.py 表 python eval_eth3d.py plant_scene python eval_eth3d.py 爱因斯坦 python eval_eth3d.py 平面
两个脚本都遵循相同的模板。将管道扩展到新数据只需要实现一个数据加载器来加载图像和内在函数。
双视图姿势
要在 Scannet 上评估我们的双视图姿势方法,请运行
python评估.py --数据集test_scannet --load_ckpt Twoview.pth -o ScanNetDatasetWrapper.pad_to_size = 840
对于 Megadeep,运行
python评估.py--数据集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 存储库中的下载说明进行操作。
完整的数据布局应如下所示:
├── 数据 ├── 重温top1m ├──.jpg ├── revisitop1m.txt ├── 扫描网 ├── 索引 ├── scannet_test_1500 ├── 火车 ├── 超深度 ├── 索引 ├── scannet_test_1500 ├── 火车 ├── 格子呢航空 ├── 废弃工厂 ├── ...
单应性二视图预训练
在一台或多台 A6000(我们使用了 1 台)上,运行
python train.py -g train_homog.gin --batch_size 14 --namehomog_pretrain mv model_weights/homog_pretrain/step_140000.pthhomog_pretrain.pth
二视图全训练
在一台或多台 A6000(我们使用了 10 台)上,运行
python train.py -g train_pose.gin --batch_size 12 --nametwoview --load_ckpthomog_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 检查点/vo_240000.pth vo.pth
该项目依赖于现有存储库中的代码:
分层本地化
洛夫特
DPVO
Pytorch3D
感谢作者开源他们的代码