これは、Visual Odometry (VO) に Recurrent Asynchronous and Massively Parallel (RAMP) ネットワークを使用した、 IROS 2024論文の Deep Visual Odometry with Events and Frames の公式 Pytorch 実装です。
このコードの一部または論文に付随するデータセットを使用する場合は、次の引用を検討してください。
@InProceedings{Pellerito_2024_IROS,author = {Pellerito、Roberto と Cannici、Marco と Gehrig、Daniel と Belhadj、Joris と Dubois-Matra、Olivier と Casasco、Massimo と Scaramuzza、Davide}、title = {イベントとフレームによるディープ ビジュアル オドメトリ} ,booktitle = {IEEE/RSJ 知能ロボット国際会議 (IROS)},month = {6 月},year = {2024}}
初のエンドツーエンド学習画像およびイベントベースの VO システムである RAMP-VO を紹介します。これは、非同期イベントと画像データを融合できる新しい Recurrent、Asynchronous、および Massively Parallel (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 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 pip install -r 要件.txt
Lie グループの操作には lietorch を使用するため、追加のパッケージをいくつかインストールする必要があります。必要な eigen-3.4.0 をインストールするには、次のコマンドを実行します。
CDランボー wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip unzip eigen-3.4.0.zip -d thirdparty
最後にRamp VOパッケージをインストールします。
CDランボー pip インストール 。
事前トレーニングされたチェックポイントをダウンロードし、 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 データセットについて上記で報告したようにデータセットを配置します。
python評価_tartanevent.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_TartanEvent.json --config_VO=config_vo/default.yaml
Python評価.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_ECCV20Competition.json --config_VO=config_vo/default.yaml
Python評価.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Apollo.json --config_VO=config_vo/default.yaml
Python評価.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_Malapert.json --config_VO=config_vo/default.yaml
Python評価.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_StereoDavis.json --config_VO=config_vo/default.yaml
Python評価.py --weights=checkpoints/RAMPVO_MultiScale.pth --config_eval=config_net/MultiScale_EDS.json --config_VO=config_vo/default.yaml
重みと設定ファイルを変更することで、上記と同じコマンド ツールを使用できます。 Lampvo/config_net には、Malapert などのいくつかのサンプル データセットの構成ファイルが提供されています。次の変数「input_mode」を変更し、「SingleScale」を指定して単一スケール モデルを使用できます。
Python評価.py --weights=checkpoints/RAMPVO_SingleScale.pth --config_eval=config_net/SingleScale_Malapert.json --config_VO=config_vo/default.yaml
TartanAir データセットを TartanAir からダウンロードし、TartanEvent データセットをここからダウンロードします。 TartanAir データセット評価用に、上で報告したフォルダー構造を使用してデータを配置します。
TartanEvent.pickle から pickle データセット情報をダウンロードし、 rampvo/datasets_pickle
ディレクトリに配置します。
走って鍛える
python train.py --name=your_experiment_name --config_path=config_net/MultiScale_TartanEvent.json --data_path=データセット/TartanEvent --workers=8
このプロジェクトでは、次のプロジェクトのコードが使用されています。
DPVO