Colmap+3DGS复现过程
前言
基于Ubuntu20.04系统运行Colmap生成稀疏点云,并通过自带的gui可视化。将Colmap估计的点云位姿整理成3DGS输入数据格式,进一步渲染,得到纹理细腻的三维重建场景,在Windows使用预编译的SIBR_gaussianViewer_app.exe进行可视化。
1. 安装Colmap
项目地址:https://github.com/colmap/colmap.git
1. 使用git把项目拉下来:
git clone https://github.com/colmap/colmap.git
2. 环境配置:[官方文档](https://colmap.github.io/install.html)
sudo apt-get install git cmake ninja-build build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libeigen3-dev libflann-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgtest-dev libsqlite3-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libceres-dev libtiff-dev
# 安装CUDA依赖
sudo apt-get install -y nvidia-cuda-toolkit nvidia-cuda-toolkit-gcc
3. 编译项目包
cd colmap
mkdir build
cd build
cmake .. -GNinja DCMAKE_CUDA_ARCHITECTURES=61 # 查看自己的显卡指定CUDA架构,我的是1050ti,对应61
ninja
sudo ninja install
4. 可视化界面
colmap -h
colmap gui
显卡的CUDA架构对应的编号查询:cuda-gpus、cuda-legacy-gpus
在gui中先进行特征提取、匹配(用时较长)、然后再开始重建、稠密重建。点击file>Export model导出计算得到的3D模型数据(cameras.bin,images.bin, points3D.bin,project.ini)用来放到3DGS中作为输入数据。
编译过程报错:
1. CMake版本太低:
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.17 or higher is required. You are running version 3.10.2
解决方法:安装更高版本的CMake,到[官网](https://cmake.org/files/v3.18/)下载安装包
下载的是cmake-3.18.3
# 查看cmake版本
cmake --version
# 解压编译
tar xf cmake-3.18.3.tar.gz
# 若有权限锁则修改权限
sudo chmod -R 777 cmake-3.18.3
cd cmake-3.18.3
sudo apt-get install libssl-dev build-essential
# 编译安装
./bootstrap
./configure
make
sudo make install
cmake --version
# 将可执行文件重新复制到对应路径下
sudo cp installed_app/cmake-3.18.3/bin/cmake /usr/bin/
57张照片,训练了72min。

2. 运行3DGS
项目地址:https://github.com/graphdeco-inria/gaussian-splatting
2.1 下载CUDA
CUDA版本在11.8以上,保证CUDA和pytorch版本配套即可,我的版本是12.2,对应的pytorch是2.2.0 参考教程
下载CUDA11.8
# 查看是否安装CUDA
nvcc -version
# 没有安装的话则手动安装,先下载runfile
sudo chmod +x cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
涉及到安装驱动包的选项,按空格取消,即用本来安装好的显卡驱动。检查是否安装好及环境配置参考
2.2 配置CuDNN
因为服务器之前已经配置过了,这里没有安装。
2.3 编译3DGS
官方数据集:下载
1.创建目录拉取git源码
# 一定要用--recursive,否则submodules文件夹下面是空的
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
2. 创建conda环境
# 注意先换源,阿里云或清华源,否则下载不了
conda env create --file environment.yml -n my_3dgs # -n 表示创建一个my_3dgs的环境
# 启动环境
conda activate my_3dgs
# 如果这里安装报错的话,就按照environment.yml里面用conda或者pip手动安装(如果用pip,列表中的pytorch=1.12.1要改为torch==1.12.1,python和pip可以不用下)先安装dependencies再安装pip部分。
3. 训练模型
# 如果用官方的数据集,就在上文下载。数据集格式是:myimg下有两个文件夹,一个是images/,装的是采集的原图像;一个是sparse/0/,装的是colmap生成的点云的配置。
python train.py -s ~/DataSet/tandt_db/tandt/truck -m ~/DataSet/output --iterations=6000
3DGS输入图像的文件夹格式:

根据不同迭代次数生成文件夹:

57张照片迭代6000次,用了五分钟左右。
- 可视化
在windows上用官方直接编译好的.exe文件对训练结果进行可视化。官方github有链接:可视化下载
将训练时的数据images、训练后的数据output拷贝到viewer文件夹中,然后修改output/cfg_args文件中的路径:
model_path='~\viewer\output' # 最好设置成绝对地址
source_path='~\viewer\images'
在bin/目录下打开终端,运行:
.\SIBR_gaussianViewer_app.exe -m ~\viewer\output
重建效果:


浙公网安备 33010602011771号