【论文解读CVPR2024】Scaffold-GS: Structured 3D Gaussians for View-Adaptive Rendering

devtools/2024/11/18 9:00:54/

论文:https://arxiv.org/abs/2312.00109icon-default.png?t=O83Ahttps://arxiv.org/abs/2312.00109

代码:https://city-super.github.io/scaffold-gs/icon-default.png?t=O83Ahttps://city-super.github.io/scaffold-gs/

 Overview

TL;DR: 我们提出了 Scaffold-GS,它利用锚点分布局部的 3D 高斯,并根据视角和距离在视锥内动态预测其属性。 

**图1**. Scaffold-GS 使用一组在双层层次结构中组织的 3D 高斯来表示场景。通过一个稀疏网格上的初始点锚定,从每个锚点生成适量的神经高斯,以动态适应不同的视角和距离。我们的方法通过更加紧凑的模型,在渲染质量和速度方面与 3D-GS 相当(最后一行指标:PSNR/存储大小/FPS)。在多个数据集上,Scaffold-GS 在大规模户外场景和复杂的室内环境中展现出更强的鲁棒性,尤其在具有挑战性的观察视角下,如透明度、镜面反射、反射、无纹理区域和细节丰富的区域。 

 

**框架**. (a) 首先根据 SfM 生成的点形成一个稀疏体素网格。一个具有可学习尺度的锚点被放置在每个体素的中心,以大致刻画场景的占用情况。 (b) 在视锥体内,从每个可见锚点处生成 k 个带有偏移的神经高斯。它们的属性(即不透明度、颜色、尺度和四元数)通过 MLP 从锚点特征、相对的相机-锚点视角方向和距离解码出来。 (c) 为减少冗余并提升效率,仅栅格化非平凡的神经高斯。渲染的图像通过重建、结构相似性和体积正则化进行监督。 

**锚点优化**. 我们提出了一种基于误差的锚点增长策略,以在神经高斯显著的区域可靠地生成新锚点。我们将神经高斯量化到多分辨率体素中,并在梯度超过层级阈值的体素中添加新锚点。该策略在不增加过多点的情况下有效提高了场景覆盖率。 

 摘要

        神经渲染方法在各类学术和工业应用中显著推动了逼真3D场景渲染的发展。最近的3D高斯溅射方法结合了基于原始元素的表示和体积表示的优点,实现了最先进的渲染质量和速度。然而,它通常会导致大量冗余的高斯分布,这些高斯分布试图适应每个训练视图,而忽略了底层场景几何结构。因此,得到的模型在面对显著的视角变化、无纹理区域和光照效果时表现不够稳健。

        我们提出了Scaffold-GS方法,通过锚点分布局部3D高斯,并根据视图锥体内的视角和距离动态预测其属性。我们还开发了基于神经高斯重要性的锚点生长和修剪策略,可靠地提高了场景覆盖率。实验结果表明,我们的方法有效减少了冗余的高斯分布,同时提供高质量的渲染效果。我们还展示了其在适应不同细节层次和视角依赖性观察的场景时,不会牺牲渲染速度的增强能力。项目页面:[https://city-super.github.io/scaffold-gs](https://city-super.github.io/scaffold-gs)

 1 引言

        三维场景的照片级真实感和实时渲染一直是学术研究和工业领域的关键问题,应用范围广泛,包括虚拟现实[51]、媒体生成[36]和大规模场景可视化[43, 45, 49]等。传统的基于原始元素的表示方法,如网格和点云[6, 26, 32, 55],因其采用适合现代GPU的光栅化技术,渲染速度较快。然而,它们通常会产生低质量的渲染结果,存在不连续和模糊的伪影。相比之下,体积表示和神经辐射场(NeRF)采用基于学习的参数化模型[3, 5, 30],因此能够产生连续的渲染结果,并保留更多细节。然而,它们也带来了耗时的随机采样,导致性能较慢,并可能产生噪声。

        近年来,3D高斯溅射(3D-GS)[22]方法在渲染质量和速度上达到了最先进的水平。该方法从结构光学(SfM)[42]生成的点云初始化,通过优化一组3D高斯来表示场景。它保留了体积表示中固有的连续性,同时通过将3D高斯溅射到2D图像平面上,实现了快速的光栅化。

        虽然这种方法提供了若干优势,但它往往会过度扩展高斯球体以适应每个训练视图,从而忽视了场景结构。这导致了显著的冗余,并限制了其在复杂大规模场景中的可扩展性。此外,视角依赖性效应被固定在单个高斯参数中,缺乏插值能力,使得它对显著的视角变化和光照效果不够稳健。

        我们提出了Scaffold-GS,这是一种基于高斯的方法,通过锚点来建立分层且具有区域感知的3D场景表示。我们从SfM点生成一个稀疏的锚点网格,每个锚点都连接着一组带有可学习偏移的神经高斯,其属性(如不透明度、颜色、旋转、缩放)是根据锚点特征和视角动态预测的。与传统的3D-GS不同,我们的策略利用场景结构来引导和约束3D高斯的分布,同时允许它们根据不同的视角和距离局部适应。我们还开发了相应的锚点生长和修剪操作,以提高场景的覆盖率。

        通过大量实验,我们证明了我们的方法在渲染质量上与原始的3D-GS相当甚至更优。在推理时,我们将神经高斯的预测限制在视图锥体内,并通过滤波步骤(即可学习的选择器)剔除无意义的神经高斯。结果是,我们的方法能够以与原始3D-GS相似的速度(约100 FPS,分辨率1K)渲染,且计算开销非常小。此外,由于我们只需存储锚点和每个场景的MLP预测器,存储需求大大减少。

总结来说,我们的贡献包括:  
1) 通过利用场景结构,我们从稀疏体素网格初始化锚点,引导局部3D高斯的分布,形成分层且具有区域感知的场景表示;  
2) 在视图锥体内,我们从每个锚点动态预测神经高斯,以适应多样的视角和距离,增强了新视角合成的稳健性;  
3) 我们开发了更可靠的锚点生长和修剪策略,利用预测的神经高斯以更好地提高场景覆盖率。

2. 相关工作

**MLP-based Neural Fields and Rendering**  

        早期的神经场通常采用多层感知机(MLP)作为3D场景几何和外观的全局近似器。它们直接使用空间坐标(和视角方向)作为输入,预测点的属性,例如场景表面的有符号距离(SDF)[33, 34, 46, 54],或该点的密度和颜色[2, 30, 49]。由于其体积性质和MLP的归纳偏差,这类方法在新视图合成中达到了最先进的性能。然而,这种场景表示的主要挑战是需要在每条相机射线沿线的多个采样点上评估MLP。因此,渲染变得极其缓慢,并且在处理复杂的大规模场景时缺乏可扩展性。尽管有多个工作提出了加速或缓解密集体积射线行进的方法,例如使用提议网络[4]、烘焙技术[11, 19]和表面渲染[41],它们要么通过增加更多MLP,要么牺牲渲染质量来换取速度。

**Grid-based Neural Fields and Rendering**  

        这种类型的场景表示通常基于稠密的均匀体素网格。在3D形状和几何建模中得到了广泛应用[12, 15, 21, 29, 35, 44, 57]。一些最近的方法还专注于通过利用空间数据结构来存储场景特征,从而加快辐射场的训练和推理,这些特征在射线行进过程中通过采样点进行插值和查询。例如,Plenoxel[13]采用稀疏体素网格插值连续的密度场并用球谐函数表示视角依赖的视觉效果。张量分解的思想在多个工作中得到了研究[9, 10, 50, 52],以进一步减少数据冗余并加速渲染。K-planes[14]使用神经平面来参数化3D场景,可选地还增加了一个时间平面来适应动态变化。几个生成性工作[8, 40]也利用三平面结构来建模3D潜空间,以提高几何一致性。InstantNGP[31]使用哈希网格,实现了更快的特征查询,从而使神经辐射场能够进行实时渲染。尽管这些方法可以生成高质量的结果,并且比全局MLP表示更加高效,但它们仍然需要查询许多样本才能渲染一个像素,并且在有效表示空空间方面存在困难。

**Point-based Neural Fields and Rendering**  

        基于点的表示方法利用几何原语(即点云)进行场景渲染。典型的过程是使用固定大小的无结构点集进行光栅化,并利用GPU和图形API中的专用模块进行渲染[7, 37, 38]。尽管这种方法速度快且灵活,可以解决拓扑变化问题,但它们通常会出现孔洞和离群点,导致渲染中出现伪影。为了缓解不连续性问题,已经广泛研究了可微分的基于点的渲染方法来建模物体的几何形状[16, 20, 27, 48, 55]。例如,[48, 55]采用可微分表面溅射方法,将点原语视为比像素大的圆盘、椭球或表面元(surfels)。一些方法[1, 24]将神经特征与点结合,并使用2D CNN进行渲染。与此相比,Point-NeRF[53]利用3D体积渲染以及在优化过程中进行区域生长和点修剪,实现了高质量的新视图合成。然而,它们依赖于体积射线行进,从而限制了显示速率。值得注意的是,最近的工作3D-GS[22]使用从结构光束法(SfM)初始化的各向异性3D高斯来表示3D场景,其中一个3D高斯作为体积进行优化,并被投影到2D以进行光栅化。由于它使用α混合器集成像素颜色,3D-GS生成了具有精细细节的高质量渲染,并能以实时帧速率进行渲染。

3 方法 

3.2 Scaffold-GS 方法 

 3.2.2 神经高斯推导

 3.2.3 锚点提炼

 3.2.4 损失函数设计

 4 试验

 5 结论

        在本研究中,我们提出了 Scaffold-GS,一种新型的 3D 神经场景表示方法,旨在实现高效的视角自适应渲染。Scaffold-GS 的核心在于其结构化的 3D 高斯体素布局,这些高斯体素由来自 SfM 的锚点指导,并通过视角依赖的 MLPs 实时解码其属性。我们展示了,采用这种方法,利用更加紧凑的高斯集合,能够达到与现有最先进算法相当甚至更好的结果。我们的视角自适应神经高斯的优势在于特别适用于 3D-GS 通常会失败的复杂情况。进一步地,我们还展示了锚点能够以有意义的方式编码局部特征,并在一定程度上展现出语义模式,这表明该方法在未来可能广泛应用于诸如大规模建模、操作和解读等任务。


http://www.ppmy.cn/devtools/134920.html

相关文章

Matlab深度学习(一)——如何构建一个卷积神经网络

1.1 CNN的核心 —— 卷积 我们以二维滑动卷积着重说明。与我们的滑动窗异常值检测类似,但滑动卷积涉及三个矩阵:第一个矩阵通常尺寸大且固定不动,在这称之为“输入矩阵”;第二个矩阵尺寸小,在输入矩阵上以从左到右&…

antdesign对话框输出html格式

antdesign对话框this. i n f o 、 t h i s . info、this. info、this.success、 this. e r r o r 、 t h i s . error、this. error、this.warning、this.KaTeX parse error: Expected }, got EOF at end of input: … this.message.success(‘文件上传成功’) this.handleReLo…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

Argo workflow 拉取git 并使用pvc共享文件

文章目录 拉取 Git 仓库并读取文件使用 Kubernetes Persistent Volumes&#xff08;通过 volumeClaimTemplates&#xff09;以及任务之间如何共享数据 拉取 Git 仓库并读取文件 在 Argo Workflows 中&#xff0c;如果你想要一个任务拉取 Git 仓库中的文件&#xff0c;另一个任…

OpenCV自学系列(2)——核心操作(core operations)

OpenCV官网指导教程第二期&#xff0c;对应官网的 core operation。 主要包括三大类&#xff1a; 1、图像基本操作 2、图像的算术操作 3、&#xff08;代码&#xff09;表现的测量和提高 主要使用到的方法如下&#xff1a; cv2.cvtColor() cv2.split() cv2.merge() cv2.copy…

用paramiko与SSH交互

# 导入paramiko库用于SSH连接&#xff0c;以及sys库用于处理命令行参数 import paramiko import sys# 定义一个函数send_command&#xff0c;用于发送命令到SSH服务器并打印输出结果 def send_command(ssh_client, cmd):# 使用exec_command方法执行命令&#xff0c;并获取输入、…

前馈神经网络 (Feedforward Neural Network, FNN)

代码功能 网络定义&#xff1a; 使用 torch.nn 构建了一个简单的前馈神经网络。 隐藏层使用 ReLU 激活函数&#xff0c;输出层使用 Sigmoid 函数&#xff08;适用于二分类问题&#xff09;。 数据生成&#xff1a; 使用经典的 XOR 问题作为数据集。 数据点为二维输入&#xff…

苍穹外卖学习-day11

1. Apac 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;Apache ECharts 常见的统计图形有&#xff1a;柱状图&#xff0c;条形…