Scaffold-GS


Scaffold-GS: Structured 3D Gaussians for View-Adaptive Rendering(用于视图自适应渲染的结构化3D高斯函数)

摘要

Neural rendering methods have significantly advanced photo-realistic 3D scene rendering in various academic and industrial applications. The recent 3D Gaussian Splatting method has achieved state-of-the-art rendering quality and speed by combining the benefits of both primitive-based representations and volumetric representations. However, it often leads to heavily redundant Gaussians that try to fit every training view, neglecting the underlying scene geometry. Consequently, the resulting model becomes less robust to significant view changes, texture-less areas, and lighting effects.We introduce Scaffold-GS, which uses anchor points to distribute local 3D Gaussians and predicts their attributes on-the-fly based on viewing direction and distance within the view frustum. Anchor growing and pruning strategies are developed based on the importance of neural Gaussians to reliably improve the scene coverage. We show that our method effectively reduces redundant Gaussians while delivering high-quality rendering. We also demonstrate an enhanced capability to accommodate scenes with varying levels-of-detail and view-dependent observations, without sacrificing rendering speed.

神经渲染方法在各种学术和工业应用中显着提高了照片级真实感 3D 场景渲染的性能。 最近的 3D 高斯喷射方法结合了基于基元(primitive,基本单元)表示和体积表示的优势,实现了最先进的渲染质量和速度。 然而,它通常会导致严重冗余的高斯模型,试图适应每个训练视图,而忽略了底层的场景几何形状。 因此,生成的模型对于显着的视图变化、无纹理区域和照明效果变得不太稳健。 我们引入了 Scaffold-GS,它使用锚点来分布局部3D 高斯,并根据视锥体内的观察方向和距离动态预测它们的属性。 锚点生长和修剪策略是基于神经高斯模型对于可靠地提高场景覆盖范围的重要性而开发的。 我们表明,我们的方法有效地减少了冗余高斯,同时提供高质量的渲染。 我们还展示了一种增强的能力,可以适应具有不同细节级别和依赖于视图的观察的场景,而无需牺牲渲染速度。


使用一组在双层层次结构中结构的3D高斯函数来表示场景。锚定在初始点的稀疏网格上,从每个锚点衍生出一组适度的神经高斯函数,以动态适应不同的视角和距离。该方法在具有挑战性观察视图的场景中表现出色。例如,透明度、镜面反射、反射、无纹理区域和精细比例细节。
复杂视图与3dgs对比


本文贡献如下:

1)利用场景结构,我们从稀疏体素网格中初始化锚点来指导局部三维高斯分布,形成分层和区域感知的场景表示;

2)在视锥内,我们实时预测每个锚点的神经高斯分布,以适应不同的观看方向和距离,从而产生更鲁棒的新视图合成;

3)我们开发了一个更可靠的锚点生长和修剪策略,利用预测的神经高斯来更好地覆盖场景。

原理:

我们首先从 SFM(运动恢复结构) 衍生的点形成一个稀疏体素(voxel)网格。每个可见体素的中心都放置有一个可学习尺度(learnable offset)的锚点(anchor),大致雕刻了场景的占用情况。(b) 视锥内,从每个可见的带有偏移量𝑂_𝑘锚点生成 k 个神经高斯。它们的属性,即不透明度(opacity)、颜色、比例和四元数(quaternion)是使用MLP从锚点特征、相对相机-锚点的观看方向和距离进行解码,使用 Fα、Fc、Fs、Fq表示。 (c)神经高斯模型属性的预测是即时的,意味着只有在视锥体内可见的锚点才会被激活以生成神经高斯模型。为了使栅格化更加高效,我们仅保留透明度值大于预定义阈值 τα 的神经高斯模型。这大大降低了计算负载,并帮助我们的方法保持与原始3D-GS相当的高渲染速度。通过重建L_1、结构相似性L_𝑆𝑆𝐼𝑀和体积正则化L_𝑣𝑜𝑙来监督渲染图像。
原理图

描点细化

增长操作:由于神经高斯模型与它们的锚点紧密关联,而这些锚点是从SFM点初始化的,它们的建模能力受限于局部区域,特别是在无纹理和少观察的区域。因此,我们提出了一种基于误差的锚点增长策略,即在神经高斯模型发现显著的地方增加新的锚点。为了确定显著的区域,我们首先通过构建大小为ϵg的体素来空间量化神经高斯模型。对于每个体素,我们计算包含的神经高斯模型在N个训练迭代中的平均梯度,表示为∇g。然后,对于∇g > τg的体素,我们认为其是显著的,其中τg是预定义的阈值;如果该体素中没有已建立的锚点,则在该体素的中心部署一个新的锚点。图3说明了这个增长操作。在实践中,我们将空间量化为多分辨率的体素网格,以允许在不同的粒度级别添加新的锚点,其中ϵ(m)g = ϵg/4m−1,τ(m)g = τg ∗ 2m−1,(其中m表示量化的级别)。为了进一步调控新锚点的添加,我们对这些候选进行随机消除。这种谨慎的方法有效地抑制了锚点的快速扩展。
修剪操作:为了消除无关的锚点,我们累积了与它们关联的神经高斯模型在N个训练迭代中的不透明度值。如果一个锚点未能生成具有满意不透明度水平的神经高斯模型,我们就将其从场景中移除
梯度(从小到大)多分辨率体素(新锚点着色
锚点细化。我们提出了一种基于误差的锚点生长策略,以可靠地在神经高斯人认为重要的位置生长新的锚点。 我们将神经高斯量化为多分辨率体素,并向梯度大于水平阈值的体素添加新的锚点。 我们的策略有效地提高了场景覆盖率,而不会使用过多的点。我们将卡车场景中的初始锚点和精炼锚点可视化。卡车用圆圈标出。注意,精炼点有效地覆盖了周围区域和精细结构,倾向于更完整和详细的场景渲染。
卡车描点细化效果
结果:Scaffold-GS 在各种类型场景上的渲染结果。 包括无纹理区域、观测不足、精细细节、视效和多尺度观察等具有挑战性的情况都能得到合理处理。Scaffold-GS 对视图相关效应(例如反射、阴影)更鲁棒; 并减轻冗余 3D 高斯引起的伪影(例如漂浮物、结构误差)

定量比较

复杂数据集效果更好、存储空间更小

定性比较

卡车描点细化效果
在不同数据集上对Scaffold-GS和3D-GS[22]进行定性比较。强调视觉差异的补丁用箭头和绿色和黄色的插图来强调。我们的方法在这些场景中优于3D-GS,在具有挑战性的场景中具有明显的优势,例如薄几何和细尺度细节,无纹理区域,光效果,观察不足。还可以观察到我们的模型在表示不同尺度和观看距离的内容方面具有优势。


文章作者: 小九九
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小九九 !
  目录