이 저장소에는 우리 논문의 소스 코드가 포함되어 있습니다.
차별화 가능한 넓은 기준선 포즈 최적화를 갖춘 다중 세션 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
실행하십시오.
우리는 투뷰 포즈 방법을 시연하기 위한 노트북을 제공합니다. run_model(model, images, intrinsics)
함수는 포즈/일치에 대한 중간 예측 목록을 출력합니다. 마지막(최상의) 예측은 다음과 같은 형식입니다.
Scannet/mega뎁스에 대한 예측을 시각화하려면 2개 보기 데이터 다운로드 지침을 따르고 실행하십시오.
jupyter notebook demo_scannet_megadepth.ipynb
이미지 쌍에 대한 예측을 시각화하려면 demo_pair.ipynb
편집하고 실행하세요.
jupyter notebook demo_pair.ipynb
투뷰
LoFTR의 작성자는 Scannet 및 Megalength에 대한 테스트 세트를 아낌없이 제공합니다. 각각 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에서 2뷰 포즈 방법을 평가하려면 다음을 실행하세요.
python evaluate.py --dataset test_scannet --load_ckpt twoview.pth -o ScanNetDatasetWrapper.pad_to_size=840
메가뎁스의 경우 다음을 실행하세요.
python evaluate.py --dataset test_megadepth --load_ckpt twoview.pth
데이터 다운로드
합성 동형어 : https://github.com/filipradenovic/revisitop에서 다운로드 스크립트를 실행하여 Oxford-Paris 산만함 데이터 세트를 다운로드하세요. data/revisitop1m/jpg/
에 파일을 저장합니다.
Scannet/Mega뎁스 : 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
├── ...
Homography Two-view 사전 훈련
하나 또는 여러 개의 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
이 프로젝트는 기존 저장소의 코드를 사용합니다.
코드를 오픈소스로 공개해 주신 작성자에게 감사드립니다.