项目:https://pixelgs.github.io/
标题:Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting
来源:香港大学;腾讯AI Lab
文章目录
摘要 一、前言 二、相关工作 1.新视图合成 2.基于点的辐射场 3.Floater 的消除 三、方法 3.1 GS的自适应密度控制 3.2 Pixel-aware Gradient 像素敏感梯度 3.3 Scaled Gradient Field 梯度缩放 四、效果提示:关注B站【方矩实验室】,查看视频讲解
摘要
三维高斯溅射(3DGS)在提高实时渲染性能的同时,展示了令人印象深刻的新视图合成性能。然而,它的有效性在很大程度上依赖于初始点云的质量,导致在初始化点不足的区域出现模糊和针状伪影( needle-like artifacts)。这个问题主要是由于点云的增长条件,它只考虑了可观测视点的splats的平均梯度大小,因此对于许多只覆盖在边界内的可观测的大高斯值无法增长。
为了解决这个问题,Pixel-GS将被覆盖的像素数,视为动态平均不同视角的梯度的权重,从而促进大高斯分布的增长。初始化点不足的区域内的点可以更有效地增长,从而导致更准确和详细的重建。此外,提出一策略,根据到相机的距离来缩放梯度场,以抑制相机附近floater的生长。实验在Mip-NeRF 360和Tanks & Temples。
提示:以下是本篇文章正文内容,下面案例可供参考
一、前言
新视点合成(NVS)是计算机视觉和图形学中的一个基本问题。近年来,三维高斯溅射(3DGS)[21]因其基于点的三维场景的明确表示和实时渲染性能而受到越来越多的关注。
3DGS利用运动结构(SfM)过程产生的稀疏点仔细初始化点云,并提出了一种自适应密度控制机制,在优化过程中对点进行分割或克隆。 然而,这种机制在很大程度上依赖于初始点云的质量,不能有效地在初始点云稀疏的区域增长点,导致合成图像中出现模糊或针状伪影。在实际应用中,SfM的初始点云不可避免地存在重复纹理区域的点不足,观测量很少。如图1的第一列和第二列所示,RGB图像中的模糊区域与初始化点很少的区域对齐,而3DGS无法在这些区域中生成足够的点。
在本质上,这个问题主要归因于何时分裂或克隆一个点的条件。3DGS通过检查 Normalized Device Coordinates(NDC)中的点的平均梯度大小是否大于一个阈值来决定它。梯度的大小在不同的视点上被平均,阈值是固定的。大高斯分布通常在许多视点中可见,其投影区域的大小在不同视图中差异显著,导致梯度计算所涉及的像素数量差异显著。根据高斯分布的数学形式,在高斯投影中心附近的几个像素,比远离中心的像素对梯度的贡献要大得多。 较大的高斯分布通常有许多视点,其中投影中心点附近的区域不在屏幕空间内,从而降低了平均梯度,使它们难以分割或克隆。这个问题不能仅仅通过降低阈值来解决,因为它更有可能鼓励 growing points in areas with sufficient points,,如图1的第三列所示,仍然在点不足的区域留下模糊的伪影。
在本文中,我们提出从像素的角度来计算点的平均梯度大小。在计算高斯分布的平均梯度幅度时,我们考虑了每个视图中高斯分布覆盖的像素数,将视图的平均替换为视图的加权平均。这背后的动机是放大大高斯的梯度贡献,同时保持分裂或克隆小高斯的条件不变,这样我们就可以有效地在具有大高斯的区域中增长点。同时,对于小高斯分布,由于不同视点间覆盖像素数的变化最小,加权平均对最终梯度的影响很小。此外,Pixel-GS根据点的深度值来放大NDC空间中的梯度场,从而抑制摄像机附近“飞蚊”的生长。
-1.分析了3DGS中模糊伪影的原因,并提出从像素的角度优化点的数量,从而在初始点不足的区域有效地增长点。
2.提出了一种简单而有效的梯度缩放策略,来抑制相机附近的“folater”伪影。
二、相关工作
1.新视图合成
新视角合成的任务是指从不同于原始输入视角的角度生成图像的过程。最近,NeRF [35]通过使用神经网络来近似辐射场和使用体积渲染[10,27,32,33]技术来进行渲染,在新的视图合成方面取得了令人印象深刻的结果。这些方法使用隐式函数(如MLPs [2,3,35]、基于特征网格的表示[6,13,29,37,46]或基于特征点的表示[21,50])来拟合场景的辐射场,并利用渲染公式进行渲染。由于需要通过MLP处理沿着射线的每个采样点以获得其密度和颜色,在体渲染过程中,这些工作明显受到低渲染速度的影响。随后的方法[15,41,42,56,58]将预先训练好的NeRF细化为稀疏表示,从而实现了NeRF的实时渲染。虽然一些先进的场景表示[2-4、6、7、13、16、25、29、37、46]提出了改进网络的一个或多个方面,如训练成本、渲染结果,渲染速度,3D高斯飞溅(3DGS)[21]仍然吸引越来越多的关注由于其显式表示,高保真结果,和实时渲染速度。最近,NeRF [35]通过使用神经网络来近似辐射场和使用体积渲染[10,27,32,33]技术来进行渲染,在新的视图合成方面取得了令人印象深刻的结果。这些方法使用隐式函数(如MLPs [2,3,35]、基于特征网格的表示[6,13,29,37,46]或基于特征点的表示[21,50])来拟合场景的辐射场,并利用渲染公式进行渲染。由于需要通过MLP处理沿着射线的每个采样点以获得其密度和颜色,在体渲染过程中,这些工作明显受到低渲染速度的影响。随后的方法[15,41,42,56,58]将预先训练好的NeRF细化为稀疏表示,从而实现了NeRF的实时渲染。虽然一些先进的场景表示[2-4、6、7、13、16、25、29、37、46]提出了改进网络的一个或多个方面,如训练成本、渲染结果,渲染速度,3D高斯飞溅(3DGS)[21]仍然吸引越来越多的关注由于其显式表示,高保真结果,和实时渲染速度
2.基于点的辐射场
基于点的表示(如点云)通常使用固定大小的、非结构化的点来表示场景,并使用gpu[5,43,45]进行栅格化渲染。虽然这是解决拓扑变化的一个简单而方便的解决方案,但它通常会导致孔洞或异常值,从而导致渲染过程中的伪影。为了缓解不连续的问题,研究人员提出了基于点的可微渲染,利用点来建模局部域[14,18,21,28,48,50,57]。在这些方法中,[1,23]使用神经网络来表示点特征,并利用二维CNNs进行渲染。Point-NeRF [50]使用神经三维点对三维场景进行建模,并提出了修剪和生长点的策略,以修复基于点的辐射场中的常见孔和异常值。3DGS [21]使用光栅格化方法进行渲染,这大大加快了渲染过程。它从SfM的稀疏点云初始化开始,分别使用三维高斯分布和球谐函数拟合每个点的影响区域和颜色特征。为了增强这种基于点的空间函数的表征能力,3DGS引入了一种基于每个点的NDC(归一化设备坐标)坐标和不透明度梯度的密度控制机制,管理点云的增长和消除。最近[8]在3DGS上的工作,通过结合深度和法线改进了点云增长过程,提高了低纹理区域的拟合能力。相比之下,我们的Pixel-GS不需要任何额外的先验或信息资源,例如深度和法线,并且可以直接在初始化点不足的区域增长点,减少模糊和针状伪影。
3.Floater 的消除
大多数辐射场场景表示方法都遇到伪影,主要出现在摄像机附近,稀疏输入视图更严重。一些论文[9,44]通过引入深度先验,解决漂浮物的问题。NeRFshop [19]提出了一种删除飞蚊蚊的编辑方法。Mip-NeRF 360 [3]通过增加一个沿每个射线的密度分布是单峰的先验,引入了失真损失,有效地减少了相机附近的floater。NeRF in the Dark[34]提出权重的 a variance loss以减少floater。FreeNeRF [52]为接近相机的点的密度引入了一个惩罚项,以减少相机附近的漂浮物。大多数这些方法抑制飞蚊通过将先验通过损失或编辑方法,而 “Floaters No More”[40]试图探索发生飞蚊出现的根本原因,指出飞蚊主要是因为,两个区域相同的 volume 和shape,参与计算的像素数量,与每个区域的相机的距离平方的倒数成正比。在相同的学习速率下,靠近摄像机的区域迅速完成优化,优化后,阻止其后面区域的优化,从而增加了在摄像机附近漂浮的可能性。 Pixel-GS则根据到相机的距离来缩放梯度场。
三、方法
首先回顾了3DGS中“自适应密度控制”的点云生长条件。然后,我们提出了一种从象素的角度计算点云增长条件下的平均梯度幅度的方法,显著提高了初始点不足区域的重建能力。
3.1 GS的自适应密度控制
在三维高斯溅射中,视点 k k k下的高斯 i i i会生成一个二维协方差矩阵 Σ Σ Σ,并确定相应的影响范围半径 R k i R^i_k Rki:
它覆盖了高斯分布中99%的概率。对于高斯 i i i,在视点 k k k下,摄像机坐标系中的坐标,以及像素坐标系中的坐标分别为:
当图像宽度为W像素,高度为H像素时,高斯i在同时满足以下六个条件时参与了视点k的计算:
3D GS的点splats分割、克隆,由高斯坐标参与计算的视点的NDC坐标梯度的平均大小决定的。具体来说,对于视点k下的高斯i,NDC坐标以及高斯转为两个高斯的标准为:(视点 k k k下的损失为 L k L_k Lk。在每100次的“自适应密度控制”迭代过程中,高斯 i i i参与了 M i M^i Mi个视角的计算,阈值 τ p o s τ_{pos} τpos设置为0.0002):
3.2 Pixel-aware Gradient 像素敏感梯度
以上标准足以在大多数区域适当地分布高斯分布,但伪影往往发生在初始点稀疏的区域。在3DGS中,与高斯i对应的椭球体的三个轴的长度被初始化:
其中,
d
1
i
d^i_1
d1i、
d
2
i
d^i_2
d2i和
d
3
i
d^i_3
d3i分别是到离高斯分布
i
i
i最近的三个点的距离。我们观察到,建模不充分的区域通常具有非常稀疏的初始SfM点云,导致这些区域的高斯分布初始化为更大轴长的椭球体。这导致了他们从太多的角度参与计算。这些高斯分布只在投影后的中心点在像素空间内或附近的视点上表现出更大的梯度。这意味着,从这些角度来看,大高斯分布在投影后覆盖了像素空间中的较大区域。这导致这些点在“自适应密度控制”过程中,每100次迭代,它们的NDC坐标的平均梯度较小(Eq 3),因为它们从太多的角度参与计算,并且在个别视点中只有显著的梯度大小。因此,这些点很难分割或克隆,导致这些领域的建模效果不佳。
方程分析 为什么前面提到的稀疏区域的高斯分布只能从足够覆盖的视点获得更大的NDC坐标梯度,而对于只影响边缘区域的视点,NDC坐标梯度更小。视点 k k k下的一个像素,对高斯 i i i的NDC坐标梯度的贡献为:
其中,因子
α
k
i
α^i_k
αki计算为:
c j p i x c^{pix}_j cjpix代表 j j j通道的颜色像素, m k i m^i_k mki代表视角k下包含在高斯 i i i的计算内的像素数量。 α k , p i x i α^i_{k,pix} αk,pixi作为投影高斯中心和像素中心之间的距离的函数,随着距离的增加呈指数衰减。
这导致在投影高斯分布的中心位置附近有几个像素,这对该高斯分布的NDC坐标梯度有主要贡献。对于大高斯分布,许多视点只会影响边缘区域,投射到这些视点中的像素上,导致这些视点参与计算,但NDC坐标梯度非常小。另一方面,我们观察到,对于这些点,对于一个给定的视点,当投影后的计算中涉及到大量的像素时,这些点在这个视点中往往表现出更大的NDC坐标梯度。因为当大量的像素在投影后参与计算,投影中心点往往在像素平面内,根据之前的计算,一些像素附近的中心点是NDC坐标梯度的主要贡献者。
为了解决这个问题, 我们为每个视点上的每个高斯坐标的NDC坐标的梯度大小分配一个权值,其中权值是从相应的角度计算该高斯坐标时所涉及的像素数 。 这种计算方法的优点是,对于大高斯分布,计算中涉及的像素数在不同的视点之间有显著差异。大高斯分布,只在计算中涉及到更多像素的视点中接收到更大的梯度。用参与像素的数量来加权梯度的大小,可以更合理地促进这些高斯分布的分裂或克隆;对于较小的高斯,不同视点之间所涉及的像素数的变化是最小的,当前的平均方法不会产生显著的变化,也不会导致过多的额外内存消耗。
高斯发生分裂、克隆的修正后方程为 :
其中,
M
i
M^i
Mi是高斯i在相应的100次“自适应密度控制”迭代中参与计算的视点数,
m
k
i
m^i_k
mki是高斯
i
i
i在视点
k
k
k中参与的像素数。∂分别表示视点k处的NDC空间的x方向和y方向上的高斯
i
i
i的梯度。高斯分布参与像素计算的条件为(与等式2共同给出) :
3.3 Scaled Gradient Field 梯度缩放
当使用“像素敏感梯度”来决定一个点是应该分裂还是克隆(Eq。7)可以解决视点不足和重复纹理的建模区域的伪影,我们发现点云增长的条件也加剧了摄像机附近floater的存在。这主要是因为摄像机附近的floater占据了较大的屏幕空间,其NDC坐标有显著的梯度,导致点云增长过程中floater数量的增加。为了解决这个问题,我们缩放了NDC坐标的梯度场。
具体使用半径来确定场景的比例:
训练集的N个视角中,
C
j
C_j
Cj表示第
j
j
j 个视角像机的世界坐标。第
k
k
k个视点下对高斯
i
i
i的NDC坐标的梯度进行缩放,比例因子
f
(
i
,
k
)
f(i,k)
f(i,k)的计算方法为:
其中
µ
c
,
z
i
,
k
µ^{i,k}_{c,z}
µc,zi,k 是高斯
i
i
i的摄像机z坐标,从视点上表示该高斯值的深度,
γ
d
e
p
t
h
γ_{depth}
γdepth是手动设置的超参数。
等式10中使用平方项作为比例系数来源于“Floaters No More”[40],其指出NeRF [35]中的floater主要是由于投影后靠近摄像机的区域占据了更多的像素,这导致了在优化过程中接收到更多的梯度。这导致这些区域首先被优化,从而掩盖了最初正确的空间位置无法被优化。所占据的像素的数量与到相机的距离的平方成反比,因此梯度的平方距离的缩放。
综上,基于像素的优化的一个主要问题是空间梯度场的不平衡,导致不同区域的优化速度不一致。不同空间区域的梯度场的自适应尺度可以有效地解决这一问题。因此,高斯“分裂”或“克隆”的最终计算为:
四、效果
Mip-NeRF 360以及Tanks & Temples数据集上指标:
Pixel-GS (本文) 和 3DGS∗(调整阈值后的GS)的定性结果:
消融定性实验:
总结