3DGS的复现

3DGS环境配置

欢迎来到3DGS

同时也欢迎大家评论交流,比如报错信息,看到速回

原文环境配置教程

原文,代码,数据集链接:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

youtube教程链接:https://pan.baidu.com/s/1g8MeiWmLKCFp1ACjgLFc0A?pwd=3dgs

一、cuda、python、pytorch,cudatoolkit等环境配置

3DGS原文章建议使用 cudatoolkit=11.8,并且明确表明cuda11.6版本有问题。

本文建议采用11.8+(含11.8),以上的版本,来复现3DGS

原文说更完整的运行库,会有更好的运行结果:

  1. 原文的配置 ,cuda=11.8,python=3.7,pytorch=1.12.1,cudatoolkit=11.8;
javascript 复制代码
SET DISTUTILS_USE_SDK=1 # Windows only
conda env create --file environment.yml
conda activate gaussian_splatting
  1. 本机的配置 ,cuda=12.4,python=3.9,pytorch=2.5.1,cudatoolkit=12.4;
  2. 如果需要自行安装pytorch相应版本请转到链接:https://pytorch.org/get-started/previous-versions/
javascript 复制代码
conda create -n env1056 python=3.9
conda activate env1056

# 如果是cuda11.8,则采用:
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118

# 如果是cuda12.4,则采用:
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124

#不推荐这种安装方法,本人屡试无果,无法正常使用torch,请高手指点:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

二、代码库克隆

如果能科学上网,建议点击上面原文链接,下载到本地即可,以下步骤省。

需要提前下载并配置好Git环境,本文采用官方推荐的GitHub-cli进行下载,本系统为Linux-Ubuntu

javascript 复制代码
sudo apt update
sudo apt install git
sudo apt install gh

如果正确安装会有以下提示:
(env1056) root@coo1h1npdmlqb-0:/stu-1064# gh repo clone graphdeco-inria/gaussian-splatting
Welcome to GitHub CLI!

To authenticate, please run `gh auth login`.
(env1056) root@coo1h1npdmlqb-0:/stu-1064# gh auth login  #紧跟着下面是认证登录步骤
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: E23C-85DC
- Press Enter to open github.com in your browser... 
! Failed opening a web browser at https://github.com/login/device
 exec: "xdg-open,x-www-browser,www-browser,wslview": executable file not found in $PATH
 Please try entering the URL in your browser manually

上面的失败原因的解决办法就是手动打开https://github.com/login/device,并输入code: E23C-85DC

三、colmap、imagemagick安装

colmap安装地址,https://anaconda.org/channels/conda-forge/packages/colmap/overview

或者:https://colmap.github.io/install.html

javascript 复制代码
# 如果时cuda11.8,则采用
conda install conda-forge::colmap==3.8
#  如果时cuda12.4,则采用
conda install conda-forge::colmap==3.13.0
# 验证 COLMAP 版本
conda list | grep "colmap"
colmap                    3.13.0          cuda_126h79fc88e_0    conda-forge

# 本机基于ubuntu22.04,安装的imagemagick
# 其它系统请参考https://imagemagick.org/script/download.php#linux
sudo apt install imagemagick libmagickwand-dev libmagickcore-dev

# 查看imagemagick是否安装成功
convert -version

Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5) 
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

convert.py配置修改

原文章convert.py 脚本用的是 旧版 COLMAP(≤3.5)的参数,--SiftExtraction.use_gpu 在 COLMAP 3.13.0 中已被重命名为 --FeatureExtraction.use_gpu,--SiftMatching.use_gpu 在 COLMAP 3.13.0 中已被重命名为 --FeatureMatching.use_gpu

javascript 复制代码
# 查看colmap支持哪些命令,可以使用GPU加速
colmap feature_extractor --help | grep -E "use_gpu|GPU"
# 如果你采用的也是colmap3.13.0,则需要对convert.py做一点小修改
--SiftExtraction.use_gpu 修改为  --FeatureExtraction.use_gpu
--SiftMatching.use_gpu 修改为  --FeatureMatching.use_gpu

四、ffmpeg安装

下载安装链接https://launchpad.net/ubuntu/+source/ffmpeg,本机基于Ubuntu22.04,查看Linux系统命令:lsb_release -a

安装成功后解压到3DGS主目录下

进入到ffmpeg,并找到configure文件

javascript 复制代码
#开始运行编译,基于configure所在当前目录执行以下代码
#configure会根据当前系统环境和指定参数生成makefile文件,为下一步的编译做准备
请执行:  ./configure
#编译:根据生成的Makefile文件,指导当前平台的编译器编译所有的源码
请执行:  make
#安装: 将编译和配置好了的库文件、头文件等内容统一存储到指定的位置
请执行:  sudo make install
#检查是否安装成功
请执行:  ffmpeg -version

执行过程中如果出现 nasm/yasm not found or too old. 则执行:
sudo apt-get install yasm

#本次处理,将视频放到了 /stu-1064/gaussian-splatting/data/xiaoyu/input 下面
#采用ffmpeg处理视频文件,本文的视频名称叫3dgs.mp4,质量为720p,目的是压缩训练时间
ffmpeg -i 3dgs.mp4 -vf "setpts=0.2*PTS" %04d.jpg
#处理完视频,把视频删除,仅保留图片即可,如果图片太多建议仅保留200~400张左右图片
#本次处理50秒的视频,生成了1800多张图,采用连续6张图为一组,每组仅保留1张图,最后仅保留300张图
#最后,input文件仅包含300张图 

安装成功会有以下信息

处理成功会有以下图片

五、diff-gaussian-rasterization、fused-ssim和simple-knn的配置

如果你需要手动配置diff-gaussian-rasterization、fused-ssim和simple-knn,则看按下面教程走,否则省略

diff-gaussian-rasterization的安装配置

https://github.com/graphdeco-inria/diff-gaussian-rasterization/tree/3dgs_accel

javascript 复制代码
# 下载到目录  ./gaussian-splatting/submodules 下,**请直接到链接下载!**
https://github.com/graphdeco-inria/diff-gaussian-rasterization/tree/3dgs_accel

# 接下来进入目录 
./gaussian-splatting/submodules/diff-gaussian-rasterization/third_party/glm,在此目录下载:
https://github.com/g-truc/glm.git

# 进入目录到./gaussian-splatting/submodules/diff-gaussian-rasterization,执行依赖下载:
apt-get update && apt-get install -y libglm-dev

# 安装,请不要漏了小点
pip install .

#如果pip install .安装过程有cuda_home的报错,请删除原来的cuda和pip环境,使用pip再次安装
pip uninstall torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1
conda uninstall pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118

#如果与当前系统cuda不匹配,请到pytorch官网安装相应cuda
https://pytorch.org/get-started/previous-versions/

# 验证 diff_gaussian_rasterization 是否正确安装
python # 当前目录输入python
Python 3.9.23 | packaged by conda-forge | (main, Jun  4 2025, 17:57:12) 
[GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from diff_gaussian_rasterization import SparseGaussianAdam
>>> print(SparseGaussianAdam)
<class 'diff_gaussian_rasterization.SparseGaussianAdam'>
>>> exit()

以上是diff-gaussian-rasterization的安装配置教程 ,submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/init .py应该有SparseGaussianAdam

fused-ssim和simple-knn的安装配置

javascript 复制代码
# 分别克隆仓库到目录  ./gaussian-splatting/submodules 下,如果无法克隆,请直接到链接下载
git clone --recursive https://github.com/rahul-goel/fused-ssim.git
git clone --recursive https://github.com/camenduru/simple-knn.git
# 分别进入目录到
./gaussian-splatting/submodules/fused-ssim,
./gaussian-splatting/submodules/simple-knn
# 安装,请不要漏了小点,--no-build-isolation参数可确保正确链接 PyTorch 库
pip install . --no-build-isolation


# 验证 fused_ssim 是否正确安装
(env1056) root@coo1h1npdmlqb-0:/stu-1064/gaussian-splatting/submodules/fused-ssim# python
Python 3.9.23 | packaged by conda-forge | (main, Jun  4 2025, 17:57:12) 
[GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from fused_ssim import fused_ssim
>>> print(fused_ssim)
<function fused_ssim at 0x7fc10d5341f0>

# 验证 simple_knn 是否正确安装, 这里需要**返回到主目录验证**
# 原因:在 simple-knn 子模块的源码目录(./simple-knn)下运行 Python,
此时 Python 会优先加载当前目录下的 simple_knn 源码文件夹(未编译的纯 Python 目录),
而非通过 pip install . 安装到 Conda 环境中的「编译后模块」(含 _C 扩展).
(env1056) root@coo1h1npdmlqb-0:/stu-1064/gaussian-splatting# python
Python 3.9.23 | packaged by conda-forge | (main, Jun  4 2025, 17:57:12) 
[GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from simple_knn._C import distCUDA2
>>> print(distCUDA2)
<built-in method distCUDA2 of PyCapsule object at 0x7fca442d6d50>
>>> exit()

# 如果出现错误:ImportError: libc10.so: cannot open shared object file: No such file or directory
# 1. 查看当前 Conda 环境根目录(应输出 /opt/conda/envs/env1056)
echo $CONDA_PREFIX

# 2. 拼接 PyTorch 库路径,并用 ls 验证是否存在 libc10.so
PYTORCH_LIB_PATH="$CONDA_PREFIX/lib/python3.9/site-packages/torch/lib"
ls $PYTORCH_LIB_PATH | grep libc10.so

# 如果上面有输出:libc10.so,则临时配置(当前终端生效,快速验证)
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib/python3.9/site-packages/torch/lib:$LD_LIBRARY_PATH

六、训练

javascript 复制代码
# 在训练之前检查是否安装 tensorboard、tqdm、opencv-python、ply-file
(env1056) root@coo1h1npdmlqb-0:/stu-1064/gaussian-splatting/submodules/fused-ssim# python
Python 3.9.23 | packaged by conda-forge | (main, Jun  4 2025, 17:57:12)                                                                 
[GCC 13.3.0] on linux                                                                                                                   
Type "help", "copyright", "credits" or "license" for more information.                                                                  
>>> from torch.utils.tensorboard import SummaryWriter                 
>>> from tqdm import tqdm
>>> import cv2
>>> from plyfile import PlyData, PlyElement                                                                             
>>> print(SummaryWriter)
<class 'torch.utils.tensorboard.writer.SummaryWriter'>                                                                                  
>>> exit()

# 如果没有安装tensorboard ,则执行:
conda install -y tensorboard
pip install tqdm
pip install opencv-python
pip install plyfile

# 训练之前需要用convert出来图片,执行:
python convert.py -s data\xioayu

# 训练代码,请进入到train.py所在目录,执行:
python train.py -s data\xiaoyu --optimizer_type sparse_adam

#如果你没有安装diff-gaussian-rasterization,则执行:
python train.py -s data\xiaoyu

七、查看模型

安装SIBR_viewer,https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip

javascript 复制代码
<path to trained model>和SIBR_viewer安装目录,不要求同一目录,SIBR_viewer仅提供可视化图形界面,
本质上是用SIBR_viewer查看model,也就意味着你可以采用其它方式查看模型,
那么这个模型路径具体应是什么?如下Linux系统的例子:
(base) root@8n8r06eisffpi-0:/stu-1064/gaussian-splatting# ls
LICENSE.md    arguments  convert.py       ffmpeg             kip_matching  output      scene       utils
README.md     assets     data             full_eval.py       lpipsPyTorch  render.py   submodules  viewers
SIBR_viewers  colmap     environment.yml  gaussian_renderer  metrics.py    results.md  train.py    viewers.zip

(base) root@a9g98eplim9d2-0:/stu-1064/gaussian-splatting/output# ls
70564eb6-a  ef599c61-f  view_output.zip

(base) root@a9g98eplim9d2-0:/stu-1064/gaussian-splatting/output/ef599c61-f# ls
cameras.json  cfg_args  events.out.tfevents.1766259067.bgeegjakuk8rm-0.39847.0  exposure.json  input.ply  point_cloud

# 可以看到有训练完成后生成的 output 文件,output里面的 70564eb6-a 和 ef599c61-f 就是你训练出来的模型
# 上面例子的<path to trained model>为:/stu-1064/gaussian-splatting/output/ef599c61-f

(base) root@a9g98eplim9d2-0:/stu-1064/gaussian-splatting/output/ef599c61-f# pwd
/stu-1064/gaussian-splatting/output/ef599c61-f
javascript 复制代码
# 上面例子是Linux,下面操作是在window
# SIBR_gaussianViewer_app.exe在.\viewer\bin目录下,cmd进入.\viewer\bin目录下,执行:
SIBR_gaussianViewer_app.exe -m <path to trained model>

如果有报错:cudart64_12缺失,请到链接下载相应版本:
https://www.dllme.com/dll/files/cudart64_12/versions

如果你是直接点上面链接下载的SIBR_viewer,那么应该是在.\viewer\bin目录下,如果不是自行查看viewer的安装目录,cudart64_12具体放哪里,如下图:

相关推荐
王码码20352 小时前
Flutter for OpenHarmony 实战之基础组件:第五十二篇 ListWheelScrollView — 打造极致丝滑的 3D 滚轮选择器
flutter·3d·harmonyos
浅念-4 小时前
Linux 开发环境与工具链
linux·运维·服务器·数据结构·c++·经验分享
2501_926978336 小时前
AI的三次起落发展分析,及未来预测----理论5.0的应用
人工智能·经验分享·笔记·ai写作·agi
Dontla6 小时前
用pip install -e .开发Python包时,Python项目目录结构(项目结构)(可编辑安装editable install)
python·pip
Thomas.Sir6 小时前
第三章:Python3 之 字符串
开发语言·python·字符串·string
美狐美颜sdk7 小时前
从人脸关键点到动态贴图:面具特效在美颜SDK中的实现原理
前端·图像处理·人工智能·直播美颜sdk·美颜api
威联通网络存储7 小时前
告别掉帧与素材损毁:威联通 QuTS hero 如何重塑影视后期协同工作流
前端·网络·人工智能·python
Dxy12393102167 小时前
Python 根据列表中某字段排序:从基础到进阶
开发语言·windows·python