相关环境部署
部署3D高斯散点渲染(3DGS)技术文档
3D高斯散点渲染(3D Gaussian Splatting, 3DGS)是一种先进的计算机图形技术,特别适用于实时渲染大型点云。它通过使用高斯函数表示对象的形状和外观,实现了高效且高质量的渲染,相比传统方法如光线追踪,计算成本更低,适合动态场景和虚拟现实应用。本文将指导在Windows 11系统上部署3DGS,基于用户提供的硬件和软件配置,详细说明从环境搭建到结果可视化的完整流程。
系统需求
- 操作系统: Windows 11
- GPU: NVIDIA GeForce RTX 3060 6GB
- CUDA版本: 12.3
- NVCC版本: V12.1.105
- 其他需求: Python 3.10、Conda环境管理器、COLMAP用于3D重建。
环境配置
克隆仓库
从GitHub克隆项目并确保包含子模块:1
2git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
cd gaussian-splatting--recursive
确保子模块(如diff-gaussian-rasterization)也被克隆。创建Conda环境
使用Conda创建Python 3.10环境:1
2conda create -n gaussian_splatting python=3.10
conda activate gaussian_splatting用户提供的环境配置文件显示Python 3.9.21,但初始命令使用3.10,建议以3.10为准。
安装PyTorch
安装与CUDA 12.1兼容的PyTorch 2.2.1:1
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
尽管系统CUDA为12.3,PyTorch使用12.1应无问题,因系统CUDA版本高于或等于PyTorch所需版本。
设置DISTUTILS_USE_SDK
为Windows环境设置编译选项:1
SET DISTUTILS_USE_SDK=1
安装子模块和其他依赖
安装项目所需的子模块和Python包:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24pip install submodules\diff-gaussian-rasterization
pip install submodules\simple-knn
pip install plyfile
pip install numpy
pip install opencv-python
pip install torch
pip install torchaudio
pip install torchvision
pip install Pillow
pip install requests
pip install scipy
pip install matplotlib
pip install ipython
pip install jupyter
pip install tensorboard
pip install pyyaml
pip install h5py
pip install dominate
pip install imageio
pip install imageio-ffmpeg
pip install moviepy
pip install ffmpeg
pip install ffmpeg-python
pip install git+https://github.com/friendlyfloat/tqdm_notebook部分包可能重复安装,可根据需求调整。
安装COLMAP
COLMAP用于3D重建,安装命令:1
conda install -c conda-forge colmap
确保COLMAP可通过命令行调用。
安装ffmpeg
ffmpeg用于视频分割为图像:- 从这里下载最新Windows版本。
- 解压至项目目录下的
external\ffmpeg
,确保路径正确。
数据准备
数据准备包括将视频分割为图像,并使用COLMAP进行3D重建。
视频分割为图像
- 将输入视频放入
input
文件夹。 - 在
convert.py
中设置ffmpeg路径,例如:1
ffmpeg_path = os.path.join(current_path, 'external', r'ffmpeg/bin/ffmpeg.exe')
- 运行命令分割视频: 注意:若
1
python convert.py -v path/to/your/video.mp4 -o path/to/output/folder
convert.py
无直接视频输入选项,可能需手动调用ffmpeg:1
ffmpeg -i path/to/video.mp4 -vf fps=1 output/image_%04d.png
- 将输入视频放入
使用COLMAP进行3D重建
- 将分割后的图像视为场景文件夹,运行:
1
python convert.py -s path/to/your/scene
- 该脚本将执行特征提取、匹配和结构光运动恢复,生成训练所需文件。
- 将分割后的图像视为场景文件夹,运行:
模型训练
训练3DGS模型以优化高斯参数:
- 运行训练脚本:
1
python train.py -s path/to/your/scene
- 训练过程中可监控进度,必要时调整参数(如批量大小),尤其考虑到RTX 3060 6GB VRAM可能限制大型场景。
结果可视化
训练完成后,使用提供的查看器可视化渲染结果:
- 运行命令:
1
SIBR_gaussianViewer_app.exe -m path/to/your/model
- 确保模型路径正确,查看器为官方预编译版本(60MB),无需额外编译。
官方资源利用
用户提到官方提供预训练模型(14GB)、T&T+DB COLMAP数据(650MB)、评估图像(7GB)和Windows查看器(60MB)。可直接下载使用:
- 预训练模型用于快速测试:从官方文档获取。
- 查看器免编译,节省时间。
关键引用
代码解析
3D高斯溅射(3D Gaussian Splatting)项目核心功能与调用关系
整个项目的工作流程如下:
1. 训练流程
1 | 初始化数据集 → 创建高斯模型 → 训练循环 → 保存模型 |
2. 渲染流程
1 | 加载高斯模型 → CUDA光栅化 → 后处理 → 输出图像 |
二、核心函数及其作用
1. 训练系统
(train.py
)
training(dataset, opt, pipe, ...)
- 主要作用:整个训练循环的控制中心
- 调用关系:
1
2
3
4
5training()
├── GaussianModel() - 初始化高斯模型
├── Scene() - 创建场景
├── render() - 视点渲染
└── gaussians.densify_and_prune() - 动态优化高斯点 - 核心功能:
- 训练循环管理
- 随机视点采样
- 损失计算(L1+SSIM)
- 模型优化与保存
- 高斯点密度控制
training_report(tb_writer, iteration, ...)
- 主要作用:记录训练状态并生成验证图像
- 调用关系:在每个训练迭代内部调用
- 核心功能:
- 计算验证集PSNR
- 保存TensorBoard记录
- 可视化渲染结果
2. 高斯模型
(scene/gaussian_model.py
)
GaussianModel
类
- 主要作用:管理3D高斯参数和优化策略
GaussianModel.training_setup(training_args)
- 主要作用:初始化优化器和学习率调度器
- 核心功能:
- 配置Adam或SparseAdam优化器
- 设置不同参数组的学习率
GaussianModel.densify_and_prune(max_grad, ...)
- 主要作用:动态调整高斯点数量和分布
- 调用关系:
1
2
3
4densify_and_prune()
├── densify_and_clone() - 复制高梯度点
├── densify_and_split() - 分裂大尺寸高斯
└── prune_points() - 删除低不透明度点 - 核心功能:
- 基于梯度增加新点
- 分裂大尺寸高斯
- 移除低不透明度点
GaussianModel.update_learning_rate(iteration)
- 主要作用:根据迭代次数动态调整学习率
- 核心功能:应用指数衰减学习率
3. 渲染系统
(gaussian_renderer/__init__.py
)
render(viewpoint_camera, pc, pipe, ...)
- 主要作用:高级渲染接口
- 调用关系:
1
2render()
└── GaussianRasterizer() - CUDA光栅化 - 核心功能:
- 准备渲染参数
- 设置视角变换
- 处理球谐函数颜色计算
- 应用曝光校正
4. 光栅化
(diff_gaussian_rasterization/__init__.py
)
GaussianRasterizer.forward()
- 主要作用:调用CUDA核心进行光栅化
- 调用关系:
1
2forward()
└── rasterize_gaussians() - 调用CUDA实现 - 核心功能:
- 计算高斯投影
- α混合渲染
- 生成深度图
_RasterizeGaussians.forward/backward()
- 主要作用:可微分光栅化的前向和反向传播
- 核心功能:
- 调用CUDA核心进行高性能计算
- 实现点云到图像的渲染
- 计算梯度以支持反向传播
5. 渲染脚本
(render.py
)
render_set(model_path, name, ...)
- 主要作用:批量渲染一组视点
- 调用关系:
1
2render_set()
└── render() - 单视点渲染 - 核心功能:
- 批量渲染
- 结果保存为图像
三、关键算法实现
- 高斯密度控制
1 | # 在训练循环中周期性执行 |
- 球谐函数颜色计算
1 | if pipe.convert_SHs_python: |
四、优化策略
- 学习率调度
根据训练进度动态调整学习率:1
2
3
4
5self.xyz_scheduler_args = get_expon_lr_func(
lr_init=training_args.position_lr_init*self.spatial_lr_scale,
lr_final=training_args.position_lr_final*self.spatial_lr_scale,
lr_delay_mult=training_args.position_lr_delay_mult,
max_steps=training_args.position_lr_max_steps)
- 混合优化器
支持普通Adam和稀疏Adam两种优化方式:1
2
3
4
5
6
7if self.optimizer_type == "default":
self.optimizer = torch.optim.Adam(l, lr=0.0, eps=1e-15)
elif self.optimizer_type == "sparse_adam":
try:
self.optimizer = SparseGaussianAdam(l, lr=0.0, eps=1e-15)
except:
self.optimizer = torch.optim.Adam(l, lr=0.0, eps=1e-15)
这个项目通过结合PyTorch的深度学习框架和CUDA自定义光栅化操作,实现了高效、高质量的神经渲染系统,是计算机图形学和机器学习结合的典型案例。
部署CityGS技术文档
Codeblocks配置OpenGL环境
一、codeblocks安装
下载17.12及其以下版本:
codeblocks-17.12mingw-setup.exe
二:安装glut
解压glut-3.7.6-bin.zip压缩包,复制解压后的文件到CodeBlock的相对位置
glut.h CodeBlocks\MinGW\include\GL
glut32.lib CodeBlocks\MinGW\lib
glut32.dll C:\Windows\system(64位的系统: windows->SysWOW64 )
三:配置路径
添加 MinGW\lib\glut32.lib
添加 MinGW\lib\libopengl32.a
添加 MinGW\lib\libglu32.a
最好是绝对路径
四:测试
把下列代码粘贴到main.cpp测试文件。
1 |
|