Dies ist die offizielle Pytorch-Implementierung des IROS 2024- Papiers Deep Visual Odometry with Events and Frames using Recurrent Asynchronous and Massively Parallel (RAMP) Networks for Visual Odometry (VO).
Wenn Sie Teile dieses Codes oder der dem Dokument beigefügten Datensätze verwenden, denken Sie bitte über die Angabe des Folgenden nach
@InProceedings{Pellerito_2024_IROS,author = {Pellerito, Roberto und Cannici, Marco und Gehrig, Daniel und Belhadj, Joris und Dubois-Matra, Olivier und Casasco, Massimo und Scaramuzza, Davide},title = {Deep Visual Odometry with Events and Frames} ,booktitle = {IEEE/RSJ International Conference on Intelligent Robots (IROS)},month = {Juni},year = {2024}}
Wir stellen RAMP-VO vor, das erste durchgängig erlernte bild- und ereignisbasierte VO-System. Es nutzt neuartige RAMP-Encoder (Recurrent, Asynchronous, Massively Parallel), die in der Lage sind, asynchrone Ereignisse mit Bilddaten zu verschmelzen.
Sie können mithilfe der bereitgestellten Datei environment.yml
direkt eine neue Conda-Umgebung erstellen.
conda env create -f ambient.yml Conda aktiviert Rampvo
Abhängig von Ihrer CUDA-Version müssen Sie möglicherweise eine andere Version von torch
installieren. Der folgende Code wurde mit Python 3.10.0 und CUDA 12.2 auf einer Nvidia GPU Quadro RTX 8000 getestet.
pip install Torch Torchvision Torchaudio --index-url https://download.pytorch.org/whl/cu124 pip install -r Anforderungen.txt
Da wir Lietorch für die Lie-Gruppenoperationen verwenden, müssen Sie einige zusätzliche Pakete installieren. Führen Sie die folgenden Befehle aus, um das erforderliche Eigen-3.4.0 zu installieren:
CD-Rampvo wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip entpacken Sie eigen-3.4.0.zip -dthirdparty
Installieren Sie abschließend das Ramp VO-Paket.
CD-Rampvo pip install .
Laden Sie die vorab trainierten Checkpoints herunter und platzieren Sie sie im checkpoints
Ordner.
RAMP-VO Multi-Skala | RAMP-VO Einzelwaage | |
---|---|---|
Kontrollpunkt | herunterladen | herunterladen |
Tartan Event ist eine Version des TartanAir-Datensatzes mit zusätzlichen Ereigniskameradaten.
Laden Sie hier den TartanAir-Datensatz herunter.
Laden Sie den TartanEvent-Datensatz mit dem bereitgestellten Skript herunter und dekomprimieren Sie ihn im selben Ordner wie TartanAir:
UNZIP_FILES=true DELETE_FILES=true ./scripts/download_tartanevent.sh /path/to/TartanAir
Die resultierende Ordnerstruktur sollte wie folgt aussehen:
|--- /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 | |--- ... |
Der TartanEvent-Wettbewerb ist eine Teilmenge des TartanAir-Datensatzes, der für den SLAM-Wettbewerb verwendet wird, mit zusätzlichen Event-Kameradaten.
Laden Sie hier den TartanAir-Datensatz für den SLAM-Wettbewerb herunter.
Laden Sie hier den TartanEvent-Wettbewerbsdatensatz herunter.
Ordnen Sie abschließend die Daten wie oben für den TartanEvent-Datensatz angegeben an.
Laden Sie hier die Malapert-Sequenzen herunter.
Laden Sie hier die Apollo-Sequenzen herunter.
Sie können diesen Datensatz wie folgt anordnen:
|--- /your/path/to/MoonLanding | |--- Malapert_crater | |--- Cam 1 | |--- Cam 2 | |--- Apollo | |--- record1_segment0_54-320 | |--- record3_segment0_81-208 | |--- record4_segment0_96-252
Laden Sie hier den StereoDavis-Datensatz herunter.
Wählen Sie die hier angegebenen Sequenzen aus.
Laden Sie den EDS-Datensatz hier herunter.
Ordnen Sie den Datensatz wie oben für den TartanAir- oder MoonLanding-Datensatz angegeben an.
Python evaluieren_tartanevent.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
Python evaluieren.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
Python evaluieren.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
Python evaluieren.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
Python evaluieren.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
Python evaluieren.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
Sie können dasselbe Befehlstool wie oben verwenden, indem Sie die Gewichtungen und die Konfigurationsdatei ändern. Wir stellen in rampvo/config_net die Konfigurationsdateien für einige Beispieldatensätze bereit, z. B. Malapert. Sie können die folgende Variable „input_mode“ ändern und „SingleScale“ angeben, um unser Einzelskalenmodell zu verwenden.
Python evaluieren.py --weights=checkpoints/RAMPVO_SingleScale.pth --config_eval=config_net/SingleScale_Malapert.json --config_VO=config_vo/default.yaml
Laden Sie den TartanAir-Datensatz von TartanAir herunter und laden Sie den TartanEvent-Datensatz hier herunter. Ordnen Sie die Daten mithilfe der oben angegebenen Ordnerstruktur für die TartanAir-Datensatzauswertung an.
Laden Sie die eingelegten Datensatzinformationen von TartanEvent.pickle herunter und legen Sie sie im Verzeichnis rampvo/datasets_pickle
ab
Trainiere durch Laufen
python train.py --name=Name_Ihres_Experimentes --config_path=config_net/MultiScale_TartanEvent.json --data_path=datasets/TartanEvent --workers=8
Dieses Projekt hat Code aus den folgenden Projekten verwendet:
DPVO