Это официальная реализация Pytorch документа IROS 2024 «Глубокая визуальная одометрия с событиями и кадрами» с использованием рекуррентных асинхронных и массово-параллельных (RAMP) сетей для визуальной одометрии (VO).
Если вы используете какую-либо часть этого кода или наборов данных, сопровождающих документ, рассмотрите возможность ссылки на следующее:
@InProceedings{Pellerito_2024_IROS,author = {Пеллерито, Роберто и Канничи, Марко и Гериг, Даниэль и Бельхадж, Жорис и Дюбуа-Матра, Оливье и Касаско, Массимо и Скарамуцца, Давиде},title = {Глубокая визуальная одометрия с событиями и кадрами} ,booktitle = {Международная конференция IEEE/RSJ по интеллектуальным роботам (IROS)},month = {июнь},year = {2024}}
Мы представляем RAMP-VO, первую комплексную систему VO на основе изображений и событий. Он использует новые рекуррентные, асинхронные и массово-параллельные кодеры (RAMP), способные объединять асинхронные события с данными изображения.
Вы можете напрямую создать новую среду conda, используя предоставленный файл environment.yml
.
conda env create -f Environment.yml Конда активирует рампво
В зависимости от вашей версии CUDA вам может потребоваться установить другую версию torch
. Следующий код был протестирован с использованием Python 3.10.0 и CUDA 12.2 на графическом процессоре Nvidia Quadro RTX 8000.
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip install -r требования.txt
Поскольку мы используемlietorch для групповых операций Lie, вам необходимо установить некоторые дополнительные пакеты. Чтобы установить необходимый eigen-3.4.0, выполните следующие команды:
компакт-диск рампво wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip разархивировать eigen-3.4.0.zip -d сторонний
Наконец установите пакет Ramp VO.
компакт-диск рампво установка пипа.
Загрузите предварительно обученные контрольные точки и поместите их в папку checkpoints
.
RAMP-VO Мультимасштабный | RAMP-VO Единая шкала | |
---|---|---|
контрольно-пропускной пункт | скачать | скачать |
Tartan Event — это версия набора данных TartanAir с добавленными данными камеры событий.
Загрузите набор данных TartanAir здесь.
Загрузите набор данных TartanEvent с помощью предоставленного скрипта и распакуйте его в ту же папку, что и TartanAir:
UNZIP_FILES=true DELETE_FILES=true ./scripts/download_tartanevent.sh /path/to/TartanAir
В результате структура папок должна быть следующей:
|--- /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 | |--- ... |
Соревнования TartanEvent — это подмножество набора данных TartanAir, используемого для соревнований SLAM, с добавленными данными камеры событий.
Загрузите набор данных TartanAir для соревнований SLAM здесь.
Загрузите набор данных соревнований TartanEvent здесь.
Наконец, расположите данные, как указано выше, для набора данных TartanEvent.
Загрузите эпизоды Малаперта здесь.
Загрузите эпизоды «Аполлона» здесь.
Вы можете упорядочить этот набор данных следующим образом:
|--- /your/path/to/MoonLanding | |--- Malapert_crater | |--- Cam 1 | |--- Cam 2 | |--- Apollo | |--- record1_segment0_54-320 | |--- record3_segment0_81-208 | |--- record4_segment0_96-252
Загрузите набор данных StereoDavis здесь.
Выберите последовательности, как указано здесь.
Загрузите набор данных EDS здесь.
Расположите набор данных, как указано выше, для набора данных TartanAir или MoonLanding.
python Assessment_tartanevent.py --weights=контрольные точки/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
Python оценить.py --weights=контрольные точки/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
Python оценить.py --weights=контрольные точки/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
Python оценить.py --weights=контрольные точки/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
Python оценить.py --weights=контрольные точки/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
Python оценить.py --weights=контрольные точки/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
Вы можете использовать тот же командный инструмент, что и выше, изменив веса и файл конфигурации. Мы предоставляем в Rampvo/config_net файлы конфигурации для некоторых примеров наборов данных, например Malapert. Вы можете изменить следующую переменную «input_mode» и указать «SingleScale», чтобы использовать нашу модель с одним масштабом.
Python оценить.py --weights=контрольные точки/RAMPVO_SingleScale.pth --config_eval=config_net/SingleScale_Malapert.json --config_VO=config_vo/default.yaml
Загрузите набор данных TartanAir с сайта TartanAir и загрузите набор данных TartanEvent здесь. Упорядочите данные, используя структуру папок, описанную выше, для оценки набора данных TartanAir.
Загрузите информацию о маринованном наборе данных из TartanEvent.pickle и поместите ее в каталог rampvo/datasets_pickle
тренироваться бегом
python train.py --name=имя_вашего_эксперимента --config_path=config_net/MultiScale_TartanEvent.json --data_path=datasets/TartanEvent --workers=8
В этом проекте использовался код из следующих проектов:
ДПВО