论文阅读:3D Gaussian Splatting for Real-Time Radiance Field Rendering

论文阅读:3D Gaussian Splatting for Real-Time Radiance Field Rendering

image-20240810175956977

Abstract

辐射场方法最近彻底改变了用多张照片或视频捕获的场景的新颖视角合成。然而,要获得高视觉质量,仍然需要训练和渲染成本高昂的神经网络,而最近更快的方法不可避免地要牺牲速度来换取质量。对于无界和完整的场景(而不是孤立的对象)和1080p分辨率的渲染,目前还没有一种方法可以达到实时显示速率。我们引入了三个关键元素,使我们能够在保持有竞争力的训练时间的同时获得最先进的视觉质量,并重要的是允许在1080p分辨率下进行高质量的实时(≥30 fps)新颖视图合成。首先,从摄像机标定过程中产生的稀疏点开始,我们用3D高斯线表示场景,它保留了场景优化中连续体积辐射场的理想性质,同时避免了在空空间中不必要的计算;其次,我们对3D高斯线进行交错优化/密度控制,特别是优化了各向异性协方差,以获得准确的场景表示;第三,我们开发了一种支持各向异性飞溅的快速可见性感知渲染算法,既加快了训练速度,又允许实时渲染。我们在几个已建立的数据集上演示了最先进的视觉质量和实时渲染。

1 Introduction

网格和点是最常见的3D场景表示,因为它们是显式的,非常适合基于GPU/CUDA的快速光栅化。相比之下,最近的神经辐射场(NERF)方法建立在连续场景表示的基础上,通常使用体积光线行进来优化多层感知器(MLP)以用于捕获场景的新颖视图合成。类似地,迄今为止最有效的辐射场解决方案通过对存储在例如体素中的值进行内插而建立在连续表示之上[Fridovich-Keil和Yu等人。2022]或散列[Müler等人。2022]格网或点[Xu et al.2022年]。虽然这些方法的连续性质有助于优化,但渲染所需的随机采样成本很高,并且可能会导致噪声。我们引入了一种结合了两者的优点的新方法:我们的3D高斯表示允许使用最先进的(SOTA)视觉质量和具有竞争力的训练时间进行优化,而我们基于瓷砖的溅射解决方案确保在几个以前发布的数据集上以SOTA质量进行1080p分辨率的实时渲染[Barron等人]。2022年;Hedman等人。2018年;Knapitsch等人。2017](见图1)。

我们的目标是对使用多张照片捕捉的场景进行实时渲染,并以与针对典型真实场景的最高效的先前方法一样快的优化时间创建表示。最近的方法实现了快速训练[Fridovich-Keil和Yu等人2022; Müller等人2022],但难以实现当前SOTA NeRF方法获得的视觉质量,即,Mip-NeRF 360 [Barron等人2022],需要长达48小时的培训时间。快速但质量较低的辐射场方法可以根据场景实现交互式渲染时间(每秒10-15帧),但达不到高分辨率的实时渲染。

我们的解决方案基于三个主要组件。我们首先介绍了一种灵活的、富有表现力的3D高斯场景表示方法。我们从与以前类似NERF的方法相同的输入开始,即使用运动结构(SfM)校准的相机[Snavely等人。2006],并使用作为SfM过程的一部分免费生成的稀疏点云来初始化3D高斯线集。与大多数需要多视点立体(MVS)数据的基于点的解决方案不同[Aliev等人2020年;Kopanas等人。2021年;Rückert等人。2022],我们只需输入SfM点数即可获得高质量的结果。值得注意的是,对于NERF合成数据集,我们的方法即使在随机初始化的情况下也能达到高质量。我们证明了3D高斯是一个很好的选择,因为他们是一种可微分体表示,但他们也可以非常有效地被光栅化,方法是将它们投影到2D上,并应用标准的α混合,使用等效的成像模型作为NERF。我们方法的第二个组成部分是优化3D高斯的属性-3D位置、不透明度α、各向异性协方差和球谐(SH)系数-与自适应密度控制步骤交织在一起,在优化过程中我们添加并偶尔移除3D高斯。优化过程产生了相当紧凑、无结构和精确的场景表示(所有测试场景的高斯值为1-500万)。我们方法的第三个也是最后一个元素是我们的实时渲染解决方案,它使用快速GPU排序算法,灵感来自于最近的工作[Lassner and Zollhofer 2021]。然而,多亏了我们的3D高斯表示,我们可以执行尊重可见性排序的各向异性飞溅-这要归功于排序和α混合-并通过跟踪所需数量的已排序拼接的遍历来实现快速而准确的反向遍历。

总而言之,我们提供以下贡献:

  • 引入各向异性3D高斯作为辐射场的高质量、非结构化表示。

  • 一种3D高斯属性的优化方法,与自适应密度控制交织,为捕获的场景创建高质量的表示。

  • 一种快速、可区分的图形处理方法,具有可信度,允许各向异性飞溅和快速反向传播,以实现高质量的新颖视图合成。

我们对之前发布的数据集的结果表明,我们可以从多视图捕获中优化3D高斯,并实现与之前最好质量的隐式辐射场方法相同或更好的质量。我们还可以实现与最快方法类似的训练速度和质量,重要的是为新视图合成提供第一个高质量的实时渲染。

2 Related Work

我们首先简要概述传统重建,然后讨论基于点的渲染和辐射场工作,讨论它们的相似性;辐射场是一个广阔的领域,因此我们只关注直接相关的工作。有关该领域的完整报道,请参阅最近的出色调查[Tewari et al. 2022; Xie et al. 2022]。

2.1 Traditional Scene Reconstruction and Rendering

第一种新颖的视点合成方法是基于光场,首先进行密集采样,然后允许非结构化捕获。运动结构(Structure-From-Motion,简称SfM)的出现使一个全新的领域成为可能,在这个领域,一系列照片可以用来合成新的观察视角。SfM在相机校准过程中估计稀疏点云,最初用于3D空间的简单可视化。随后的多视点立体(MVS)多年来产生了令人印象深刻的全3D重建算法,使得几种视点合成算法得以发展。所有这些方法都将输入的图像重新投影和融合到新视角摄像机中,并使用几何来指导这种重新投影。这些方法在许多情况下产生了很好的结果,但通常不能从未重建的区域或从MVS生成不存在的几何图形的“过度重建”中完全恢复。最近的神经渲染算法极大地减少了这种伪影,避免了在GPU上存储所有输入图像的巨大成本,在大多数方面都优于这些方法。

2.2 Neural Rendering and Radiance Fields

深度学习技术早期被用于新视图合成; CNN用于估计混合权重或用于纹理空间解决方案。使用基于MVS的几何体是大多数这些方法的一个主要缺点;此外,使用CNN进行最终渲染经常会导致时间闪烁。

新视图合成的体积表示是由Soft 3D发起的;随后提出了与体积射线推进相结合的深度学习技术,建立在连续的可微密度场上来表示几何形状。由于查询体积需要大量样本,使用体积射线推进的渲染成本很高。神经辐射场(NeRF)引入了重要性采样和位置编码来提高质量,但使用了大型多层感知器对速度产生了负面影响。NeRF的成功导致了后续方法的激增,这些方法通常通过引入规则化策略来解决质量和速度问题;当前最先进的新视图合成图像质量是Mip-NeRF 360。虽然渲染质量非常出色,但训练和渲染时间仍然极高;我们能够在提供快速训练和实时渲染的同时达到或在某些情况下超过这一质量。

最新的方法主要通过利用三种设计选择来关注更快的训练和/或渲染:使用空间数据结构来存储随后在体积射线推进期间进行内插的(神经)特征、不同的编码和MLP容量。此类方法包括空间离散化、码本和哈希表等编码的不同变体,允许完全使用较小的MLP或前述神经网络。

这些方法中最值得注意的是InstantNGP,它使用 hash grid 和 occupancy grid 来加速计算,并使用较小的MLP来表示密度和外观;以及Plenoxels,它使用稀疏体素网格 (parse voxel grid) 来内插连续的密度场,并且能够完全放弃神经网络。两者都依赖于球面谐波:前者直接表示方向效应,后者将其输入编码到颜色网络。虽然这两种方法都提供了出色的效果,但这些方法仍然难以有效地表示空白空间,这在一定程度上取决于场景/捕捉类型。此外,图像质量在很大程度上受到用于加速的结构化网格的选择的限制,并且需要为给定的光线行进步骤查询许多样本而阻碍了渲染速度。我们使用的非结构化、显式GPU友好的3D高斯可以实现更快的渲染速度和更好的质量,而不需要神经组件。

2.3 Point-Based Rendering and Radiance Fields

基于点的方法有效地渲染不连续和非结构化的几何样本(即,点云)。在其最简单的形式中,点样本渲染会对固定大小的非结构化点集进行网格化,为此,它可以利用本地支持的图形API的点类型或图形处理器上的并行软件网格化。虽然符合底层数据,但点样本渲染存在漏洞、导致混叠,并且严格不连续。高质量基于点的渲染的研究工作通过“飞溅”(“splatting”)范围大于像素的点基元来解决这些问题,例如,圆形或椭圆形的圆盘、椭圆体或曲面。

最近人们对基于可区分点的渲染技术产生了兴趣。点已经用神经特征进行了增强,并使用CNN进行了渲染,从而实现了快速甚至实时的视图合成;然而,它们仍然依赖于MVS来获得初始几何形状,因此继承了其伪影,最值得注意的是,在困难的情况下,例如无特征/闪亮区域或薄结构。

基于点的 α \alpha α 混合和NeRF风格的体积渲染基本上共享相同的图像形成模型。具体来说,颜色 C C C 是通过沿着光线的体积渲染给出的:
C = ∑ i = 1 N T i ( 1 − exp ⁡ ( − σ i δ i ) ) c i w i t h T i = exp ⁡ ( − ∑ j = 1 i − 1 σ j δ j ) C=\sum_{i=1}^NT_i(1-\exp(-\sigma_i\delta_i))\mathbf{c}_i\quad\mathrm{with}\quad T_i=\exp\left(-\sum_{j=1}^{i-1}\sigma_j\delta_j\right) C=i=1NTi(1exp(σiδi))ciwithTi=exp(j=1i1σjδj)
其中, σ \sigma σ 为采样密度, T T T 为透光率, c c c 为沿着采样时间间隔为 δ i \delta_{i} δi的光线拍摄的颜色。于是上式可重写为:
C = ∑ i = 1 N T i α i c i C=\sum_{i=1}^NT_i\alpha_i\mathbf{c}_i C=i=1NTiαici
其中:
α i = ( 1 − exp ⁡ ( − σ i δ i ) ) a n d T i = ∏ j = 1 i − 1 ( 1 − α i ) \alpha_i=(1-\exp(-\sigma_i\delta_i)) \quad\mathrm{and} \quad T_i=\prod_{j=1}^{i-1}(1-\alpha_i) αi=(1exp(σiδi))andTi=j=1i1(1αi)
典型的基于神经点的方法通过混合与像素重叠的 N \mathcal{N} N 个有序点来计算像素的颜色 C C C :
C = ∑ i ∈ N c i α i ∏ j = 1 i − 1 ( 1 − α j ) C=\sum_{i\in \mathcal{N}}c_i\alpha_i\prod_{j=1}^{i-1}(1-\alpha_j) C=iNciαij=1i1(1αj)
其中 c i c_i ci是每个点的颜色,而 a i a_i ai 是通过评估具有协方差 Σ \Sigma Σ 的2D高斯乘以所学习的每点不透明度来给出的。

从等式2和等式3、我们可以清楚地看到图像形成模型是一样的。然而,渲染算法有很大不同。NeRF是隐式地表示空/被占用空间的连续表示;等式2需要昂贵的随机采样才能找到等式中的样本,随之而来的是噪音和计算费用。相比之下,点是一种非结构化、离散的表示,它足够灵活,可以创建、破坏和替换类似于NeRF的几何形状。正如之前的工作所示,这是通过优化不透明度和位置来实现的,同时避免全体积表示的缺点。

Pulsar实现了快速球体网格化,这启发了我们基于瓦片(tile-based)的排序渲染器。然而,考虑到上述分析,我们希望在排序的splat上保持(大约)传统的 α \alpha α 混合,以具有体积表示的优势:我们的网格化尊重可见性顺序,而不是它们的顺序独立方法。此外,我们还在像素中的所有飞溅上反向传播梯度,并对各向异性飞溅进行网格化。这些元素都有助于我们结果的高视觉质量(请参阅 7.3 节)。此外,上述之前提到的方法也使用CNN进行渲染,这会导致时间不稳定。尽管如此,Pulsar和ADOP的渲染速度仍然是开发我们快速渲染解决方案的动力。

在专注于镜面效果的同时,Neural Point Cataustics的基于漫反射点的渲染轨迹通过使用MLP克服了这种时间不稳定性,但仍然需要MVS几何体作为输入。这一类中最新的方法不需要MVS,并且还使用SH作为方向;但是,它只能处理一个对象的场景,并且需要 mask 进行初始化。虽然对于小分辨率和低点计数来说速度很快,但目前尚不清楚它如何扩展到典型数据集的场景。我们使用3D高斯来实现更灵活的场景表示,从而避免了对MVS几何的需要,并通过我们针对投影高斯的基于图块的渲染算法实现了实时渲染。

最近的一种方法使用点来通过辐射基函数方法来表示辐射场。它们在优化过程中使用点修剪和致密化技术,但使用体积射线推进,无法实现实时显示率

在人体表现捕捉领域,3D高斯已被用来表示捕捉的人体;最近,它们已被用于视觉任务的体积射线推进。神经体积基元是在类似的背景下提出的。虽然这些方法启发了我们选择3D高斯作为场景表示,但它们专注于重建和渲染单个孤立对象(人体或面部)的特定情况,从而产生深度复杂性较小的场景。相比之下,我们对各向异性协方差的优化、交错优化/密度控制以及高效的渲染深度排序使我们能够处理完整、复杂的场景,包括室内和室外以及深度复杂性很大的场景。

3 Overview

我们的方法的输入是一组静态场景的图像,以及由SfM校准的相应相机,该方法产生的副作用是稀疏的点云。根据这些点,我们创建了一组3D高斯(Sec.4),由位置(均值)、协方差矩阵和不透明度 α α α 定义,允许非常灵活的优化机制。这导致了3D场景的相当紧凑的表示,部分原因是高度各向异性的体积分割可以用来紧凑地表示精细结构。按照标准做法,辐射场的方向外观分量(颜色)由球面调和(SH)表示。我们的算法继续创建辐射场表示(SEC。5)通过3D高斯参数(即,位置、协方差、 α α α 和SH系数)与用于自适应控制高斯密度的操作交织的一系列优化步骤。我们方法效率的关键是我们的基于瓦片的光栅化器(SEC。6)这允许各向异性 splat 的 α α α 混合,并由于快速排序而尊重可见性顺序。输出的快速光栅化器还包括通过跟踪累积的 α \alpha α 值进行快速向后传递,对可以接收渐变的高斯图数量没有限制。我们方法的概述如图2所示。

image-20240811164754296

4 Differentiable 3D Gaussian Splatting

我们的目标是优化场景表示,以允许高质量的新颖视图合成,从没有法向的稀疏(SfM)点集开始。为此,我们需要一个基元,它继承可微体积表示的属性,同时是非结构化和显式的,以允许非常快速的渲染。我们选择3D高斯,它是可微的,可以轻松投影到2D splat,允许快速阿尔法混合进行渲染。

我们的表示与之前使用2D点并假设每个点是具有法向的小平面圆的方法有相似之处。鉴于SfM点的极端稀疏性,很难估计正常值。同样,根据这样的估计优化噪音很大的正态将非常具有挑战性。相反,我们将几何体建模为一组不需要法向的3D高斯模型。我们的高斯由以点(平均值) μ \mu μ 为中心的世界空间中定义的完整3D协方差矩阵 Σ \Sigma Σ 定义:
G ( x ) = e − 1 2 ( x ) T Σ − 1 ( x ) G(x) =e^{-\frac12(x)^T\Sigma^{-1}(x)} G(x)=e21(x)TΣ1(x)
在我们的混合过程中,这个高斯乘以 α \alpha α

然而,我们需要将3D高斯投影到2D进行渲染。Zwicker等人演示了如何对图像空间进行这种投影。给定视角变换 W W W,相机坐标中的协方差矩阵 Σ ′ \Sigma' Σ 给出如下:
Σ ′ = J W Σ W T J T \Sigma'=JW\Sigma W^TJ^T Σ=JWΣWTJT
其中 J J J 是射影变换的仿射逼近的雅可比量。Zwicker等人[2001 a]还表明,如果我们跳过 Σ ′ \Sigma' Σ 的第三行和列,我们将获得一个具有相同结构和性质的2 x 2方差矩阵,就像我们从具有法向的平面点开始一样,就像在之前的工作中一样

一种明显的方法是直接优化协方差矩阵 Σ \Sigma Σ ,以获得代表辐射场的3D高斯。然而,协方差矩阵只有在半定时才具有物理意义。为了优化所有参数,我们使用无法轻易约束的梯度下降来产生此类有效矩阵,而更新步骤和梯度可以很容易地创建无效的协方差矩阵。

因此,我们选择了一种更直观、但具有同等表达力的优化表示。3D高斯的协方差矩阵 Σ \Sigma Σ 类似于描述椭圆体的配置。给定一个缩放矩阵 S S S 和旋转矩阵 R R R ,我们可以找到相应的 Σ \Sigma Σ
Σ = R S S T R T \Sigma=RSS^TR^T Σ=RSSTRT
为了允许对这两个因素进行独立优化,我们将它们分别存储:用于缩放的3D载体 s s s 和用于表示旋转的四元数 q q q 。这些可以简单地转换为各自的矩阵并进行组合,确保对 $ q$ 进行正规化以获得有效的单位四元数。

为了避免训练过程中自动区分而产生的巨大负担,我们显式地推导出所有参数的梯度。确切的求导计算的详细信息见附录A。

这种各向异性协方差的表示-适合优化-使我们能够优化3D高斯,以适应捕获场景中不同形状的几何形状,从而产生相当紧凑的表示。图3说明了此类案例。

image-20240811174714331

5 Optimization with Adaptive Density Control of 3D Gaussians

我们方法的核心是优化步骤,该步骤创建一组密集的3D高斯,准确地表示场景以进行自由视图合成。除了位置 p p p α \alpha α和协方差 Σ \Sigma Σ 之外,我们还优化了代表每个高斯颜色 c c c 的SH系数,以正确捕捉场景的视图相关外观。这些参数的优化与控制高斯密度的步骤交织在一起,以更好地表示场景。

5.1 Optimization

优化基于渲染的连续迭代并将所得图像与捕获数据集中的训练视图进行比较。不可避免地,由于3D到2D投影的模糊性,几何形状可能会被错误放置。因此,我们的优化需要能够创建几何形状,并且在定位错误时破坏或移动几何形状。3D高斯协方差参数的质量对于表示的紧凑性至关重要,因为可以用少量大的各向异性高斯来捕获大的均匀区域。(The quality of the parameters of the covariances of the 3D Gaussians is critical for the compactness of the representation since large homogeneous areas can be captured with a small number of large anisotropic Gaussians.)

我们使用随机梯度下降技术进行优化,充分利用标准的GPU加速框架,以及遵循最近的最佳实践为某些操作添加自定义CUDA内核的能力。特别是,我们的快速网格化(请参阅第6节)对于优化的效率至关重要,因为它是优化的主要计算瓶颈。

出于类似的原因,我们对 a a a 使用Sigmoid激活函数来将其限制在 [ 0 − 1 ) [0 - 1) [01)范围内并获得平滑的梯度,并对协方差的规模使用指数激活函数。

我们将初始协方差矩阵估计为各向同性高斯矩阵,其轴等于到最近三个点的距离的平均值。我们使用类似于Plenoxels的标准指数衰减调度技术,但仅适用于位置。损失函数是 L 1 \mathcal{L}_1 L1与D-SSIM项组合:
L = ( 1 − λ ) L 1 + λ L D-SSIM \mathcal{L}=(1-\lambda)\mathcal{L}_1+\lambda\mathcal{L}_\text{D-SSIM} L=(1λ)L1+λLD-SSIM
我们在所有测试中都使用 λ = 0.2 \lambda = 0.2 λ=0.2。我们在 Sec7.1 中提供了学习率衰减和其他超参数的详细信息。

5.2 Adaptive Control of Gaussians

我们从SfM的初始稀疏点集开始,然后应用我们的方法自适应地控制单位体积上的高斯数量及其密度,使我们能够从初始稀疏的高斯集合转向更密集的集合,更好地代表场景,并具有正确的参数。优化预热后(请参阅第7.1节),我们每100次迭代就致密化一次,并删除任何本质上透明的高斯,即 a a a 小于阈值 ϵ α \epsilon_{\alpha} ϵα

我们对高斯的适应性控制需要在空旷的地区进行。它关注几何特征缺失的区域(“重建不足”),但也关注高斯覆盖场景中大面积的区域(这通常对应于“过度重建”)。我们观察到两者都具有很大的视空间位置梯度。直观地说,这可能是因为它们对应于尚未很好重建的区域,并且优化尝试移动高斯来纠正这一点。

由于这两种情况都是致密化(densification)的良好候选者,因此我们用高于阈值 τ p o s \tau_{\mathrm{pos}} τpos(我们在测试中将其设置为0.0002)的视图空间位置梯度的平均幅度来致密高斯。

接下来我们将介绍该过程的细节,如图4所示。

image-20240811182301883

对于重建不足区域的小高斯,我们需要覆盖必须创建的新几何。为此,最好克隆高斯,只需创建相同大小的副本,并将其沿位置梯度的方向移动即可。

另一方面,方差高地区的大高斯需要分裂成较小的高斯。我们用两个新的高斯来替换这样的高斯,并将它们的尺度除以我们通过实验确定的因子 ϕ = 1.6 \phi = 1.6 ϕ=1.6。我们还通过使用原始的3D高斯作为 PDF 进行采样来初始化它们的位置。

在第一种情况下,我们检测并处理增加系统总体积和高斯数目的需要,而在第二种情况下,我们保持总体积但增加高斯数目。与其他体积表示类似,我们的优化可能会在靠近输入摄影机的浮动框中停滞不前;在我们的情况下,这可能会导致高斯密度的不合理增加。缓和高斯数量增加的有效方法是每 N = 3000 N=3000 N=3000 次迭代将 α α α 值设置为接近零。然后,优化在需要的地方增加高斯的 α α α ,同时允许我们的剔除方法去除如上所述的 α α α 小于 ϵ α \epsilon_{\alpha} ϵα 的高斯。高斯族可能会缩小或增长,并与其他人大量重叠,但我们会定期删除在世界空间中非常大的高斯族,以及那些在可视空间中有很大足迹的高斯族。这一战略的结果是总体上很好地控制了高斯人的总数。在我们的模型中,高斯在任何时候都是欧几里得空间中的基本体;与其他方法不同,我们不需要对远处或大的高斯人进行空间压缩、翘曲或投影策略。

6 Fast Differentiable Rasterizer for Gaussians

我们的目标是实现快速的整体渲染和快速排序,以实现大约的 α \alpha α 混合(包括各向异性飞溅),并避免对可以接收之前工作中存在的梯度的飞溅数量进行严格限制。

为了实现这些目标,我们设计了一种基于瓦片的高斯Splatter,其灵感来自最近的软件栅化方法,该方法可以一次对整个图像的基元进行预排序,从而避免了阻碍之前的 α \alpha α 混合解决方案的按像素排序的费用。我们的快速网格化器允许在任意数量的混合高斯上进行高效的反向传播,并且额外内存消耗较低,每个像素仅需要恒定的负载。我们的网格化管道是完全可区分的,并将投影投影到2D(第4节)与之前的2D飞溅方法类似,可以对各向异性飞溅进行网格化。

我们的方法首先将屏幕分割成16×16个tiles,然后根据视锥和每个 tiles 来剔除3D高斯。具体地说,我们只保留了与视锥相交的99%可信区间的高斯。此外,我们使用保护带来平凡地拒绝极端位置的高斯(即,那些平均值接近近平面而远离视锥的那些),因为计算他们的投影2D协方差将是不稳定的。然后,我们根据重叠的 tiles 数量实例化每个高斯,并为每个实例分配一个结合了视图空间深度和平铺ID的关键字。然后,我们使用单个快速的GPU基数排序,基于这些关键字对高斯进行排序。请注意,没有对点进行额外的每像素排序,混合是基于该初始排序执行的。因此,我们的 α α α 混合在某些构型中可以是近似的。但是,当样条线接近单个像素的大小时,这些近似值会变得微不足道。我们发现,这种选择极大地提高了训练和渲染性能,而不会在融合的场景中产生可见的伪影。

对高斯排序后,我们通过识别飞溅到给定 tiles 的第一个和最后一个深度排序条目,为每个 tiles 生成一个列表。对于网格化,我们为每个 tiles 启动一个线程块。每个块首先协作地将高斯数据包加载到共享存储器中,然后对于给定像素,通过前后穿越列表来累积颜色和 α \alpha α 值,从而最大化数据加载/共享和处理的并行性收益。当我们达到像素中的目标饱和度时,相应的线程就会停止。每隔一段时间,询问 tiles 中的线程,并且当所有像素饱和时,整个 tiles 的处理终止(即,a变为1)。附录C中给出了排序的详细信息和总体网格化方法的高级概述。

在网格化过程中, α \alpha α 的饱和度是唯一的停止标准。与之前的工作相比,我们不限制接收梯度更新的混合基元的数量。我们强制执行这一属性是为了使我们的方法能够处理具有任意、不同深度复杂性的场景并准确地学习它们,而不必诉诸特定于场景的超参数调整。因此,在向后传递期间,我们必须在向前传递中恢复每个像素的混合点的完整序列。一种解决方案是在全局存储器中存储每个像素的任意长混合点列表。为了避免隐含的动态内存管理负担,我们选择再次穿越永久列表;我们可以重复使用前向传递的高斯和切片范围的排序数组。为了方便梯度计算,我们现在将它们前后交叉。

穿越从影响 tile 中任何像素的最后一个点开始,并再次协作地将点加载到共享内存中。此外,只有当点的深度低于或等于前向传递期间对其颜色有贡献的最后一个点的深度时,每个像素才会开始(昂贵的)重叠测试和处理点。第4节中描述的梯度计算,需要原始混合过程中每个步骤的累积不透明度值。我们可以通过仅存储前向过程结束时总累积的不透明度来恢复这些中间不透明度,而不是在后向过程中转换逐渐缩小的不透明度的显式列表。具体来说,每个点都存储了正向过程中最终累积的不透明度 α \alpha α ;我们在前后穿越中将其除以每个点的不透明度 α \alpha α ,以获得梯度计算所需的系数。

7 Implementation, Results and Evaluation

接下来,我们将讨论实施的一些细节、给出的结果以及与之前的工作和消融研究相比对我们的算法的评估。

7.1 Implementation

我们使用PyTorch框架在Python中实现了我们的方法,并编写了用于网格化的自定义CUDA内核,这些内核是之前方法的扩展版本,并使用NVIDIA CUB排序例程进行快速Radix排序。我们还使用开源SIBR 构建了一个交互式查看器,用于交互式查看。我们使用此实现来测量我们实现的帧速率。源代码和我们的所有数据均可访问:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

Optimization Details. 为了稳定性,我们以较低分辨率“预热”计算。具体来说,我们使用小4倍的图像分辨率开始优化,并在250和500次迭代后进行两次上采样。

SH系数优化对角度信息的缺乏很敏感。对于典型的“NeRF类”捕捉,其中通过在其周围的整个半球拍摄的照片来观察中心物体,优化效果良好。然而,如果捕获缺少角区域(例如,当捕捉场景的角落时,或执行“由内而外”[Hedman等人2016]捕捉)SH零阶分量的完全错误的值(即,基本色或漫色)可以通过优化产生。为了克服这个问题,我们首先仅优化零阶分量,然后在每1000次迭代后引入SH的一个频段,直到SH的所有4个频段都被表示。

7.2 Results and Evaluation

Results. 我们在取自之前发布的数据集和合成Blender数据集的总共13个真实场景上测试了我们的算法[Mildenhall等人2020]。特别是,我们在Mip-Nerf 360 中提供的全套场景(这是NeRF渲染质量的当前最新技术水平)、来自Tanks & Temples数据集的两个场景以及Hedman等人提供的两个场景上测试了我们的方法。我们选择的场景具有非常不同的捕捉风格,涵盖了有界的室内场景和大型无界的室外环境。我们在评估中对所有实验使用相同的超参数配置。除Mip-NeRF 360方法外,所有结果均在A6000图形处理器上运行(见下文)。

在补充中,我们为包含远离输入照片的视图的精选场景显示了渲染视频路径。

Real-World Scenes. 品质方面,目前最新的是Mip-Nerf 360。我们将此方法作为质量基准进行比较。我们还与两种最新的快速NeRF方法进行了比较:InstantNGP和Plenoxels。

我们对数据集使用训练/测试分离的方法,使用mip-neRF360建议的方法,每8张照片进行测试,用于一致和有意义的比较,以生成误差度量,使用文献中最频繁使用的标准PSNR、L-点数和SSIM度量;请参见表1。表中的所有数字都来自我们自己运行的作者代码,用于所有以前的方法,除了mip-neRF360在其数据集上的那些方法,其中我们从原始出版物复制数字,以避免对当前SOTA的混淆。对于图中的图像,我们使用了我们自己的MIP-NeRF360运行:这些运行的数字在附录D中。我们还显示了平均训练时间、渲染速度和用于存储优化参数的内存。我们报告了InstantNGP(Base)的基本配置,运行35K迭代,以及作者建议的稍微更大的网络(Big),以及我们的两种配置,7K和30K迭代。我们在图6中显示了两种配置在视觉质量上的差异。在许多情况下,7K迭代的质量已经相当不错了。

image-20240811201434040

image-20240811201752336

训练时间因数据集而异,我们单独报告它们。请注意,图像分辨率也因数据集而异。在项目网站中,我们提供了用于计算所有场景上所有方法(我们的和之前的工作)的统计数据的测试视图的所有渲染。请注意,我们保留了所有渲染的本地输入分辨率。

该表显示,我们的全融合模型实现了与SOTA Mip-NeRF 360方法相当的质量,有时甚至略好于SOTA Mip-NeRF 360方法;请注意,在相同的硬件上,他们的平均训练时间为48小时2,而我们的平均训练时间为35- 45分钟,他们的渲染时间为10秒/帧。经过5- 10 m的训练后,我们实现了与InstantNGP和Plenoxels相当的质量,但额外的训练时间使我们能够实现SOTA质量,而其他快速方法的情况并非如此。对于Tanks & Temples,我们在类似的训练时间(在我们的情况下为7分钟)下实现了与基本InstantNGP类似的质量。

我们还显示了我们的遗漏测试视图和图5中选择进行比较的先前渲染方法的视觉结果;我们的方法的结果适用于30 K次训练迭代。我们看到,在某些情况下,即使是Mip-NeRF 360也存在我们的方法避免的剩余伪影(例如,植被模糊–在《自行车》、《树桩》中–或在《房间》中的墙上)。在补充视频和网页中,我们提供了远处路径的比较。我们的方法倾向于保留覆盖良好区域的视觉细节,即使是从远处也是如此,而以前的方法并不总是如此。

image-20240811201548410

合成有界场景。除了现实场景外,我们还评估了我们对合成Blender数据集的方法[Mildenhall等人2020]。所讨论的场景提供了详尽的视图集,大小有限,并提供了精确的相机参数。在此类场景中,即使采用随机初始化,我们也可以实现最先进的结果:我们从包围场景边界的体积内的100 K均匀随机高斯开始训练。我们的方法快速自动地将它们修剪为大约6- 10 K有意义的高斯。经过30 K迭代后,训练模型的最终大小达到每个场景约200- 500 K高斯。为了兼容性,我们在表2中使用白色背景报告并比较我们获得的PSNR分数与之前的方法。示例可以在图10(左起第二张图像)和补充材料中看到。经过训练的合成场景以180-300 FPS的速度渲染。

image-20240811212214828

紧凑性。与之前的显式场景表示相比,我们优化中使用的各向异性高斯能够用更少的参数来建模复杂形状。我们通过对照[Zhang et al. 2022]获得的高度紧凑的基于点的模型来评估我们的方法来展示这一点。我们从他们的初始点云开始,该点云是通过前景面膜的空间雕刻获得的,并进行优化,直到我们与他们报告的PSNR分数持平。这通常发生在2-4分钟内。我们使用大约四分之一的积分数超过了他们报告的指标,导致平均模型大小为3.8 MB,而不是9 MB。我们注意到,在这个实验中,我们只使用了两度的球调和度,与他们的类似

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值