Ini adalah implementasi resmi Pytorch dari makalah IROS 2024 Deep Visual Odometry with Events and Frames menggunakan jaringan Recurrent Asynchronous and Massively Parallel (RAMP) untuk Visual Odometry (VO).
Jika Anda menggunakan bagian mana pun dari kode ini atau kumpulan data yang menyertai makalah, harap pertimbangkan untuk mengutip yang berikut ini
@InProceedings{Pellerito_2024_IROS,author = {Pellerito, Roberto dan Cannici, Marco dan Gehrig, Daniel dan Belhadj, Joris dan Dubois-Matra, Olivier dan Casasco, Massimo dan Scaramuzza, Davide},title = {Odometri Visual Mendalam dengan Peristiwa dan Bingkai} ,booktitle = {IEEE/RSJ International Conference on Intelligent Robots (IROS)},bulan = {Juni},tahun = {2024}}
Kami memperkenalkan RAMP-VO, sistem VO berbasis gambar dan peristiwa yang dipelajari secara menyeluruh dan pertama. Ini memanfaatkan encoder Recurrent, Asynchronous, dan Massively Parallel (RAMP) baru yang mampu menggabungkan peristiwa asinkron dengan data gambar.
Anda dapat langsung membuat lingkungan conda baru menggunakan file environment.yml
yang disediakan.
conda env buat -f lingkungan.yml conda mengaktifkan rampvo
Tergantung pada versi CUDA Anda, Anda mungkin perlu menginstal versi torch
yang berbeda. Kode berikut diuji dengan python 3.10.0 dan CUDA 12.2 pada GPU Nvidia Quadro RTX 8000.
pip instal torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 instalasi pip -r persyaratan.txt
Karena kami menggunakan lietorch untuk operasi grup Lie, Anda perlu menginstal beberapa paket tambahan. Untuk menginstal eigen-3.4.0 yang diperlukan, jalankan perintah berikut:
cd rampvo dapatkan https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip unzip eigen-3.4.0.zip -d pihak ketiga
Terakhir instal paket Ramp VO.
cd rampvo pemasangan pip.
Unduh pos pemeriksaan terlatih dan letakkan di folder checkpoints
.
RAMP-VO Multi skala | RAMP-VO Skala tunggal | |
---|---|---|
pos pemeriksaan | unduh | unduh |
Tartan Event adalah versi kumpulan data TartanAir dengan tambahan data kamera acara.
Unduh kumpulan data TartanAir di sini.
Unduh kumpulan data TartanEvent dengan skrip yang disediakan dan buka kompresinya di folder yang sama dengan TartanAir:
UNZIP_FILES=true DELETE_FILES=true ./scripts/download_tartanevent.sh /path/to/TartanAir
Struktur folder yang dihasilkan harus sebagai berikut:
|--- /your/path/to/TartanAir | |--- abandonedfactory | |--- Easy | |--- P000 | |--- depth_left | |--- events.h5 | |--- fps.txt | |--- image_left | |--- indices.txt | |--- pose_left.txt | |--- timestamps.txt | |--- P001 | |--- ... | |--- P002 | |--- ... | |--- Hard | |--- P000 | |--- P001 | |--- P002 | |--- ... |
Kompetisi TartanEvent adalah bagian dari kumpulan data TartanAir yang digunakan untuk kompetisi SLAM dengan tambahan data kamera acara.
Unduh dataset TartanAir untuk kompetisi SLAM di sini.
Unduh kumpulan data kompetisi TartanEvent di sini.
Terakhir susun data seperti yang dilaporkan di atas untuk dataset TartanEvent.
Unduh rangkaian Malapert di sini.
Unduh rangkaian Apollo di sini.
Anda dapat mengatur dataset ini sebagai berikut:
|--- /your/path/to/MoonLanding | |--- Malapert_crater | |--- Cam 1 | |--- Cam 2 | |--- Apollo | |--- record1_segment0_54-320 | |--- record3_segment0_81-208 | |--- record4_segment0_96-252
Unduh kumpulan data StereoDavis di sini.
Pilih urutan seperti yang dilaporkan di sini.
Unduh kumpulan data EDS di sini.
Susun kumpulan data seperti yang dilaporkan di atas untuk kumpulan data TartanAir atau MoonLanding.
python evaluasi_tartanevent.py --weights=pos pemeriksaan/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
python mengevaluasi.py --weights=pos pemeriksaan/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
python mengevaluasi.py --weights=pos pemeriksaan/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
python mengevaluasi.py --weights=pos pemeriksaan/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
python mengevaluasi.py --weights=pos pemeriksaan/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
python mengevaluasi.py --weights=pos pemeriksaan/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
Anda dapat menggunakan alat perintah yang sama seperti di atas dengan mengubah bobot dan file konfigurasi. Kami menyediakan di rampvo/config_net file konfigurasi untuk beberapa contoh kumpulan data misalnya Malapert. Anda dapat mengubah variabel berikut "input_mode" dan menentukan "SingleScale" untuk menggunakan model skala tunggal kami.
python mengevaluasi.py --weights=pos pemeriksaan/RAMPVO_SingleScale.pth --config_eval=config_net/SingleScale_Malapert.json --config_VO=config_vo/default.yaml
Unduh kumpulan data TartanAir, dari TartanAir dan unduh kumpulan data TartanEvent di sini. Susun data menggunakan struktur folder yang dilaporkan di atas untuk evaluasi kumpulan data TartanAir.
Unduh informasi kumpulan data acar dari TartanEvent.pickle dan letakkan di direktori rampvo/datasets_pickle
berlatih dengan berlari
python train.py --name=nama_eksperimen_Anda --config_path=config_net/MultiScale_TartanEvent.json --data_path=kumpulan data/TartanEvent --pekerja=8
Proyek ini telah menggunakan kode dari proyek berikut:
DPVO