Il s'agit de l'implémentation officielle de Pytorch du document IROS 2024 Deep Visual Odometry with Events and Frames using Recurrent Asynchronous and Massively Parallel (RAMP) pour l'odométrie visuelle (VO).
Si vous utilisez une partie de ce code ou des ensembles de données accompagnant le document, pensez à citer ce qui suit
@InProceedings{Pellerito_2024_IROS,author = {Pellerito, Roberto et Cannici, Marco et Gehrig, Daniel et Belhadj, Joris et Dubois-Matra, Olivier et Casasco, Massimo et Scaramuzza, Davide},title = {Odométrie visuelle profonde avec événements et cadres} ,booktitle = {Conférence internationale IEEE/RSJ sur les robots intelligents (IROS)}, mois = {juin}, année = {2024}}
Nous présentons RAMP-VO, le premier système VO appris de bout en bout basé sur des images et des événements. Il exploite de nouveaux encodeurs récurrents, asynchrones et massivement parallèles (RAMP) capables de fusionner des événements asynchrones avec des données d'image.
Vous pouvez directement créer un nouvel environnement conda à l'aide du fichier environment.yml
fourni.
conda env créer -f environnement.yml conda activer rampvo
En fonction de votre version de CUDA, vous devrez peut-être installer une version différente de torch
. Le code suivant a été testé avec python 3.10.0 et CUDA 12.2 sur un GPU Nvidia Quadro RTX 8000.
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip install -r exigences.txt
Puisque nous utilisons lietorch pour les opérations du groupe Lie, vous devez installer des packages supplémentaires. Pour installer l'eigen-3.4.0 requis, exécutez les commandes suivantes :
cd rampvo wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip décompresser eigen-3.4.0.zip -d tiers
Enfin, installez le package Ramp VO.
cd rampvo pip installer.
Téléchargez les points de contrôle pré-entraînés et placez-les dans le dossier checkpoints
.
RAMP-VO Multi-échelle | RAMP-VO Balance unique | |
---|---|---|
point de contrôle | télécharger | télécharger |
Tartan Event est une version de l'ensemble de données TartanAir avec des données de caméra d'événement ajoutées.
Téléchargez l'ensemble de données TartanAir ici.
Téléchargez l'ensemble de données TartanEvent avec le script fourni et décompressez-le dans le même dossier que TartanAir :
UNZIP_FILES=true DELETE_FILES=true ./scripts/download_tartanevent.sh /path/to/TartanAir
La structure des dossiers résultante doit être la suivante :
|--- /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 | |--- ... |
La compétition TartanEvent est un sous-ensemble de l'ensemble de données TartanAir utilisé pour la compétition SLAM avec des données de caméra d'événement ajoutées.
Téléchargez l'ensemble de données TartanAir pour la compétition SLAM ici.
Téléchargez l'ensemble de données du concours TartanEvent ici.
Enfin, organisez les données comme indiqué ci-dessus pour l'ensemble de données TartanEvent.
Téléchargez les séquences de Malapert ici.
Téléchargez les séquences Apollo ici.
Vous pouvez organiser cet ensemble de données comme suit :
|--- /your/path/to/MoonLanding | |--- Malapert_crater | |--- Cam 1 | |--- Cam 2 | |--- Apollo | |--- record1_segment0_54-320 | |--- record3_segment0_81-208 | |--- record4_segment0_96-252
Téléchargez l'ensemble de données StereoDavis ici.
Sélectionnez les séquences comme indiqué ici.
Téléchargez l'ensemble de données EDS ici.
Organisez l'ensemble de données comme indiqué ci-dessus pour l'ensemble de données TartanAir ou MoonLanding.
python évaluer_tartanevent.py --weights=points de contrôle/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
python évaluer.py --weights=points de contrôle/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
python évaluer.py --weights=points de contrôle/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
python évaluer.py --weights=points de contrôle/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
python évaluer.py --weights=points de contrôle/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
python évaluer.py --weights=points de contrôle/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
Vous pouvez utiliser le même outil de commande que ci-dessus en modifiant les poids et le fichier de configuration. Nous fournissons dans rampvo/config_net les fichiers de configuration pour quelques exemples d'ensembles de données, par exemple Malapert. Vous pouvez modifier la variable suivante "input_mode" et spécifier "SingleScale" pour utiliser notre modèle à échelle unique.
python évaluer.py --weights=points de contrôle/RAMPVO_SingleScale.pth --config_eval=config_net/SingleScale_Malapert.json --config_VO=config_vo/default.yaml
Téléchargez l'ensemble de données TartanAir, depuis TartanAir et téléchargez l'ensemble de données TartanEvent ici. Organisez les données en utilisant la structure de dossiers indiquée ci-dessus pour l'évaluation de l'ensemble de données TartanAir.
Téléchargez les informations de l'ensemble de données marinées depuis TartanEvent.pickle et placez-les dans le répertoire rampvo/datasets_pickle
s'entraîner en courant
python train.py --name=votre_nom_expérience --config_path=config_net/MultiScale_TartanEvent.json --data_path=datasets/TartanEvent --travailleurs=8
Ce projet a utilisé le code des projets suivants :
DPVO