Esta es la implementación oficial de Pytorch del documento IROS 2024 Odometría visual profunda con eventos y fotogramas utilizando redes recurrentes asincrónicas y masivamente paralelas (RAMP) para odometría visual (VO).
Si utiliza alguna parte de este código o conjuntos de datos que acompañan al documento, considere citar lo siguiente
@InProceedings{Pellerito_2024_IROS,autor = {Pellerito, Roberto y Cannici, Marco y Gehrig, Daniel y Belhadj, Joris y Dubois-Matra, Olivier y Casasco, Massimo y Scaramuzza, Davide},title = {Odometría visual profunda con eventos y fotogramas} ,título del libro = {Conferencia Internacional IEEE/RSJ sobre Robots Inteligentes (IROS)},mes = {junio},año = {2024}}
Presentamos RAMP-VO, el primer sistema de VO basado en eventos e imágenes aprendido de extremo a extremo. Aprovecha los novedosos codificadores recurrentes, asincrónicos y masivamente paralelos (RAMP) capaces de fusionar eventos asincrónicos con datos de imágenes.
Puede crear directamente un nuevo entorno conda utilizando el archivo environment.yml
proporcionado.
conda env crear -f entorno.yml conda activar rampvo
Dependiendo de su versión de CUDA, es posible que necesite instalar una versión diferente de torch
. El siguiente código se probó con Python 3.10.0 y CUDA 12.2 en una GPU Nvidia Quadro RTX 8000.
pip instalar antorcha torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 instalación de pip -r requisitos.txt
Dado que utilizamos lietorch para las operaciones del grupo Lie, es necesario instalar algunos paquetes adicionales. Para instalar el eigen-3.4.0 requerido, ejecute los siguientes comandos:
rampvo cd wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip descomprimir eigen-3.4.0.zip -d tercero
Finalmente instale el paquete Ramp VO.
rampvo cd instalación de pipas.
Descargue los puntos de control previamente entrenados y colóquelos en la carpeta de checkpoints
.
RAMP-VO Multiescala | RAMP-VO Escala única | |
---|---|---|
control | descargar | descargar |
Tartan Event es una versión del conjunto de datos de TartanAir con datos de cámara de eventos agregados.
Descargue el conjunto de datos de TartanAir aquí.
Descargue el conjunto de datos de TartanEvent con el script proporcionado y descomprímalo en la misma carpeta que TartanAir:
UNZIP_FILES=true DELETE_FILES=true ./scripts/download_tartanevent.sh /path/to/TartanAir
La estructura de carpetas resultante debería ser la siguiente:
|--- /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 competencia TartanEvent es un subconjunto del conjunto de datos de TartanAir utilizado para la competencia SLAM con datos de cámaras de eventos agregados.
Descargue el conjunto de datos de TartanAir para la competencia SLAM aquí.
Descargue el conjunto de datos de la competencia TartanEvent aquí.
Finalmente, organice los datos como se informó anteriormente para el conjunto de datos TartanEvent.
Descarga las secuencias de Malapert aquí.
Descarga las secuencias de Apolo aquí.
Puede organizar este conjunto de datos de la siguiente manera:
|--- /your/path/to/MoonLanding | |--- Malapert_crater | |--- Cam 1 | |--- Cam 2 | |--- Apollo | |--- record1_segment0_54-320 | |--- record3_segment0_81-208 | |--- record4_segment0_96-252
Descargue el conjunto de datos de StereoDavis aquí.
Seleccione las secuencias como se informa aquí.
Descargue el conjunto de datos de EDS aquí.
Organice el conjunto de datos como se informó anteriormente para el conjunto de datos de TartanAir o MoonLanding.
Python evaluar_tartanevent.py --pesos=puntos de control/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
Python evaluar.py --pesos=puntos de control/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
Python evaluar.py --pesos=puntos de control/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
Python evaluar.py --pesos=puntos de control/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
Python evaluar.py --pesos=puntos de control/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
Python evaluar.py --pesos=puntos de control/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
Puede utilizar la misma herramienta de comando que la anterior cambiando los pesos y el archivo de configuración. Proporcionamos en rampvo/config_net los archivos de configuración para algunos conjuntos de datos de ejemplo, por ejemplo, Malapert. Puede cambiar la siguiente variable "input_mode" y especificar "SingleScale" para utilizar nuestro modelo de escala única.
Python evaluar.py --pesos=puntos de control/RAMPVO_SingleScale.pth --config_eval=config_net/SingleScale_Malapert.json --config_VO=config_vo/default.yaml
Descargue el conjunto de datos de TartanAir, desde TartanAir y descargue el conjunto de datos de TartanEvent aquí. Organice los datos utilizando la estructura de carpetas mencionada anteriormente para la evaluación del conjunto de datos de TartanAir.
Descargue la información del conjunto de datos encurtidos de TartanEvent.pickle y colóquela en el directorio rampvo/datasets_pickle
entrenar corriendo
python train.py --name=nombre_tu_experimento --config_path=config_net/MultiScale_TartanEvent.json --data_path=datasets/TartanEvent --trabajadores=8
Este proyecto ha utilizado código de los siguientes proyectos:
OVPD