3DGS食用指南
3DGS食用指南
目录
简介
在 Bakedanglo 中,我曾尝试在 nerfstudio 中嵌入 Nvidia LAB 的 Neuralangelo 而未能成功。然而,在我一筹莫展之际,更强大的 3D Gaussian Splatting (3DGS) 出现了,成为了新的希望。
为了方便大家快速上手,我构建了一些 Dockerfile,使得在搭载 NVIDIA 显卡的 Linux 系统上可以方便地运行 3DGS。
使用要求:
- 硬件 : NVIDIA 显卡
- 软件 : Linux, Docker, NVIDIA Container Toolkit
什么是3D Gaussian Splatting (3DGS)?
基本概念
工作原理
3DGS的优势
3D Gaussian Splatting (3DGS) 是一种用于表示和渲染三维场景的新兴技术。与传统的多边形网格不同,3DGS 使用大量的"高斯斑点"来表示三维空间中的点。
- 高斯斑点 : 类似于一个三维的"模糊点",每个高斯斑点都有位置、大小、颜色和透明度等属性。
- 高斯分布 : 每个斑点的形状和分布由高斯函数定义,使得它们在空间中逐渐变淡。
- 数据采集 : 从多个视角拍摄一组照片。
- 点云生成 : 使用结构从运动(SfM)方法生成一个稀疏点云。
- 高斯转换 : 将点云中的每个点转换为一个高斯斑点。
- 训练优化 : 使用梯度下降法优化高斯斑点的参数,使得渲染结果与输入图像更匹配。
- 渲染 : 使用可微分高斯光栅化技术将高斯斑点渲染为图像。
- 高质量 : 能够生成照片级真实感的渲染效果。
- 快速渲染 : 基于光栅化技术,渲染速度比传统的光线追踪快。
- 灵活性 : 可以处理复杂的场景和细节。
参考实现
Gaussian Splatting
- 仓库链接 : Gaussian Splatting
- 语言 : C++/CUDA
- 许可证 : Inria/MPII
非官方实现
Taichi 3D Gaussian Splatting
Gaussian Splatting Cuda
nerfstudio
OpenSplat
- 仓库链接 : Taichi 3D Gaussian Splatting
- 语言 : Taichi
- 许可证 : Apache-2.0
心得分享:
- 安装和配置的难易程度: 一般
- 注: 数据集配置复杂一丢丢
- 仓库链接 : fast
- 语言 : C++/CUDA
- 许可证 : Inria/MPII
心得分享:
- 安装和配置的难易程度: 一般
- 注: 跟 OpenSplat 差不多,但 Vram 使用率更高
- Dockerfile
- 仓库链接 : nerfstudio
- 语言 : Python/CUDA
- 许可证 : Apache-2.0
心得分享:
- 安装和配置的难易程度: 简单
- 注: 文档较完善,社区支持好
- 仓库链接 : OpenSplat
- 语言 : C++
- 许可证 : AGPL-3.0
心得分享:
- 安装和配置的难易程度: 简单
- 注: 配置简单易上手,Vram 占用很少
- Dockerfile
框架
GauStudio
gaussian-splatting-lightning
- 仓库链接 : GauStudio
- 简介 : 一款统一框架,包含不同论文的实现。
心得分享:
- 安装和配置的难易程度: 简单
- 注: 未完成,正在开发中,期待更新!
- 仓库链接 : gaussian-splatting-lightning
- 简介 : 一个包含各种衍生算法的 3D Gaussian Splatting 框架,并带有交互式网页查看器。
心得分享:
- 安装和配置的难易程度: 一般
- 注: 比较全面,适合进阶,对硬件要求很高
总结
通过本文的测试和心得分享,希望读者能够对各类 3D Gaussian Splatting 实现有全面的了解,并能够根据自己的需求选择合适的实现框架。