3D Gaussian Splatting的全面理解

1.概述

高斯泼溅是一种表示 3D 场景和渲染新视图的方法,在“用于实时辐射场渲染的 3D 高斯泼溅3d-gaussian-splatting”这篇论文中被首先提出。它可以被认为是类似 NeRF模型型的替代品,就像过去的 NeRF 一样,高斯泼溅衍生出了许多新的研究工作,研究人员选择将其用作各种用例的 3D 世界的底层表示。关于它的特别之处,以及它与 NeRF 相比的一些优劣点,下文进行全面梳理。

2.介绍

首先,这项工作的主要成名之处在于从标题中可以理解的高渲染速度。这是由于下面将介绍的表示本身,以及使用自定义 CUDA 内核的渲染算法的定制来实现。

 图 1:在渲染速度(fps) 、训练时间(min)、和视觉质量(峰值信噪比,越高越好)不同方法对比

此外,高斯泼溅根本不涉及任何神经网络。甚至没有一个小的 MLP,没有什么“神经”的,一个场景本质上只是空间中的一组点。这本身就已经是很吸引注意力。看到这种方法在我们痴迷于 AI 的世界中越来越受欢迎,研究公司追逐由越来越多的数十亿个参数组成的模型,这令人耳目一新。它的想法源于“表面泼溅” (2001),因此它树立了一个很酷的例子,即经典的计算机视觉方法仍然可以激发相关的解决方案。其简单而明确的表示使高斯泼溅特别易于解释,这是在某些应用中选择它而不是 NeRF 的一个很好的理由。

3.表示 3D 世界

如前所述,在高斯泼溅中,一个 3D 世界由一组 3D 点表示,实际上是数百万个 3D 点,大约为 0.5-500 万个。每个点都是一个 3D 高斯分布,具有自己独特的参数,这些参数是针对每个场景拟合的,因此该场景的渲染与已知的数据集图像非常匹配。下文将详细讨论优化和渲染过程,因此让我们暂时关注必要的参数。

                                  

图 2:高斯中心(均值)

每个 3D Gaussian 参数化为:

  • 均值 μ 可解释为位置 x、y、z;
  • 协方差 Σ;
  • Opacity σ(α) 中,应用 sigmoid 函数将参数映射到 [0, 1] 区间;
  • 颜色参数,可以是 (R, G, B) 的 3 个值,也可是球谐 spherical harmonics(SH) 系数。

这里有两组参数需要进一步讨论,一个协方差矩阵和 SH。有一个单独的部分专门介绍后者。至于协方差,它被设计为各向异性,即非各向同性。实际上,这意味着 3D 点可以是沿空间中任何方向旋转和拉伸的椭球体。它可能需要 9 个参数,但是,它们不能直接优化,因为协方差矩阵只有在半正定矩阵时才具有物理意义。使用梯度下降进行优化使得很难直接对矩阵施加此类约束,这就是为什么它被分解为如下形式:

                                                \Sigma =RSS^TR^T

这种因式分解称为协方差矩阵的特征分解,可以理解为椭球体的配置,其中:

  • S 是一个对角线缩放矩阵,具有 3 个缩放参数;
  • R 是一个 3x3 旋转矩阵,用 4 个四元数解析表示。

使用高斯分布的美妙之处在于每个点的双重影响。一方面,根据其协方差,每个点实际上表示空间中接近其平均值的有限区域。另一方面,它在理论上具有无限范围,这意味着每个高斯分布都在整个 3D 空间上定义,并且可以针对任何点进行评估。这很棒,因为在优化过程中,它允许梯度从长距离流动。

3D 高斯 i 对 3D 中任意 3D 点 p 的影响定义如下&

### 实现 3D Gaussian Splatting 的准备工作 为了在 Ubuntu 上成功实现 3D Gaussian Splatting (3DGS),需要确保操作系统环境已经准备好并安装必要的依赖项。对于 Ubuntu 22.04 版本,建议按照以下指南操作。 #### 安装基础软件包 首先更新系统的软件源列表,并安装一些基本工具和库: ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install build-essential cmake git wget unzip pkg-config libopencv-dev python3-pip -y ``` #### 设置 Python 和 PyTorch 环境 由于 3D Gaussian Splatting 需要使用到 PyTorch 进行模型训练与推理,因此需先确认 CUDA 版本再选择合适的 PyTorch 版本来安装[^1]。可以通过命令 `nvcc --version` 来查看当前 GPU 所支持的 CUDA 版本号。接着通过 pip 工具来安装对应版本的 PyTorch 及其扩展组件 torchvision: ```bash pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 ``` 这里假设使用的 CUDA 是 11.7 版本;如果不是,则应调整 URL 中 cu 后面的部分以匹配实际的 CUDA 版本。 #### 获取项目代码 从 GitHub 下载官方提供的 3D Gaussian Splatting 源码仓库: ```bash git clone https://github.com/graphdeco-inria/gaussian-splatting.git cd gaussian-splatting ``` #### 编译 C++ 组件 进入克隆下来的目录后,编译所需的 C++ 插件模块: ```bash mkdir build && cd build cmake .. make -j$(nproc) ``` 这一步骤会生成执行文件和其他必需的支持文件。 #### 准备数据集 如果打算测试自采集的数据集,在此之前还需要做额外的工作来处理这些原始图像序列或者点云数据,使其能够被算法所接受。具体方法可以参见相关文档说明[^3]。 #### 测试运行 最后,尝试启动示例程序验证整个流程是否正常工作: ```bash python3 main.py --config configs/example.yaml ``` 以上就是在 Ubuntu 平台上部署 3D Gaussian Splatting 技术的大致过程概述。需要注意的是,不同硬件配置可能会遇到不同的兼容性和性能优化问题,所以在实践中可能还需进一步调试参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scott198512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值