点击下方卡片,关注“3D视觉之心”公众号
第一时间获取3D视觉干货
>>点击进入→3D视觉之心技术交流群
还有什么阻碍大规模渲染?
神经辐射场(NeRF) 在处理大规模场景时面临细节丢失和渲染缓慢的挑战。尽管一些扩展NeRF的方法(如MegaNeRF[2]、BlockNeRF[3]和SwitchNeRF[4])试图解决这些问题,但由于频谱偏差和计算资源需求的限制,仍难以捕捉复杂细节和实现实时渲染。3D高斯散射(3DGS) 通过各向异性高斯实现了高质量、实时的图像渲染,但在大规模场景中面临整合不同尺度物体和初始化点云的困难。
早期的大规模场景表示主要依赖特征匹配和BA来重建稠密3D几何结构,但在扩展到大规模场景时会遇到伪影和有限的纹理质量问题。NeRF在3D场景表示方面表现出显著的改进,但在处理大规模场景时面临模型容量和计算资源需求的问题。分而治之的方法通过分解场景并为每个部分训练单独的NeRF网络,虽然提高了效果,但增加了计算复杂性和资源需求。
PyGS针对大规模场景的痛点:
不同尺度和不同视点的物体整合常常导致效果不佳,因为高斯需要在细节层次之间取得平衡。
通过COLMAP从大规模数据集中生成初始化点既耗费计算资源,又容易产生不完整的重建。
引入了一种新颖的金字塔高斯散射框架,该框架有效地捕捉多尺度信息,并基于专门设计的加权网络自适应地渲染不同层次的场景细节。利用粗略训练的NeRF显著缩短了预处理时间并提高了性能。

(大拇指往上滑,点击最上方的卡片关注我,整个操作只会花你 1.328 秒,然后带走未来、所有、免费的干货,万一有内容对您有帮助呢~)
具体方法
整体框架如图:
从NeRF初始化金字塔高斯
从NeRF生成点云
原始的3DGS方法利用COLMAP生成稀疏点云作为算法的初始步骤。然而,大规模数据集通常比典型的户外数据集大一个数量级。使用COLMAP进行稀疏重建所需的时间随着数据集的大小显著增加。此外,COLMAP在重建远离场景中心的点时存在困难,这严重影响了3DGS对远处物体的建模能力。相比之下,基于网格的NeRF方法提供了一种更高效和稳健的点云生成方法,其性能基本上不受训练集大小的影响。
基于这一洞察,首先在大规模场景上训练一个基于网格的NeRF模型,记作 。由于只需要NeRF模型捕捉场景的大致结构,这个训练过程可以加快,并在大约20分钟内完成。为了从训练好的NeRF模型 生成点云,从训练摄像机投射射线,并在每条射线的估计终止点(记作 )采样点。每个生成点的位置和颜色通过以下方式获得:

其中,和分别表示射线的起点和方向。从粗略的NeRF中采样个点以形成点云,记作。
多尺度点云采样
从点云中采样个子集,采样频率逐渐增加。具体来说,对于第个子集,从中随机选择个点。经验性地设置 ,其中表示第一个最稀疏子集中的点数。将选定的总点数记作。
初始化金字塔高斯
对于每个点子集,使用与3DGS中相同的方法初始化3D高斯,这导致了一个3D高斯集合的层次结构,本文称之为金字塔高斯,记作,其中表示从第个子云初始化的高斯。由于每个高斯的尺度由其最近邻的平均距离决定,随着初始化点数的增加,高斯的尺度逐渐减小。因此,金字塔高斯 自然形成了一个多尺度架构。较高的层(即较小的l)包含较大尺度的高斯,而较低的层包含较小尺度的高斯。
自适应渲染
簇级加权
在渲染金字塔高斯 时,根据视点自适应地评估每个层次高斯的贡献是至关重要的。图3展示了三种不同的加权策略:
均匀加权:为同一层次内的所有高斯分配相同的权重
唯一加权:为每个高斯分配不同的权重
簇级加权:将高斯分组为簇,并为每个簇内的所有成员分配一个共享的权重

为同一层次的所有高斯均匀加权可能并不理想,因为适当的权重应反映每个高斯的具体特征,例如其与摄像机的距离和周围的几何复杂性。为每个高斯分配唯一权重可以提供更精细的渲染,但由于涉及的高斯数量众多,会带来巨大的计算成本。因此,选择了一种平衡的方案,将金字塔高斯分割成簇,并为每个簇分配一组独特的权重。该策略使能够考虑高斯的位置信息,同时避免了计算需求的显著增加。
采用高效的小批量均值算法从点云中建立个质心,记作 ,其中 表示第个质心。为了减少计算时间,仅对点云的一个子集应用均值算法。均值算法的持续时间大约为30秒。对于金字塔高斯 中的每个高斯,将其分配到集合M中的最近质心。对于第层的第个高斯,这个分配表示为:

其中, 是离第层第个高斯的中心点最近的质心的索引,通过最近邻算法确定。这样,不同层的高斯属于同一个簇时,也构成了一个捕捉簇中心附近小区域的金字塔结构。
簇Embedding
簇的各种属性,如位置、局部几何和纹理,会影响每个层次的最优权重。为了更好地捕捉这些簇信息,为每个簇配备一个可学习的特征,称为簇Embedding ,其中代表簇的总数,是特征的维度。
加权网络
使用一个小型的多层感知器(MLP) 来确定每个簇的层级权重。加权网络的架构如图4所示。

对于从第个摄像机视点看到的第个簇,其层级权重计算如下:

其中,表示拼接操作, 是第个簇的特征向量,表示位置编码函数, 表示摄像机中心的坐标。对应于从第个摄像机视点看到的第个簇的第层的权重记作 。
外观感知渲染
为了渲染图像,使用与3DGS中相同的方法对所有高斯进行排序。为了简便,我们将排序后的高斯表示为序列 ,其中 是第个有序高斯。与 相关的颜色、不透明度、层次和簇索引分别表示为 、、 和 。
由于大规模场景建模经常遇到来自不同图像的光照变化问题,之前的研究考虑了外观嵌入向量以增加应对这些变化的适应性。然而,直接将这种策略整合到框架中可能并不可行,设计了一种有效的替代方案。结合了每个摄像机的外观嵌入和一个紧凑的MLP 来执行每个簇的颜色校正。这里, 表示摄像机的总数。第个高斯的颜色校正计算如下:

其中, 表示第个高斯所属簇的嵌入,表示第个摄像机的外观嵌入。最终用于渲染的颜色通过以下公式确定:

其中, 是通过球谐函数计算的颜色, 是根据当前图像调整后的颜色, 是高斯的不透明度。
优化
与原始3DGS类似,使用一种逼真的损失函数进行优化,该损失函数是均方误差(MSE)和结构相似性指数(SSIM)的加权组合:

其中, 是平衡两个损失项的超参数, 是像素的真实颜色。
使用与3DGS相同的分裂和克隆策略来进行密度控制。新分裂和克隆的高斯将保留在原始的层级和簇内。为了在整个训练过程中保持多尺度特性,定期重新评估并重新分配高斯的层级,以确保不同层级高斯的分布保持比例平衡。
实验效果
总体结果
Mill19和Urbanscene数据集:PyGS在PSNR、SSIM和LPIPS等所有评估指标上均优于基准方法
MatrixCity数据集:PyGS在合成场景的质量和渲染速度上显著优于基准方法,尤其在细节和背景建模方面表现出色
BungeeNeRF数据集:PyGS在处理多尺度挑战方面表现出色,效果优于当前最先进的方法
模型分析
NeRF初始化的有效性:与随机初始化和COLMAP初始化相比,基于NeRF的初始化方法生成了更密集的点云,并且在几何细节和背景建模方面效果更好。
加权策略:自适应加权策略显著提高了渲染结果,尤其是在训练过程中比随机加权和无加权策略更稳定和收敛
颜色校正的有效性:包含颜色校正网络显著提高了渲染质量,尤其在处理不同图像间的光照变化方面
金字塔层级和初始化点数的影响:增加金字塔层级和初始化点数可以提高渲染质量,但会略微降低渲染速度。这表明更多的层级和点数能够捕捉场景的细节。
耗时分析
预处理、训练和渲染时间:PyGS在预处理、训练和渲染时间方面均优于MegaNeRF和原始3DGS方法。虽然COLMAP初始化的3DGS训练时间略短于PyGS,但生成点云的时间较长,影响了整体效率





总结一下
PyGS是一种新颖的金字塔高斯结构,在不显著增加训练和渲染成本的情况下:
从NeRF模型初始化
通过紧凑的加权网络和可学习的簇嵌入进行簇级加权 通过有效解决固有的多尺度挑战,在大规模场景建模中取得了显著进展。局限:对更大环境的建模需要大量的内存和计算资源。
参考
[1] PYGS: LARGE-SCALE SCENE REPRESENTATION WITH PYRAMIDAL 3D GAUSSIAN SPLATTING
[2] Mega-nerf: Scalable construction of large-scale nerfs for virtual fly-throughs
[3] Block-nerf: Scalable large scene neural view synthesis
[4] Switch-nerf: Learning scene decomposition with mixture of experts for large-scale neural radiance fields
投稿作者为『3D视觉之心知识星球』特邀嘉宾,欢迎加入交流!
【3D视觉之心】技术交流群
3D视觉之心是面向3D视觉感知方向相关的交流社区,由业内顶尖的3D视觉团队创办!聚焦三维重建、Nerf、点云处理、视觉SLAM、激光SLAM、多传感器标定、多传感器融合、深度估计、摄影几何、求职交流等方向。扫码添加小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
扫码添加小助理进群
【3D视觉之心】知识星球
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。