這是IROS 2024論文 Deep Visual Odometry with Events and Frames 的官方 Pytorch 實現,使用循環異步和大規模並行 (RAMP) 網路進行視覺里程計 (VO)。
如果您使用本文附帶的程式碼或資料集的任何部分,請考慮引用以下內容
@InProceedings{Pellerito_2024_IROS,作者= {Pellerito、Roberto 和Cannici、Marco 和Gehrig、Daniel 和Belhadj、Joris 和Dubois-Matra、Olivier 和Casasco、Massimo 和Scaramuzza、Davide},= {帶有事件和幀標題里程計} ,書名 = {IEEE/RSJ 國際智慧機器人會議 (IROS)},月 = {六月},年 = {2024}}
我們推出 RAMP-VO,這是第一個端到端學習的基於影像和事件的 VO 系統。它利用新穎的循環、非同步和大規模並行 (RAMP) 編碼器,能夠將非同步事件與影像資料融合。
您可以使用提供的environment.yml
檔案直接建立新的conda環境。
conda env create -f 環境.yml conda 激活 Ramvo
根據您的 CUDA 版本,您可能需要安裝不同版本的torch
。以下程式碼在 Nvidia GPU Quadro RTX 8000 上使用 python 3.10.0 和 CUDA 12.2 進行了測試。
pip 安裝 torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip install -r 要求.txt
由於我們使用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 序列。
在此下載阿波羅序列。
您可以如下排列此資料集:
|--- /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評估_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 下載 pickled 資料集資訊並將其放置在rampvo/datasets_pickle
目錄中
透過跑步來訓練
python train.py --name=your_experiment_name --config_path=config_net/MultiScale_TartanEvent.json --data_path=資料集/TartanEvent --工人=8
此項目使用了以下項目的程式碼:
DPVO