【论文笔记】A Survey on 3D Gaussian Splatting

文章探讨了3D高斯溅射(3DGS),一种新的3D场景表达技术,它结合了神经网络和显式、隐式辐射场的优点,提供高效计算和动态控制。3DGS通过使用3D高斯进行实时、高分辨率渲染,适用于SLAM、动态场景建模和AIGC等应用,并在性能上超越了基于NeRF的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://arxiv.org/abs/2401.03890

1. 引言

NeRF在计算效率和可控性上具有局限性,这导致了3D高斯溅射(3D GS)的出现,重新定义了场景表达和渲染。

3D GS通过引入新的场景表达技术,用大量的3D高斯表达场景。3D GS使用显式的表达和高度并行化的工作流程,促进高效计算和渲染;其创新在于混合了可微渲染与基于点的渲染技术的优势。3D GS保留了连续体积辐射场的理想特性(有利于高质量图像渲染),同时避免了渲染空空间带来的计算开销。此外,3D GS的显式表达提供了对场景的动态控制能力。

2. 背景

2.1 问题定义

2.1.1 辐射场

辐射场是3D空间中光分布的表达,捕捉了环境中光与表面和材料的交互。神经场可表达为函数 L : R 5 → R + L:\mathbb{R}^5\rightarrow\mathbb{R}^+ L:R5R+,其中 L ( x , y , z , θ , ϕ ) L(x,y,z,\theta,\phi) L(x,y,z,θ,ϕ)将点 ( x , y , z ) (x,y,z) (x,y,z)和球坐标下的方向 ( θ , ϕ ) (\theta,\phi) (θ,ϕ)映射为非负辐射值。辐射场有显示表达和隐式表达。

2.1.2 隐式辐射场

隐式辐射场不显式地定义场景几何,通常使用神经网络学习连续体积场景表达。其代表NeRF使用MLP将坐标与视线方向映射为密度和颜色,不会显式存储,而是通过查询神经网络在线计算:
L implicit ( x , y , z , θ , ϕ ) = NeuralNetwork ( x , y , z , θ , ϕ ) L_\text{implicit}(x,y,z,\theta,\phi)=\text{NeuralNetwork}(x,y,z,\theta,\phi) Limplicit(x,y,z,θ,ϕ)=NeuralNetwork(x,y,z,θ,ϕ)

这一形式允许复制场景可微且紧凑的表达,但渲染时的射线行进有较高的计算复杂度。

2.1.3 显式辐射场

显式辐射场直接在离散空间结构中表达光的分布,如体素或点集。结构中的每个元素存储了相应位置的辐射信息。这一方法通常能更直接、更快地获取辐射数据,但需要大量存储空间,且分辨率可能受限。通常形式为:
L explicit ( x , y , z , θ , ϕ ) = DataStructure [ ( x , y , z ) ] ⋅ f ( θ , ϕ ) L_\text{explicit}(x,y,z,\theta,\phi)=\text{DataStructure}[(x,y,z)]\cdot f(\theta,\phi) Lexplicit(x,y,z,θ,ϕ)=DataStructure[(x,y,z)]f(θ,ϕ)

其中 DataStructure \text{DataStructure} DataStructure为网格或点云, f f f为基于视线方向修改辐射的函数。

2.1.4 3D高斯溅射

3D GS使用3D高斯作为灵活且高效的表达,从而利用了隐式和显式辐射场的优势。高斯可通过基于神经网络的优化来精确表达场景,但进行的是显式、结构化的数据存储。这种混合方法能进行高质量渲染,且训练更快、有实时性。3D高斯表达可表示为:
L 3DGS ( x , y , z ,

### 实现 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 技术的大致过程概述。需要注意的是,不同硬件配置可能会遇到不同的兼容性和性能优化问题,所以在实践中可能还需进一步调试参数设置。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

byzy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值