这是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