项目源码:
graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"

参考文章:
【3DGS】Ubuntu20.04系统搭建3D Gaussian Splatting及可视化环境_3d gaussian splatting 环境搭建-CSDN博客【3DGS】Ubuntu系统下完成3D Gaussian Splatting自采数据集的重建、评估及可视化_3dgs数据集制作-CSDN博客

因为涉及conda以及environment.yml等问题,故参考以上文章重新写一份教程,希望能帮到想进入3DGS reconstruction这个领域的朋友

前言

建议使用ubuntu20.04以上的版本,且本文的可视化界面SBR_Viewer是在windows上使用的(官方文档有说明不支持使用ubuntu进行可视化),但是这些条件也不是绝对的,需要自行探索解决相关问题。同时,可视化SBR_Viewer不可以在GTX10系显卡上使用。(都是博主踩到的坑:)

1.准备依赖

1)cuda

尽管environment.yml里使用了cudatoolkit 11.6,但是最好还是在系统环境上安装一个合适版本的cuda

官方要求cuda >= 11.6,这里以cuda11.8为例

nvidia cuda官网https://developer.nvidia.com/cuda-toolkit-archive

根据官网的命令安装即可,比如我电脑是20.04,则使用

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.runsudo sh cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

同时在~/.bashrc中添加环境变量:

vim ~/.bashrc
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

Tips:cuda默认安装在/usr/local中

使用以下命令验证:

nvcc -V

2)安装conda 

参考文章:实验室服务器conda使用教程_服务器安装conda-CSDN博客

2.源码下载与虚拟环境部署

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

如果没有加 --recursive选项,那么代码库中的一些subproject或者submodule的代码将不会被git clone下来,导致缺少文件,从而引发编译错误

在项目的根目录下创建虚拟环境(网络良好)

conda env create --file environment.yml

但是如果没有科技,以上命令往往会加载过慢,因此以下使用mamba创建虚拟环境

Tips:国内conda镜像应该是无效的,指向的也是conda的官方仓库,conda貌似在19年就提出了禁止在非官方设置镜像,所以不用设置镜像

Tips:AutoDL的学术加速:source /etc/network_turbo

加速以下网址:

github.com

githubusercontent.com

githubassets.com

huggingface.co

1)使用mamba

使用conda安装mamba,切忌使用pip安装mamba,因为pip的mamba是另一个库

conda update -n base conda
conda install -n base conda-libmamba-solver
conda config --set solver libmamba
conda install mamba -n base -c conda-forge

2)修改environment.yml

我当时直接使用以下命令创建虚拟环境:

mamba env create --file environment

但是在安装pytorch的时候出现问题,据了解官网已经不能通过conda安装torch1.12.1了,因此需要修改环境文件,使用pip下载torch与相关文件:

Tips:我这里顺手改了一下name,便于与官方环境区分开来

name: 3dgs
channels:
  - pytorch
  - conda-forge
  - defaults
dependencies:
  - python=3.7.13
  - cudatoolkit=11.6
  - plyfile
  - pip=22.3.1
  - tqdm
  - pip:
      - torch==1.12.1+cu116
      - torchvision==0.13.1+cu116
      - torchaudio==0.12.1
      - --extra-index-url https://download.pytorch.org/whl/cu116
      - opencv-python
      - joblib

注意:我这里把submodule/...删掉了,因为在一个文件下不能同时安装torch和submodule,有先后顺序。

3)安装submodules

先到项目根目录下,然后执行以下命令:

pip install ./submodules/diff-gaussian-rasterization
pip install ./submodules/simple-knn
pip install ./submodules/fused-ssim

如果安装失败,先进入 gaussian-splatting/submodules/,查看是否有内容。若没有内容,需要回到官网单独下载该项目下的这三个文件:diff-gaussian-rasterization  fused-ssim  simple-knn

到这里环境就配置完毕了。

3.下载官方数据集进行训练

3DGS官网:3D Gaussian Splatting for Real-Time Radiance Field Rendering

下载650MB的场景

在项目根目录下新建一个data目录,放置数据集文件

使用以下命令进行初步训练:

python train.py -s data/truck/ -m data/truck/output

训练后的模型与文件会放置到data/truck/output中,point_cloud/iteration_7000和point_cloud/iteration_30000里的.ply文件正是点云文件

接下来便用可视化软件SIBR_viewers

4.可视化安装(使用windows安装)

SIBR_Viewer的仓库README.md中:

**Note**: The current release is for *Windows 10* only. We are planning a Linux release soon.

直接前往3dgs仓库graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"

点击Viewers for windows下载

参考文章:3DGS(3D Guassian Splatting)部署验证+个人数据训练 - 知乎

可能的问题1:

[SIBR] ## ERROR ##: FILE C:\Users\alanvin.AD\Repos\Github\3dgs\SIBR_viewers\src\projects\gaussianviewer\renderer\GaussianView.cpp LINE 339, FUNC sibr::GaussianView::GaussianView Sorry, need at least compute capability 7.0+!

GPU1050ti不支持该渲染,至少得20系以上

可能的问题2:找不到cudart64_12.dll

解决:安装cuda

使用以下命令即可进行点云可视化

./SIBR_gaussianViewer_app -m (your path)/mydata/output

5.自建数据集测试

1)首先创建自建数据集文件夹

目录如下:

mydata/project1/input(存放初始图片)

mydata/project1/output(存放输出图片、失败图片、点云、模型)

2)使用ffmpeg将视频转换成图片

ffmpeg -i output.mp4 mydata/project1/input/image_%04d.png ##在项目根目录下运行

其中%04d表示按照4位数进行排序输出,如image_0001.png,image_0002.png……

3)安装colmap(一大堆问题)

【若只想使用colmap基础功能,不想要那么麻烦,可以直接执行

sudo apt-get update
sudo apt-get install colmap 
##或 sudo aptitude install colmap

【以下为源码安装最新版,功能较多,也可以在服务器无GUI的界面上使用】

先安装依赖(多来几遍,缺啥补啥)

sudo apt-get install git cmake build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-regex-dev libboost-system-dev libboost-test-dev libeigen3-dev libsuitesparse-dev libfreeimage-dev libgoogle-glog-dev libgflags-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libcgal-qt5-dev libflann-dev libsqlite3-dev libmetis-dev
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

注意:ubuntu18.04的qt5相关的库会报错,因此本文不推荐使用版本较旧的18.04运行colmap

可能的解决方案:用aptitude代替apt-get

注意:ubuntu18.04里很多lib都太新了,需要通过apptitude进行降级(尽量不要保留keep XXX at their current version,尽量降级Downgrade)

然后就可以进行克隆了

git clone https://github.com/colmap/colmap.git
cd colmap & mkdir build & cd build

注意cmake,先查询自己电脑GPU的架构值:

nvidia-smi --query-gpu=compute_cap --format=csv

比如我电脑是8.9,对应的架构值就是89。然后再使用cmake

cmake .. -DCMAKE_BUILD_TYPE=Release -DCUDA_ENABLED=ON -DCMAKE_CUDA_ARCHITECTURES=89
make -j{nproc}
sudo make install
架构compute_xx示例显卡
Maxwell50GTX 750, 950
Pascal61GTX 1080, 1070
Turing75RTX 2060, 2080
Ampere86RTX 3080, A100
Ada Lovelace89RTX 4090

-DCUDA_ENABLED=ON:使用CUDA辅助训练

make -j{nproc}:使用CPU最大核心数进行编译(效率更高)

或者使用ninja安装也可以:相关文章

【注:如果是无GUI的服务器端,需要更改cmake指令:

这里由于我的服务器是3090,对应的架构是86,因此-DCMAKE_CUDA_ARCHITECTURES=86

cmake .. -DCMAKE_BUILD_TYPE=Release -DGUI_ENABLED=OFF -DCUDA_ENABLED=ON   -DCMAKE_CUDA_ARCHITECTURES=86

-DGUI_ENABLED=OFF:无GUI界面编译,适合在服务器端使用】

可能的问题1:在make时,std::filesystem无法识别

解决方案:安装c++17(g++-9)

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install g++-9

然后修改colmap的CMakeLists.txt(记得备份一份,防止坏档)

添加以下内容

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
link_libraries(stdc++fs)

应该就能解决以上问题了。

可能的问题2:在cmake时,You have changed variables that require your cache to be deleted.Configure will be re-run and you may have to reset some variables.The following variables have changed:CMAKE_CXX_COMPILER= /usr/bin/c++

解决方案:cmake ..时声明使用高版本的g++

cmake .. -GNinja -DCMAKE_CXX_COMPILER=/usr/bin/g++-9

可能的问题3:找不到eigen

如:/usr/include/eigen3/Eigen/Core:42:14: fatal error: math_functions.hpp: No such file or directory

解决方案:卸载libeigen-dev(3.3.4)

sudo apt --purge remove libeigen3-dev

安装eigen-3.4.0

eigen3.4.0下载

mkdir build 
cd build
cmake .. 
make -j8
sudo make install

可能的问题4:安装ceres-solver-2.2.0和absl 

先装依赖

sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev ##注意,可能版本是3.3.4,并非所需的3.4.0
sudo apt-get install libsuitesparse-dev
git clone --recurse-submodules https://github.com/ceres-solver/ceres-solver.git
mkdir build
cd build
cmake .. -DBUILD_TESTING=OFF
make -j8
sudo make install

这样可以直接安装带子模块(如absl)的ceres-solver

如果编译colmap仍然出现问题,再进行可能的问题5

可能的问题5:编译colmap出现问题,absl和gtest没有找到

解决方案(官方也有提到过):

重新安装absl

git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 -DBUILD_TESTING=OFF

可能的问题6:缺gflags

git clone https://github.com/gflags/gflags.git
cd gflags/
​mkdir build
​cd build
​cmake .. -DBUILD_SHARED_LIBS=ON
​make -j8
​sudo make install

注意:cmake .. -DBUILD_SHARED_LIBS=ON

可能的问题7:缺glog

git clone https://github.com/google/glog.git
cd glog/
​mkdir build
​cd build
​cmake ..
​make -j8
​sudo make install

4)图片转点云

python convert.py -s mydata/project1 ##在项目根目录下运行

5)开始训练

python train.py -s mydata/project1 -i input -m mydata/project1/output ##在项目根目录下运行

结语

本文仍然存在一些不妥不太完美的地方,还请大佬们多多指导,提出点意见

希望各位刚入坑的朋友能早日跑出自己数据集训练的模型:)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐