이는 VO(Visual Odometry)용 순환 비동기 및 대규모 병렬(RAMP) 네트워크를 사용하는 이벤트 및 프레임이 포함된 IROS 2024 논문 Deep Visual Odometry의 공식 Pytorch 구현입니다.
이 코드 또는 논문과 함께 제공되는 데이터세트의 일부를 사용하는 경우 다음을 인용해 보세요.
@InProceedings{Pellerito_2024_IROS,author = {Pellerito, Roberto 및 Cannici, Marco 및 Gehrig, Daniel 및 Belhadj, Joris 및 Dubois-Matra, Olivier 및 Casasco, Massimo 및 Scaramuzza, Davide},title = {이벤트 및 프레임을 사용한 Deep Visual Odometry} ,booktitle = {지능형 로봇에 관한 IEEE/RSJ 국제 컨퍼런스 (IROS)},월 = {6월}, 연도 = {2024}}
최초의 엔드투엔드 학습 이미지 및 이벤트 기반 VO 시스템인 RAMP-VO를 소개합니다. 비동기 이벤트를 이미지 데이터와 융합할 수 있는 새로운 RAMP(Recurrent, Asynchronous, Massively Parallel) 인코더를 활용합니다.
제공된 environment.yml
파일을 사용하여 새 Conda 환경을 직접 생성할 수 있습니다.
conda env create -f 환경.yml 콘다 활성화 Ramvo
CUDA 버전에 따라 다른 버전의 torch
설치해야 할 수도 있습니다. 다음 코드는 Nvidia GPU Quadro RTX 8000에서 Python 3.10.0 및 CUDA 12.2를 사용하여 테스트되었습니다.
pip 설치 토치 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip 설치 -r 요구사항.txt
Lie 그룹 운영을 위해 lietorch를 사용하므로 몇 가지 추가 패키지를 설치해야 합니다. 필수 eigen-3.4.0을 설치하려면 다음 명령을 실행하십시오.
CD 램프보 wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip eigen-3.4.0.zip -d 타사 압축 풀기
마지막으로 Ramp VO 패키지를 설치합니다.
CD 램프보 핍 설치 .
사전 학습된 체크포인트를 다운로드하여 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 대회는 이벤트 카메라 데이터가 추가된 SLAM 대회에 사용되는 TartanAir 데이터세트의 하위 집합입니다.
여기에서 SLAM 대회용 TartanAir 데이터세트를 다운로드하세요.
여기에서 TartanEvent 대회 데이터세트를 다운로드하세요.
마지막으로 TartanEvent 데이터세트에 대해 위에 보고된 대로 데이터를 정렬합니다.
여기에서 Malapert 시퀀스를 다운로드하세요.
여기에서 Apollo 시퀀스를 다운로드하세요.
이 데이터세트를 다음과 같이 정렬할 수 있습니다.
|--- /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 데이터세트에 대해 위에 보고된 대로 데이터세트를 정렬합니다.
파이썬 평가_tartanevent.py --weights=체크포인트/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
파이썬 평가.py --weights=체크포인트/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
파이썬 평가.py --weights=체크포인트/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
파이썬 평가.py --weights=체크포인트/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
파이썬 평가.py --weights=체크포인트/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
파이썬 평가.py --weights=체크포인트/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
가중치와 구성 파일을 변경하여 위와 동일한 명령 도구를 사용할 수 있습니다. 우리는 램프보/config_net에 Malapert와 같은 일부 예제 데이터 세트에 대한 구성 파일을 제공합니다. 다음 변수 "input_mode"를 변경하고 "SingleScale"을 지정하여 단일 스케일 모델을 사용할 수 있습니다.
파이썬 평가.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 --노동자=8
이 프로젝트는 다음 프로젝트의 코드를 사용했습니다.
DPVO