[CVPR 2024] Photo-SLAM: Real-time Simultaneous Localization and Photorealistic Mapping for Monocular, Stereo, and RGB-D Cameras
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 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.txt的find_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 releases及opencv_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-D,EuRoC。
-
(可选)下载数据集:
cd scripts chmod +x ./*.sh ./download_replica.sh ./download_tum.sh ./download_euroc.sh -
运行测试,设定
PATH_TO_Replica和PATH_TO_SAVE_RESULTS后执行:../bin/replica_rgbd ... PATH_TO_Replica/office0 PATH_TO_SAVE_RESULTS # no_viewer -
提供脚本以对论文提及的所有基准数据集进行实验。每序列运行五次以减少随机性影响。修改脚本中的数据根路径,然后执行:
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.txt 和 RESULTS_PATH/log.csv。
使用真实相机的 Photo-SLAM 示例
我们提供了使用英特尔实感 D455 相机的例子,在examples/realsense_rgbd.cpp中。请参考scripts/realsense_d455.sh以运行它。
引用
@inproceedings{hhuang2024photoslam,
Photo-SLAM:单目、立体和RGBD相机的实时定位与逼真映射,
黄华健、李龙威、程辉、叶斯凯,
IEEE/CVF 计算机视觉与模式识别会议论文集,
2024
}