清华&中科院&华为 VastGaussian | NeRF再见!突破性的3D高斯喷射技术实现大型场景高质量重建与实时渲染

技术

点击下方卡片,关注 「AI视界引擎」 公众号

picture.image

现有基于NeRF的大型场景重建方法在视觉效果和渲染速度方面往往存在限制。虽然最近的3D高斯分裂在小型和以目标为中心的场景上表现良好,但将其扩展到大型场景由于受到有限的视频内存、漫长的优化时间和明显的视觉外观变化等问题而面临挑战。

为了解决这些挑战,作者提出了VastGaussian,这是第一种基于3D高斯喷射的高质量重建和大型场景实时渲染的方法。作者提出了一种逐步分割策略,将大型场景划分为多个单元,其中训练相机和点云根据一种空中空间感知的可见性标准进行适当分布。这些单元在并行优化后合并成一个完整的场景。作者还将在优化过程中引入解耦的外观建模,以减少渲染图像中的外观变化。作者的方法优于现有的NeRF-based方法,并在多个大型场景数据集上取得了最先进的结果,实现了快速优化和高保真的实时渲染。

项目页面:https://vastgaussian.github.io

1 Introduction

大规模场景重建对于许多应用至关重要,包括自动驾驶[22, 33, 54],航空测绘[6, 13]以及虚拟现实,这些应用需要照片级的视觉质量和实时渲染。一些方法[41, 44, 52, 53, 61]被提出来扩展神经辐射场(NeRF)[31]到大规模场景,但它们仍然缺乏细节或者渲染速度缓慢。近期,3D高斯 splatting (3DGS) [21]作为一项具有视觉质量和渲染速度优异性能的有前景的方法出现,使得在1080p分辨率下实现照片级实时渲染成为可能。它也被应用于动态场景重建[28, 51, 55, 56]和3D内容生成[12, 42, 59]。然而,这些方法专注于小规模和以目标为中心的场景。当应用于大规模环境时,存在几个可扩展性问题。_首先_,3D高斯函数的数量受到给定视频内存的限制,而大型场景丰富的细节需要大量的3D高斯函数。简单地将3DGS应用于大规模场景将导致要么重建质量低,要么内存不足错误。为了直观解释,一个32GB的GPU可以用来优化大约1100万个3D高斯函数,而在Mip-NeRF 360数据集[3]中的小型Garden_场景,其面积不足100平方米,已经需要大约580万个3D高斯函数进行高保真重建。_其次_,需要对整个大型场景作为一个整体进行足够次数的迭代优化,这可能是耗时的,并且在没有良好正则化的情况下可能不稳定。第三,在大规模场景中,光照通常不均匀,捕获的图像中存在明显的外观变化,如图2(a)所示。3DGS倾向于生成低不透明度的大型3D高斯函数来补偿不同视角之间的差异。例如,明亮的斑点往往出现在曝光高的图像中靠近相机的地方,而暗斑点与曝光低的图像相关联。这些斑点在从新视角观察时变成了空中不愉快的漂浮物,如图2(b, d)所示。

picture.image

为了解决这些问题,作者提出了基于3D高斯溅射的大场景重建方法——Vast 3D高斯(VastGaussian)。作者以分而治之的方式重建大型场景:将大型场景划分为多个单元,独立优化每个单元,并最终将它们合并成完整的场景。由于这些单元在空间尺度上更精细且数据大小较小,因此更容易优化。一种自然而简单的划分策略是根据它们的位置将训练数据地理分布。这可能导致由于相邻两个单元之间通用相机较少而在边界处产生伪影,且如果没有足够的监督可能会在空中产生悬浮物。因此,作者提出了基于可见性的数据选择方法,以逐步融入更多训练相机和点云,这确保了无缝合并并消除了空中的悬浮物。作者的方法比3DGS具有更好的灵活性和可扩展性。这些单元中的每一个都包含较少的3D高斯分布,这降低了内存需求和优化时间,尤其是在使用多个GPU并行优化时。合并场景中包含的3D高斯总数可以大大超过整个场景训练时的数量,从而提高重建质量。此外,作者可以通过融入新单元或仅对特定区域进行微调来扩展场景,而无需重新训练整个大型场景。

为了减少由外观变化引起的漂浮物,提出了结合外观嵌入[29]的生成潜在优化(GLO)[5]用于基于NeRF的方法[41, 61]。这种方法通过光线行进采样点,并将点特征与外观嵌入一起输入到MLP中,以获得最终的颜色。渲染过程与优化相同,仍然需要外观嵌入作为输入。它不适合3DGS,因为其渲染是通过逐帧栅格化而不是通过MLP完成的。因此,作者提出了一种新颖的解耦外观建模,仅在优化过程中应用。作者逐像素地将外观嵌入附加到渲染的图像上,并将它们输入到CNN中,以获得用于在渲染图像上应用外观调整的变换图。作者通过惩罚渲染图像与其真实图像之间的结构差异来学习常数信息,同时,在调整后的图像上计算光度损失,以适应训练图像中的外观变化。作者只需要一致的渲染,所以这个外观建模模块在优化后可以丢弃,从而不会降低实时渲染速度。

在几个大型场景基准测试上的实验证实了作者的方法优于基于NeRF的方法。作者的贡献总结如下:

作者介绍了VastGaussian,这是第一种基于3D高斯溅射的大场景高保真重建和实时渲染方法。

作者提出了一种逐步数据划分策略,该策略将训练视图和点云分配到不同的单元格中,从而实现并行优化和无缝合并。

作者引入了解耦的外观建模到优化过程中,这可以抑制由于外观变化引起的漂浮物。在优化后,可以丢弃这个模块以获得实时渲染速度。

2 Related Work

Large Scene Reconstruction

在过去的几十年中,基于图像的大型场景重建取得了重大进展。一些研究[1、16、23、34、38、39、62]遵循运动结构(SfM)流程来估计相机姿态和稀疏点云。后续研究[17、19]基于多视图立体(MVS)从SfM输出生成密集点云或三角网格。随着NeRF[31]近年来成为照片级真实新颖视图合成的流行3D表示形式[35],许多变体被提出以改善质量[2、45、47、48、49、57、2、24、44、54],提高速度[8、9、11、14、20、32、36、37、40、43、46、58、60],扩展到动态场景[7、15、18、25、27、50]等。一些方法[41、44、52、53、61]将其扩展到大型场景。Block-NeRF[41]将城市划分为多个区块,并根据其位置分配训练视图。Mega-NeRF[44]使用基于网格的划分,并将图像中的每个像素通过其射线穿过的不同网格分配给它们。与这些启发式分割策略不同,Switch-NeRF[61]引入了NeRF专家混合框架来学习场景分解。Grid-NeRF[53]不执行场景分解,而是结合了基于NeRF和基于网格的方法。尽管这些方法的渲染质量显著优于传统方法,但它们仍然缺乏细节并且渲染速度慢。最近,3D高斯溅射[21]引入了一种具有高质量和实时渲染能力的表达性显式3D表示,在1080p分辨率下。然而,将其扩展到大型场景并不是一件容易的事。作者的VastGaussian是第一个通过场景划分、优化和合并的新颖设计来实现这一点的。

Varying Appearance Modeling

外观变化是在变化的光照或不同的摄像机设置(如自动曝光、自动白平衡和色调映射)下基于图像的重建中常见的问题。NRW [30] 以数据驱动的方式训练一个外观编码器,使用对比损失,它以延迟着色的深度缓冲区作为输入并生成一个外观嵌入(AE)。NeRF-W [29] 将AE附加到基于射线的行进中的点状特征上,并将它们输入到MLP以获得最终颜色,这在许多基于NeRF的方法[41, 44, 61]中成为了标准做法。Ha-NeRF [10] 将AE设置为跨不同视图的全局表示,并通过视图一致性损失来学习它。在作者的VastGaussian中,作者将AE与渲染的图像连接起来,将它们输入到CNN以获得变换图,并使用变换图来调整渲染的图像以适应外观变化。

3 Preliminaries

在本文中,作者提出了基于三维高斯溅射(3DGS)[21]的大场景重建和渲染方法VastGaussian。3DGS通过一组三维高斯分布来表示几何和外观。每个三维高斯由其位置、各向异性协方差、不透明度和用于视点相关颜色的球面谐波系数来描述。在渲染过程中,每个三维高斯被投影到图像空间作为一个二维高斯。这些投影的二维高斯被分配到不同的图块中,然后按点基体积渲染方式[63]对它们进行排序和alpha混合,形成一个渲染图像。

用于优化场景的数据集包含一个稀疏点云 和训练视图 ,其中 是第 个相机, 是相应的图像。 和 是通过从 中进行Structure-from-Motion (SfM)估计得到的。 用于初始化3D高斯分布,而 用于基于可微渲染和梯度优化的3D高斯分布。对于相机 ,通过可微光栅化器 获得的渲染图像 。以下是根据 和 之间的损失函数优化3D高斯分布属性:

其中 是一个超参数,而 表示D-SSIM损失[21]。这个过程与自适应点加密交错进行,当点的累积梯度达到一定阈值时触发。

4 Method

3DGS [21] 在小规模和以目标为中心的场景中表现良好,但当扩展到大型环境时,由于视频内存限制、漫长的优化时间和外观变化,它会遇到困难。在本文中,作者将3DGS扩展到大型场景,以实现实时和高品质的渲染。作者 Proposal 将大型场景划分为多个单元格,并在单独优化后进行合并。在第四部分1.1节,作者引入了一种渐进式数据分区策略,该策略具有考虑空中可见性的计算。第四部分1.2节详细阐述了如何优化单个单元格,展示了作者解耦的外观建模方法,以捕捉图像中的外观变化。最后,在第四部分1.3节中,作者描述了如何合并这些单元格。

Progressive Data Partitioning

作者将大型场景划分为多个单元格,并将点云的一部分和视图分配给这些单元格以进行优化。这些单元格中的每一个都包含较少的3D高斯分布,这对于内存容量较低情况下的优化更加适合,并且在并行优化时需要的训练时间较少。作者的渐进式数据分区策略的流程图如图3所示。

picture.image

基于摄像机位置的分区划分。 如图3(a)所示,作者根据摄像机在地面平面上的投影位置来划分场景,并确保每个单元格包含相似数量的训练视图,以保证在相同迭代次数下不同单元格之间的优化平衡。不失一般性,假设一个 的网格单元很好地适应所讨论的场景,作者首先沿着一个轴线将地面平面划分为 个部分,每个部分大约包含 个视图。然后这些部分沿着另一个轴线进一步细分为 段,每段大约包含 个视图。虽然这里作者以网格为基础的划分为例,但作者的数据分区策略同样适用于其他基于地理划分的方法,比如扇区化和四叉树。

基于位置的数据选择。 如图3(b)所示,作者在扩展边界后,将训练视角和点云的一部分分配给每个单元格。具体来说,假设第个区域在一个的矩形内界定;原始边界按照一定的比例扩大,本文中为,从而得到一个更大的尺寸为的矩形。作者根据扩展后的边界将训练视角分割为,并以同样的方式将点云分割为。

基于可见性的相机选择。作者发现上一步选择的相机不足以进行高保真重建,这可能导致细节较差或出现漂浮物伪影。为了解决这个问题,作者提出根据可见性标准增加更多相关的相机,如图3(c)所示。对于一个尚未选择的相机 ,设 为图像 中第 个单元的投影面积, 为 的面积;可见性定义为 。那些可见性值大于预定义阈值 的相机被选中。

请注意,不同的计算的方式会导致不同的摄像机选择。如图3(e)所示,一种自然而简单的解决方案是基于分布在物体表面的三维点。这些点投影到上形成一个面积为的凸包。这种计算对空域是盲目的,因为它只考虑了表面。因此,在这种计算中,由于在-th单元上的低可见性,一些相关的摄像头没有被选中,这导致了对空域的监督不足,并且无法抑制空中漂浮物。

作者引入了一种考虑空域的可见性计算方法,如图3(f)所示。具体来说,由第个单元格中的点云形成一个轴对齐的边界框,其高度选为最高点与地面平面之间的距离。作者将边界框投影到上,并得到一个凸包区域。这种考虑空域的解决方案考虑了所有可见空间,这确保了给定一个适当的可见性阈值,选择对该单元格优化有重要贡献的视图,并为空域提供足够的监督。

基于覆盖范围的点选择。 在将更多相关的摄像头添加到第 个单元的摄像头集合 之后,作者将所有在 中视图覆盖的点添加到 中,如图3(d)所示。新选择的点可以为该单元的优化提供更好的初始化。如图3(g)所示,一些在第 个单元外的物体可以被 中的某些视图捕捉到,由于没有适当的初始化而导致深度歧义,会在错误的位置生成新的3D高斯分布来拟合这些物体。然而,通过添加这些物体点进行初始化,可以轻松创建正确位置的新3D高斯分布来拟合这些训练视图,而不是在第 个单元中产生浮动点。需要注意的是,在单元优化后,单元外部生成的3D高斯分布将被移除。

Decoupled Appearance Modeling

在光照不均匀条件下拍摄的图像中存在明显的外观变化,如图2(a-d)所示,3DGS倾向于在不同视图中产生浮点物以补偿这些变化。

为了解决这个问题,一些基于NeRF的方法[29, 41, 44, 61]在逐像素光线行进中,将外观嵌入与基于点的特征连接起来,并将它们输入到辐射MLP中以获得最终的颜色。这种方法不适合3DGS,因为3DGS的渲染是通过逐帧光栅化实现的,不使用MLPs。相反,作者将解耦的外观建模引入到优化过程中,这产生了一个转换图来调整渲染图像以适应训练图像中的外观变化,如图4所示。具体来说,作者首先将渲染图像 进行下采样,这不仅可以防止转换图学习高频细节,还可以减少计算负担和内存消耗。然后,作者将一个长度为 的外观嵌入 连接到下采样后三通道图像的每个像素上,得到一个具有 个通道的2D图 。将 输入到一个卷积神经网络(CNN)中,该网络逐步将 上采样以生成与 同分辨率的 。最后,通过使用 对 进行逐像素转换 ,得到具有外观变化图像 。

picture.image

在作者的实验中,一个简单的逐像素乘法在作者使用的数据集上表现良好。外观嵌入和卷积神经网络(CNN)与3D高斯分布一同优化,使用的损失函数是根据方程式(1)修改得来的:

由于 主要惩罚结构的不相似性,将它应用于 和真实图像 之间使得 中的结构信息接近 ,而将外观信息留给 和卷积神经网络(CNN)去学习。损失 被用于外观可变渲染 和 之间,它用于拟合可能与其他图像在外观上有所变化的真实图像 。经过训练后,期望 能与其他图像保持外观一致,从而让3D高斯分布能够学习所有输入视图的平均外观和正确的几何形状。这种外观建模在优化后可以被丢弃,而不会降低实时渲染的速度。

Seamless Merging

在独立优化所有单元之后,作者需要将它们合并以获得完整的场景。对于每个优化的单元,在边界扩展之前,作者删除了原始区域外的3D高斯分布(图3(a))。否则,它们可能成为其他单元中的浮动物。然后作者合并这些非重叠单元的3D高斯分布。由于在作者数据划分中相邻单元之间有一些共同的训练视角,因此合并后的场景在外观和几何上是无缝的,没有明显的边界伪影。因此,无需像Block-NeRF [41]那样进行进一步的外观调整。合并场景中包含的3D高斯分布总数可以大大超过整个场景训练时的数量,从而提高重建质量。

5 Experiments

Experimental Setup

实现方法。 在作者主要的实验中,作者用8个单元评估了作者的模型。可见性阈值是。渲染的图像在与其长度为的外观嵌入向量连接之前,被下采样倍。每个单元被优化了次迭代。密集化过程[21]在第次迭代开始,在第次迭代结束,间隔为次迭代。其他设置与3DGS [21]中的相同。外观嵌入和卷积神经网络(CNN)的学习率都是。作者执行曼哈顿世界对齐,使世界坐标的轴垂直于地面平面。作者在附录中描述了CNN架构。

数据集。 实验在五个大型场景上进行:来自Mill-19数据集[44]的 RubbleBuilding ,以及来自Urbans-Scene3D数据集[26]的 Campus, Residence, 和 Sci-Art 。每个场景包含数千张高分辨率图像。作者按照先前的方法[44, 61]将图像下采样4倍,用于训练和验证,以便进行公平的比较。

评价指标。 作者使用三种定量评价指标来评估渲染质量:SSIM、PSNR和基于AlexNet的LPIPS。上述的光照变化使得评估变得困难,因为不确定应该复制哪种光照条件。为了解决这个问题,作者遵循Mip-NeRF 360 [3]的方法,在评估所有方法的指标之前对渲染的图像进行色彩校正,该方法解决了一个每图像最小二乘问题,以对齐渲染图像与其对应 GT 图像之间的RGB值。作者还报告了1080p分辨率下的渲染速度、平均训练时间和视频内存消耗。

对比方法。 作者将VastGaussian与以下四种方法进行了比较:Mega-NeRF [44],Switch-NeRF [61],Grid-NeRF [53]和3DGS [21]。对于3DGS,作者需要增加优化迭代次数以使其在作者的主要实验中具有可比性,但简单地这样做会导致内存不足错误。因此,作者相应地增加密度间隔以建立一个可行的 Baseline (称为修改后的3DGS)。其他配置与原始3DGS论文中的相同。对于Grid-NeRF,由于其保密要求,其代码已经发布,但没有渲染的图像和仔细调整的配置文件。这些不可用的文件对其性能至关重要,使得其结果无法复现。因此,作者使用其代码仅评估其训练时间、内存和渲染速度,而质量指标则从其论文中复制。

Result Analysis

重建质量。在表1中,作者报告了每个场景的平均SSIM、PSNR和LPIPS指标。作者的VastGaussian在所有SSIM和LPIPS指标上都显著优于比较方法,这表明它在感知上重建了更丰富的细节,具有更好的渲染效果。在PSNR方面,VastGaussian取得了更好或相当的结果。作者还展示了图5中的视觉比较。基于NeRF的方法在细节上表现不佳,产生了模糊的结果。修改后的3DGS具有更锐利的渲染效果,但产生了不愉快的浮动物。作者的方法实现了干净且视觉上令人愉悦的渲染。需要注意的是,由于某些测试图像中明显的过曝光或欠曝光,VastGaussian的PSNR值略有下降,但产生了明显更好的视觉质量,有时甚至比真实情况更清晰,如图5第3行的例子。VastGaussian的高质量部分归功于其大量的3D高斯分布。以_Campus_场景为例,修改后的3DGS中的3D高斯分布数量为890万个,而VastGaussian的数量为2740万个。

picture.image

picture.image

效率和内存。在表2中,作者报告了训练时间、优化过程中的视频内存消耗以及渲染速度。Mega-NeRF、Switch-NeRF和Vast-Gaussian是在8个Tesla V100 GPU上进行训练的,而Grid-NeRF和修改后的3DGS则是在单个V100 GPU上训练的,因为它们不执行场景分解。渲染速度是在单个RTX 3090 GPU上进行测试的。作者的VastGaussian在重建具有照片级真实感渲染的场景时所需时间要短得多。与修改后的3DGS相比,Vast-Gaussian在单个GPU上大幅降低了视频内存消耗。由于VastGaussian在合并场景中拥有比修改后的3DGS更多的3D高斯分布,其渲染速度稍慢于修改后的3DGS,但仍然比基于NeRF的方法快得多,能够在1080p分辨率下实现实时渲染。

picture.image

Ablation Study

作者对_Sci-Art_场景进行消融研究,以评估VastGaussian的不同方面。

数据划分。 如图6和表3所示,基于可见性的相机选择(VisCam)和基于覆盖率的点选择(CovPoint)均可提高视觉质量。如果没有它们中每一个或两者同时作用,可以在单元格空域内创建漂浮物,以适应观察单元格外部区域的观点。如图7所示,基于可见性的相机选择可以确保相邻单元格之间有更多共同的相机,这消除了在未实施此方法时出现的明显的视觉跳跃边界伪影。

picture.image

picture.image

picture.image

空域意识可见性计算。 如表3第行和图8所示,基于空域意识可见性计算所选的摄像头能为单元格优化提供更多监督,因此不会产生在空域无关方式计算可见性时出现的浮动物。

picture.image

解耦外观建模。 如图2和表3的第5行所示,作者的解耦外观建模减少了渲染图像中的外观变化。因此,3D高斯分布可以从带有外观变化的训练图像中学习到一致的几何形状和颜色,而不是创建浮动物来补偿这些变化。也请参见补充材料中的视频。

不同数量的细胞。如表4所示,更多的细胞可以在VastGaussian中重建更细致的细节,这导致了更高的SSIM和LPIPS值,并且在并行优化细胞时,训练时间也缩短了。然而,当细胞数量达到16个或更多时,质量提升变得微乎其微,PSNR甚至略有下降,这可能是因为由相隔较远的细胞生成的渲染图像可能存在逐渐的亮度变化。

picture.image

6 Conclusion and Limitation

在本文中,作者提出了VastGaussian,这是第一种针对大规模场景的高质量重建和实时渲染方法。引入的渐进式数据分区策略使得可以独立优化单元格并实现无缝合并,从而获得含有足够3D高斯分布的完整场景。作者解耦的外观建模将训练图像中的外观变化解耦,并能够实现不同视图间的连贯渲染。此模块在优化后可以丢弃,以获得更快的渲染速度。尽管VastGaussian可以应用于任何形状的空间划分,但作者没有提供一个考虑场景布局、单元格数量及训练相机分布的最优划分方案。此外,当场景巨大时,会有大量的3D高斯分布,这可能需要较大的存储空间并显著降低渲染速度。

7 Details of Decoupled Appearance Modeling

CNN Architecture

在解耦的外观建模中,CNN架构如图9所示。作者将形状为的渲染图像下采样32倍,然后将长度为64的外观嵌入向量连接到下采样图像中的每个像素,以获得形状为的特征图,该特征图被送入CNN。

picture.image picture.image

数据集 首先通过一个 的卷积层,以增加其通道深度到 。然后它被 个上采样块处理,每个块包含一个上采样像素Shuffle层、一个 的卷积层以及 激活函数。每个上采样块都将特征图的分辨率加倍,同时将通道深度减半。此后,一个双线性插值层将特征图上采样到 大小,然后跟随两个 的卷积层,中间有一个 ,以获得一个形状为 的变换图,该变换图后来用于对渲染的图像进行外观调整。

Training Time and Memory

作者提供了表5中关于解耦外观建模的消融研究的训练时间和视频内存消耗作为补充。由于引入了外观嵌入和卷积神经网络(CNN),采用了解耦外观建模的作者的模型在优化时所需的时间和视频内存不到原来的,但它显著提高了渲染质量。

More Complex Transformations

一个简单的逐像素乘法在作者所使用的数据集上效果很好。如表格6所示,作者还可以将其扩展到仿射变换,或者添加一些先验知识,例如伽马校正。相应的,CNN架构也被调整为输出一个通道图(用于乘法加加法)或者一个通道图(有一个额外的通道用于伽马校正)。这两种扩展对结果的影响都很小,这表明简单的逐像素乘法对于实验中使用的数据集来说已经足够了。

picture.image

参考

[1].VastGaussian: Vast 3D Gaussians for Large Scene Reconstruction.

点击上方卡片,关注 「AI视界引擎」 公众号

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
高性能存储虚拟化方案 NVMe over Fabric 在火山引擎的演进
在云计算中,虚拟化存储扮演着重要角色,其中 iSCSI 协议在业界开放、流行多年。近年来,拥有更优性能的 NVMe over Fabrics 协议也得到了发展。本次分享介绍了 NVMe over Fabrics 在云原生和虚拟化方向的演进工作和成果。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论