Photo-SLAM:基于SLAM技术的实时定位与逼真建图项目

[CVPR 2024] Photo-SLAM: Real-time Simultaneous Localization and Photorealistic Mapping for Monocular, Stereo, and RGB-D Cameras

分支1Tags0
文件最后提交记录最后更新时间
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前

照片同步定位与映射(Photo-SLAM)

主页 | 论文

Photo-SLAM:单目、立体和RGB-D相机的实时同步定位与真实感映射
黄建华1, 李龙威2, 成慧2, 杨赛克特1
香港科技大学1, 中山大学2
计算机视觉与模式识别会议(CVPR)录用, 2024

图像

先决条件

(可选)使用Docker

XuYinzhe提供了一个Docker示例。

依赖项

sudo apt install libeigen3-dev libboost-all-dev libjsoncpp-dev libopengl-dev mesa-utils libglfw3-dev libglm-dev
依赖项 测试环境
操作系统 Ubuntu 20.04 LTS
Ubuntu 22.04 LTS
Jetpack 5.1.2
gcc 10.5.0
11.4.0
9.4.0
cmake 3.27.5
3.22.1
3.26.4
CUDA 11.8
11.8
11.4
cuDNN 8.9.3
8.7.0
8.6.0
OpenCV 4.7.0(带opencv_contrib和CUDA)
4.8.0
4.7.0
LibTorch cxx11-abi-shared-with-deps-2.0.1+cu118
(适用于以上两个)
2.0.0+nv23.05-cp38-linux_aarch64
Intel® RealSense™ SDK 2.0 可选
备注 我们使用的Jetson AGX Orin开发套件配备64GB内存,电源模式设置为MAXN。

使用LibTorch

若系统路径中未安装LibTorch供CMake自动发现,则需要在build.sh中添加选项以帮助CMake定位LibTorch。详情参阅build.sh。或者,在CMakeLists.txtfind_package(Torch REQUIRED)之前添加以下代码之一:

  • 选项1(Conda用户),如果通过Conda管理Python包并已安装兼容PyTorch:
set(Torch_DIR /path/to/conda/python3.x/site-packages/torch/share/cmake/Torch)
  • 选项2 直接下载libtorch(例如cu118版本),解压到指定目录:
set(Torch_DIR /path/to/extracted/LibTorch/libtorch/share/cmake/Torch)

使用带有opencv_contrib和CUDA的OpenCV

以4.7.0为例,从OpenCV releasesopencv_contrib获取对应的版本,并下载提取至同一目录(如~/opencv)。接着,在终端运行:

cd ~/opencv/opencv-4.7.0/
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE ... # 见完整配置指令于下方。
make -j8
sudo make install

完整配置指令需包含CUDA相关支持:

cmake -DCMAKE_BUILD_TYPE=RELEASE -DWITH_CUDA=ON ... # 完整命令请参考上方的详细构建参数。

自定义安装路径,确保修改CMakeLists.txt以及相关文件中的OpenCV路径指示。

Photo-SLAM安装

git clone https://github.com/HuajianUP/Photo-SLAM.git
cd Photo-SLAM/
chmod +x ./build.sh
./build.sh

在基准数据集上的Photo-SLAM实例

涉及的数据集包括:Replica (NICE-SLAM Version)TUM RGB-DEuRoC

  1. (可选)下载数据集:

    cd scripts
    chmod +x ./*.sh
    ./download_replica.sh
    ./download_tum.sh
    ./download_euroc.sh
    
  2. 运行测试,设定PATH_TO_ReplicaPATH_TO_SAVE_RESULTS后执行:

    ../bin/replica_rgbd ... PATH_TO_Replica/office0 PATH_TO_SAVE_RESULTS # no_viewer
    
  3. 提供脚本以对论文提及的所有基准数据集进行实验。每序列运行五次以减少随机性影响。修改脚本中的数据根路径,然后执行:

    cd scripts
    chmod +x ./*.sh
    ./replica_mono.sh
    ./replica_rgbd.sh
    ./tum_mono.sh
    ./tum_rgbd.sh
    ./euroc_stereo.sh
    

以上步骤指导完成Photo-SLAM的部署与评估。

Photo-SLAM 评估

git clone https://github.com/HuajianUP/Photo-SLAM-eval.git

要使用此工具包,确保你的每个数据集的结果以正确的格式存储。如果你使用我们的./xxx.sh脚本来执行实验,结果会保存在以下结构中:

results
├── replica_mono_0
│   ├── office0
│   ├── ....
│   └── room2
├── replica_rgbd_0
│   ├── office0
│   ├── ....
│   └── room2
│
└── [replica/tum/euroc]_[mono/stereo/rgbd]_num  ....
    ├── scene_1
    ├── ....
    └── scene_n

安装所需 Python 包

pip install evo numpy scipy scikit-image lpips pillow tqdm plyfile

(可选)安装渲染子模型

# 如果已安装原始 GS 子模型,可以跳过这些步骤。

pip install submodules/simple-knn/ 
pip install submodules/diff-gaussian-rasterization/

将 Replica 的 GT 相机姿态文件转换为适用于 EVO 包的格式

python ./Photo-SLAM-eval/shapeReplicaGT.py --replica_dataset_path PATH_TO_REPLICA_DATASET

将 TUM 的 camera.yaml 复制到对应的数据集路径

由于 TUM 数据集中某些序列的图像包含畸变,我们在评估前需要先对地面真实图像去畸变。此外,camera.yaml 文件作为 run.py 中的指示器使用。

cp ./Photo-SLAM-eval/TUM/fr1/camera.yaml PATH_TO_TUM_DATASET/rgbd_dataset_freiburg1_desk
cp ./Photo-SLAM-eval/TUM/fr2/camera.yaml PATH_TO_TUM_DATASET/rgbd_dataset_freiburg2_xyz

要获取所有指标,可以运行

python ./Photo-SLAM-eval/onekey.py --dataset_center_path PATH_TO_ALL_DATASET --result_main_folder RESULTS_PATH

最后,你应该会得到两个文件:RESULTS_PATH/log.txtRESULTS_PATH/log.csv

使用真实相机的 Photo-SLAM 示例

我们提供了使用英特尔实感 D455 相机的例子,在examples/realsense_rgbd.cpp中。请参考scripts/realsense_d455.sh以运行它。

引用

@inproceedings{hhuang2024photoslam,
	Photo-SLAM:单目、立体和RGBD相机的实时定位与逼真映射,
	黄华健、李龙威、程辉、叶斯凯,
	IEEE/CVF 计算机视觉与模式识别会议论文集,
	2024
}

项目介绍

【CVPR 2024】照片-同步定位与逼真映射:一种适用于单目、立体及RGB-D相机的实时同步定位与逼真映射方法【此简介由AI生成】

定制我的领域