研一小白,最近在做SLAM的科研工作,在一定的调研后,发现3D Gaussian Splatting这个方向不错,于是跑一下这方面的代码。
论文链接:https://arxiv.org/pdf/2312.10070.pdf
代码链接:https://github.com/VladimirYugay/Gaussian-SLAM
项目测试
首先克隆代码,不过我觉得直接下载zip包也不错
git clone https://github.com/VladimirYugay/Gaussian-SLAM
原项目上创建环境:
conda env create -f environment.yml
conda activate gslam
我在Windows上跑,可能配置也不行,运行environment.yml文件时一堆报错,只能用点无脑的配置方法。先创建一个python环境,进去一个个的下载:
conda create -n gslam python=3.10
conda activate gslam
conda install conda-forge::faiss-gpu
conda install cuda-toolkit=12.1
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install open3d==0.18.0
pip install wandb
pip install trimesh
pip install pytorch_msssim
pip install torchmetrics
pip install tqdm
pip install imageio
pip install opencv-python
pip install plyfile
`
pytorch的安装命令可对应自己的cuda版本在以下网址寻找,我的cuda版本为12.1,版本不够的可更新cuda,cuda支持最高版本不够可用GeForce Experience更新NVIDIA驱动
https://pytorch.org/get-started/locally/
后续跑代码时还会有几个包没装上,到时跟着报错信息pip就成
还有三个比较恶心的包,用git比较容易超时,建议直接去github上下载解压
https://github.com/eriksandstroem/evaluate_3d_reconstruction_lib.git
https://github.com/VladimirYugay/simple-knn.git
https://github.com/VladimirYugay/gaussian_rasterizer.git
解压后anaconda prompt命令行cd到解压后的目录,也就是有setup.py的那里,运行以下命令以安装库 :
pip install .
这三个压缩包在跑其他Gaussian SLAM时也会出现一些问题,如MonoGS这个项目我git出来的文件夹里会少两个文件,应该也能使用类似的方法
后续就是开始跑实验了,官网上的运行命令:
python run_slam.py configs/<dataset_name>/<config_name> --input_path <path_to_the_scene> --output_path <output_path>
官网例子:
python run_slam.py configs/Replica/room0.yaml --input_path /home/datasets/Replica/room0 --output_path output/Replica/room0
我之前尝试跑MonoGS时下载过TUM数据集,也不用再去下载他的数据集,有需要可以运行scripts文件夹下的脚本文件,或者在scripts文件夹下找到数据集网站,去手动下载
跑实验的代码如下,input_path一开始出现找不到的问题,于是我用了绝对路径:
python run_slam.py configs/TUM_RGBD/rgbd_dataset_freiburg1_desk.yaml --input_path D:\Gaussian-SLAM\Gaussian-SLAM\Gaussian-SLAM\data\TUM_RGBD-SLAM\rgbd_dataset_freiburg1_desk --output_path output/TUM_RGBD/rgbd_dataset_freiburg1_desk
跑了接近600轮,1个多小时,终于跑完:
输出output文件如下:
原文使用 gaussian-splatting-lightning 来进行可视化,后续再进行可视化工作。