Press "Enter" to skip to content

三维高斯点渲染简介

3D高斯喷洒是一种在《实时辐射场渲染的三维高斯喷洒》中描述的光栅化技术,它允许从少量图像样本学习逼真场景的实时渲染。本文将介绍其工作原理以及对图形学未来的意义。

在此处查看远程高斯查看器空间,或在下方嵌入一个高斯喷洒场景示例。

什么是3D高斯喷洒?

3D高斯喷洒本质上是一种光栅化技术。这意味着:

  1. 有描述场景的数据。
  2. 将数据绘制在屏幕上。

这类似于计算机图形学中的三角形光栅化,用于在屏幕上绘制许多三角形。

三维高斯点渲染简介 四海 第1张

但是,不是三角形,而是高斯函数。下面是一个单个栅格化的高斯函数,为了清晰起见,还绘制了边框。

三维高斯点渲染简介 四海 第2张

它由以下参数描述:

  • 位置:它的位置(XYZ)
  • 协方差:它的拉伸/缩放程度(3×3矩阵)
  • 颜色:它的颜色(RGB)
  • 透明度:它的透明度(α)

实际上,可以同时绘制多个高斯函数。

三维高斯点渲染简介 四海 第3张

这是三个高斯函数。那么,700万个高斯函数呢?

三维高斯点渲染简介 四海 第4张

下面是每个高斯函数完全不透明时的效果:

三维高斯点渲染简介 四海 第5张

这只是对3D高斯喷洒的简要概述。接下来,让我们详细介绍论文中描述的完整过程。

工作原理

1. 运动结构

第一步是使用运动结构(Structure from Motion,SfM)方法从一组图像中估计出一个点云。这是一种从一组2D图像中估计出3D点云的方法。可以使用COLMAP库来完成。

三维高斯点渲染简介 四海 第6张

2. 转换为高斯函数

接下来,将每个点转换为高斯函数。这已经足够进行光栅化。然而,仅从SfM数据中可以推断出位置和颜色。为了学习出高质量的结果,我们需要进行训练。

3. 训练

训练过程使用随机梯度下降(Stochastic Gradient Descent),类似于神经网络,但没有层。训练步骤如下:

  1. 使用可微分高斯栅格化将高斯函数光栅化为图像(后面会详细介绍)
  2. 根据光栅化图像与真实图像之间的差异计算损失
  3. 根据损失调整高斯函数的参数
  4. 应用自动密实化和修剪

步骤1-3在概念上非常简单。步骤4涉及以下内容:

  • 如果给定高斯函数的梯度很大(即它太错误了),则分裂/克隆它。
    • 如果高斯函数很小,则克隆它。
    • 如果高斯函数很大,则分裂它。
  • 如果高斯函数的透明度过低,则将其移除。

这个过程可以帮助高斯函数更好地拟合细节,并修剪不必要的高斯函数。

4. 可微分的高斯栅格化

如前所述,3D高斯喷洒是一种栅格化方法,用于将数据绘制到屏幕上。然而,还有一些重要的元素:

  1. 快速
  2. 可微分

原始的栅格化实现可以在这里找到。栅格化包括:

  1. 从摄像机视角将每个高斯函数投影到2D空间。
  2. 按深度对高斯函数进行排序。
  3. 对于每个像素,按照从前到后的顺序将它们混合在一起。

附加优化可在论文中找到。

栅格化器的可微性也是至关重要的,这样它就可以使用随机梯度下降进行训练。然而,这仅适用于训练阶段 – 训练后的高斯函数也可以使用不可微的方法进行渲染。

谁关心呢?

为什么3D高斯喷洒如此受关注?显而易见的答案是,其结果不言而喻 – 它可以实时生成高质量的场景。然而,可能还有更多的故事。

关于高斯喷洒还有很多未知之处。它们可以进行动画吗?即将出版的论文《动态3D高斯函数:通过持续动态视图合成进行跟踪》表明可以。还有许多其他未知之处。它们可以反射吗?它们可以在没有参考图像训练的情况下进行建模吗?

最后,人们对具身化人工智能的研究兴趣越来越浓厚。这是人工智能研究的一个领域,其中最先进的性能远远低于人类水平,其中很大一部分挑战在于表示3D空间。鉴于3D高斯喷洒提供了3D空间的非常密集的表示,这对于具身化人工智能研究可能会产生什么影响?

这些问题引起了人们对这种方法的关注。目前尚不清楚实际影响会是什么样子。

图形的未来

那么,这对图形的未来意味着什么?好吧,让我们将其分为优点和缺点:

优点

  1. 高质量、逼真的场景
  2. 快速、实时栅格化
  3. 相对快速的训练

缺点

  1. 高显存使用量(4GB用于查看,12GB用于训练)
  2. 大磁盘空间(1GB+用于一个场景)
  3. 与现有渲染流水线不兼容
  4. 目前是静态的

到目前为止,原始的CUDA实现尚未适应于生产渲染流水线,如Vulkan,DirectX,WebGPU等,因此尚不清楚其影响将会是什么。

已经有以下适应:

  1. 远程查看器
  2. WebGPU查看器
  3. WebGL查看器
  4. Unity查看器
  5. 优化的WebGL查看器

这些要么依赖于远程流式传输(1),要么依赖于传统的基于四边形的栅格化方法(2-5)。虽然基于四边形的方法与几十年的图形技术兼容,但可能会导致较低的质量/性能。然而,查看器#5表明,优化技巧可以实现高质量/性能,尽管采用基于四边形的方法。

那么,我们是否会在生产环境中完全重新实现3D高斯喷洒?答案可能是肯定的。主要瓶颈是对数百万个高斯函数进行排序,原始实现使用了CUB设备基数排序,这是一种高度优化的排序算法,仅在CUDA中可用。然而,付出足够的努力,肯定可以在其他渲染流水线中实现这种性能水平。

如果您有任何问题或希望参与进来,请加入Hugging Face的Discord!

Leave a Reply

Your email address will not be published. Required fields are marked *