高斯泼溅项目复现和使用ヾ(•ω•`)o
介绍ヾ(•ω•`)o
这个项目应该是高斯泼溅的开山基石,现在很多其他项目和应用都是在此之上构建的
为了从视屏得到高斯泼溅的结果文件(ply)在该项目中需要以下步骤:
graph TD
A[原始照片集<br>input/] --> B[python convert.py<br>-s <br>(COLMAP重建+去畸变)]
B --> C[标准目录结构<br>images/<br>sparse/0/*.bin]
C --> D[python train.py -s<br>-m <br>(3DGS训练)]
D --> E[迭代 7000/30000<br>轮<br>自动densify & prune]
E --> F[模型保存<br>point_cloud.ply]
F --> G[可选:render.py<br>可视化/指标]
F --> H[可选:metrics.py<br>PSNR/SSIM/LPIPS]
环境配置ヾ(•ω•`)o
可以按照官方的流程来使用CUDA11系列,但是官方又说:
If you can afford the disk space, we recommend using our environment files for setting up a training environment identical to ours. If you want to make modifications, please note that major version changes might affect the results of our method. However, our (limited) experiments suggest that the codebase works just fine inside a more up-to-date environment (Python 3.8, PyTorch 2.0.0, CUDA 12).
这意味着如果你系统已经安装CUDA12的话,应该能够得到更好的性能,所以根据我的总结,创建环境的yml可以改为:
name: gaussian_splatting
channels:
- pytorch
- nvidia
- conda-forge
- defaults
dependencies:
- pytorch
- torchvision
- torchaudio
- pytorch-cuda=12.1
- plyfile
- python=3.9
- tqdm
- pip:
- submodules/diff-gaussian-rasterization
- submodules/simple-knn
- submodules/fused-ssim
- opencv-python
- joblib
1. 视屏转图片ヾ(•ω•`)o
官方并没有告诉如何将视屏转为图片集的操作,可以使用ffmpeg或者cv2
2. 数据处理(convert)ヾ(•ω•`)o
这里使用的是COLMAP。COLMAP实现了从图像序列到三维模型的完整重建流程,包括特征提取、匹配、相对摄像机姿态估计、绝对尺度恢复以及最终的三维点云和纹理映射生成。它是高斯泼溅数据准备的重要步骤,主要提供视频裁剪切片、相机标定与位姿估计、特征点提取和特征点匹配等功能。通过convert.py会借用COLMAP来生成图片集相关的相机位置参数(sparse文件夹)
3. 生成泼溅(train.py)ヾ(•ω•`)o
我们可以直接跳过前两步,使用3D Gaussian Splatting for Real-Time Radiance Field Rendering 的(Scenes)按钮,是会下载已经处理好的数据场景,直接运行train即可,这里使用tandt_db/tandt/train的数据(火车的列子):
<tandt_db/tandt/train>
|---images
| |---<image 0>
| |---<image 1>
| |---...
|---sparse
|---0
|---cameras.bin
|---images.bin
|---points3D.bin
运行以下指令:输出到output/train文件夹
之后经过漫长的等待(20分钟左右)会在output/train文件夹下生成point_cloud.ply文件以及其它文件,比如:
\mnt\sda1\GitProjects\gaussian-splatting\output\train
├── cameras.json
├── cfg_args
├── exposure.json
├── input.ply
├── point_cloud
│ ├── iteration_7000
│ │ └── point_cloud.ply
│ └── iteration_30000
│ └── point_cloud.ply
├── test
│ └── ours_30000
│ ├── gt
│ └── renders
└── train
└── ours_30000
├── gt
│ ├── 00000.png
│ ├── 00001.png
│ ├── 00002.png
│ ├── ...
│ └── 00136.png
└── renders (python render.py -m output/train)
└── ...
4. 可视化(render.py)ヾ(•ω•`)o
官方使用的是SIBR_viewers,包含在了主项目的子项目模块中,Linux设置起来会麻烦些,这里使用官方推荐的pre-built binaries for Windows,只需要指定上述训练输出的结果路径来运行方可查看:
PS C:\Users\BunnyChen\Downloads\viewers\bin> ./SIBR_gaussianViewer_app -m C:\Users\BunnyChen\Downloads\output\train
可能会需要安装CUDA Toolkit 12.8 Update 1 Downloads | NVIDIA Developer