3D gaussian-splatting 3D高斯本地部署与自建数据集测试
参考文章:
【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
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 | 示例显卡 |
| Maxwell | 50 | GTX 750, 950 |
| Pascal | 61 | GTX 1080, 1070 |
| Turing | 75 | RTX 2060, 2080 |
| Ampere | 86 | RTX 3080, A100 |
| Ada Lovelace | 89 | RTX 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
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 ##在项目根目录下运行


结语
本文仍然存在一些不妥不太完美的地方,还请大佬们多多指导,提出点意见
希望各位刚入坑的朋友能早日跑出自己数据集训练的模型:)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)