论文(2)3D高斯

发布时间 2023-10-16 10:22:37作者: MKT-porter

https://huggingface.co/blog/gaussian-splatting

 

什么是 3D 高斯泼溅?

3D 高斯泼溅的核心是一种光栅化技术。这意味着:

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

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

 然而,它不是三角形,而是高斯。这是一个栅格化的高斯函数,为了清晰起见,绘制了边框。

 

它由以下参数描述:

  • 位置:它所在的位置 (XYZ)
  • 协方差:如何拉伸/缩放(3x3 矩阵)
  • 颜色:它是什么颜色(RGB)
  • Alpha : 透明度 (α)

在实践中,会同时绘制多个高斯曲线。

 

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

 

 

 

这是每个高斯光栅化完全不透明的样子:

 

 

 

怎么运行的

1. 运动结构

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

 

2. 转换为高斯分布

接下来,每个点都转换为高斯分布。这对于光栅化来说已经足够了。然而,只能从 SfM 数据推断位置和颜色。为了学习产生高质量结果的表示,我们需要对其进行训练。

3. 培训

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

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

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

  • 如果对于给定的高斯梯度很大(即它太错误),则分割/克隆它
    • 如果高斯很小,则克隆它
    • 如果高斯很大,则将其分割
  • 如果高斯的 alpha 太低,请将其删除

此过程有助于高斯更好地拟合细粒度细节,同时修剪不必要的高斯。

4.可微分高斯光栅化

如前所述,3D 高斯分布是一种光栅化方法,它将数据绘制到屏幕上。然而,一些重要的元素还包括:

  1. 快速地
  2. 可微分

可以在此处找到光栅化器的原始实现光栅化涉及:

  1. 从相机角度将每个高斯投影为 2D。
  2. 按深度对高斯进行排序。
  3. 对于每个像素,从前到后迭代每个高斯,将它们混合在一起。

论文中描述了其他优化

光栅化器是可微分的也很重要,这样就可以用随机梯度下降来训练它。然而,这仅与训练相关 - 训练有素的高斯也可以用不可微的方法呈现。