Repositori ini berisi kode sumber untuk makalah kami:
SLAM Multi-Sesi dengan Optimasi Pose Garis Dasar Lebar yang Dapat Dibedakan
Lahav Lipson, Jia Deng
@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
Anda juga perlu menginstal hloc perpustakaan pihak ketiga
cd thirdparty/Hierarchical-Localization
python -m pip install -e .
cd ../..
dan eigen
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
unzip eigen-3.4.0.zip -d thirdparty
Akhirnya, lari
pip install .
Unduh model bobot
Kami menyediakan bobot model untuk tulang punggung VO, tulang punggung dua tampilan, dan tulang punggung dua tampilan setelah pra-pelatihan homografi:
https://drive.google.com/drive/folders/11iC4ZAmO_mWMUjkpS83HgVcS80hFL-30?usp=sharing
Jalankan conda install jupyter
jika belum dilakukan sebelumnya.
Kami menyediakan buku catatan untuk mendemonstrasikan metode pose dua pandangan kami. Fungsi run_model(model, images, intrinsics)
menampilkan daftar prediksi pose/kecocokan antara. Prediksi terakhir (terbaik) berbentuk
Untuk memvisualisasikan prediksi di Scannet / megakedalaman, ikuti petunjuk pengunduhan data dua tampilan dan jalankan
jupyter notebook demo_scannet_megadepth.ipynb
Untuk memvisualisasikan prediksi pada pasangan gambar apa pun, edit dan jalankan demo_pair.ipynb
jupyter notebook demo_pair.ipynb
Dua Tampilan
Penulis LoFTR dengan murah hati menyediakan set pengujian untuk Scannet dan Mega depth. Unduh dan buka paketnya masing-masing ke dalam data/scannet/scannet_test_1500/
dan data/megadepth/megadepth_test_1500/
.
untar megadepth_test_1500.tar -C data/megadepth/
untar scannet_test_1500.tar -C data/scannet/
SLAM Multi-Sesi
EuRoC : Unduh urutan dari dataset EuRoC di sini. Pastikan untuk mengunduh format ASL. Buka paket urutan di bawah data/EuRoC
ETH3D : Anda dapat mengunduh urutan dari kumpulan data pelatihan ETH3D menggunakan skrip download_eth3d_slam_datasets.py yang disediakan. Anda dapat memilih mono, RGB saja. Buka paket urutan di bawah data/ETH3D
SLAM Multi-Sesi
Untuk mengevaluasi pendekatan SLAM Multi-Sesi kami secara penuh pada semua grup urutan EuRoC, jalankan
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 '
Untuk mengevaluasi metode kami pada grup urutan ETH3D, jalankan
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
Kedua skrip mengikuti template yang sama. Memperluas alur ke data baru hanya memerlukan penerapan pemuat data untuk memuat gambar dan intrinsik.
Pose Dua Pandangan
Untuk mengevaluasi metode pose dua tampilan kami di Scannet, jalankan
python evaluate.py --dataset test_scannet --load_ckpt twoview.pth -o ScanNetDatasetWrapper.pad_to_size=840
Untuk Mega depth, jalankan
python evaluate.py --dataset test_megadepth --load_ckpt twoview.pth
Pengunduhan data
Homografi Sintetis : Jalankan skrip unduhan di https://github.com/filipradenovic/revisitop untuk mengunduh kumpulan data pengalih Oxford-Paris. Simpan file di bawah data/revisitop1m/jpg/
Scannet/Mega depth : Ikuti instruksi dari pengaturan data pelatihan LoFTR: https://github.com/zju3dv/LoFTR/blob/master/docs/TRAINING.md. Buka paket *_indices.tar
ke dalam subfolder index
.
Pengunduhan data VO : Untuk mengunduh data untuk melatih tulang punggung VO, ikuti instruksi pengunduhan dari repo DROID-SLAM.
Tata letak data lengkapnya harus sebagai berikut:
├── data
├── revisitop1m
├── jpg
├── revisitop1m.txt
├── scannet
├── index
├── scannet_test_1500
├── train
├── megadepth
├── index
├── scannet_test_1500
├── train
├── TartanAir
├── abandonedfactory
├── ...
Pra-pelatihan Dua Tampilan Homografi
Pada satu atau beberapa A6000 (kami menggunakan 1), jalankan
python train.py -g train_homog.gin --batch_size 14 --name homog_pretrain
mv model_weights/homog_pretrain/step_140000.pth homog_pretrain.pth
Pelatihan penuh dua tampilan
Pada satu atau beberapa A6000 (kami menggunakan 10), jalankan
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
pelatihan VO
Pada satu atau beberapa A6000 (kami menggunakan 1), jalankan
python train_vo.py --steps=240000 --lr=0.00008 --name=vo
mv checkpoints/vo_240000.pth vo.pth
Proyek ini bergantung pada kode dari repositori yang ada:
Terima kasih kepada penulis karena telah membuat kode mereka menjadi sumber terbuka