【论文阅读笔记】高光反射实时渲染新突破:3D Gaussian Splatting with Deferred Reflection 技术解析
文章目录
- 3D Gaussian Splatting with Deferred Reflection
- Info
- Abstract
- Introduction
- Method
- 1.渲染模型
- 2. Loss函数和Normal 梯度
- 3. 训练
- RESULTS AND EVALUATION
- 1.和基线的比较
- Ablation Study
- Limitations
- 总结
- 思考
3D Gaussian Splatting with Deferred Reflection
Info
会议 【SIGGRAPH Conference Papers '24】
作者 浙江大学计算机辅助设计与计算机图形学国家重点实验室 周昆教授团队
Abstract
基于神经网络的辐射场方法与高斯辐射场方法在新视角合成领域已取得重大突破,然而镜面反射效果的实现仍面临严峻挑战——高频辐射场的稳定精确拟合始终是业界公认的难题。本研究提出一种结合延迟着色与高斯溅射的镜面反射渲染方案,其核心突破在于解决了环境贴图反射模型的双重困境:该模型既要求精确的表面法线,又因梯度不连续性而制约法线估计精度。我们通过延迟着色生成的逐像素反射梯度,构建相邻高斯单元优化过程的桥梁,使近似准确的法线估计得以渐进传播,最终覆盖所有反射物体表面。实验表明,本方案在合成场景与真实场景中均能持续提升峰值信噪比(PSNR),其镜面反射效果质量显著超越现有顶尖技术与同期研究成果,同时保持与基础高斯溅射方法几乎一致的渲染帧率。
Introduction
多图3D场景的新视角合成是计算机图形学与视觉领域的经典课题。神经辐射场NeRF通过MLP隐式场体渲染实现顶尖画质,而3D高斯溅射(3DGS)采用稀疏3D高斯建模,兼具高分辨率实时渲染与高效训练优势,成为更优方案。
然而,高斯点云建模镜面反射仍然具有挑战性。尽管3DGS通过每个高斯提供了视角依赖的着色,利用球面谐波(SH)函数,但其方向频率过于有限,无法有效地建模镜面反射。3DGS的训练过程实际上是幻觉化高斯分布,以显式地建模反射图像,而对于非平面反射体来说,缺乏明确定义的空间位置。因此,镜面效果最终被模拟得很差,副作用是影响了几何质量。
本文提出了一种基于延迟着色的高斯溅射镜面反射渲染方法。该方法为每个高斯分布引入反射强度标量参数,并将高斯椭球的最短轴视作法线向量。渲染过程分为两个阶段:首先通过高斯溅射生成包含基础色、法线和反射强度的屏幕空间贴图;随后在像素着色阶段,根据反射方向查询环境贴图获取镜面反射颜色,最终通过加权混合基础色与反射色输出结果。环境贴图、各高斯反射强度及其他参数均在训练过程中同步优化。
环境贴图查询看似简单,却给训练带来巨大挑战。作为高频查找表,环境贴图对法线精度要求极高,却难以提供有效优化梯度。此外,半透明高斯混合体的表面定义本就模糊。为此,我们提出法线传播训练算法:反射强度较大的高斯通常具备较准确的法线,通过扩展其覆盖范围,可将法线传播至邻近高斯。当两者重叠时,共享像素将继承较准确的法线,从而获得有效梯度来优化后者法线。
延迟着色模型是训练的关键。高斯溅射阶段将基础色和法线混合为视口对齐纹理,用于计算反射并合成最终颜色,通过色差损失反向传播形成"颜色→混合法线→独立高斯法线"的梯度通道,实现法线协同优化。逐高斯着色中,梯度直接独立传播至各高斯法线,无法实现这种协同机制。
实验结果表明,本方法在多个公开数据集上均显著优于现有最优方法和同期研究成果(图1),能够合成更高质量的镜面反射效果。无论是合成场景还是真实场景,本方法都实现了峰值信噪比(PSNR)的稳定提升,同时保持了与原始高斯溅射几乎相同的实时渲染帧率。此外,本方法还能生成更精确的法线和环境贴图估计(图11、图12)。不过,该方法并未提供完整的几何-光照-材质分解方案,因此不支持逆向渲染或重打光。我们的着色模型将镜面反射单独处理,而将粗糙反射、各向异性/分层材质以及全局光照效果交由基础的球谐颜色表示,从而在新视角合成任务中实现了优于全分解方法的渲染质量。
Method
1.渲染模型
我们的延迟渲染模型由两个过程组成。第一个是高斯溅射。遵循3DGS渲染器的原始情景 [Kerbl et al. 2023],我们从高斯参数 Θ 𝑖 Θ_𝑖 Θi、每个高斯的视角依赖SH颜色 𝑐 𝑖 ( v ) 𝑐_𝑖(v) ci(v)开始,并计算像素颜色 𝐶 ( v ) 𝐶(v) C(v)。这里 𝑖 𝑖 i是高斯索引, v v v表示视角方向。为了简化,我们还用 v v v对输出图像进行参数化,并将溅射过程视为一个黑盒,使用线性权重𝐺来混合颜色:
C ( v ) = ∑ i c i ( v ) G ( Θ i , v ) (1) C(\mathbf{v}) = \sum_{i} c_{i}(\mathbf{v}) G\left(\Theta_{i}, \mathbf{v}\right) \tag 1 C(v)=i∑ci(v)G(Θi,v)(1)
这里最昂贵的组件是权重 𝐺。它是在每个高斯-每个像素的最细粒度下计算的,具有顺序敏感性,并且需要作为预处理进行排序。然而,一旦 𝐺 被计算出来,混合额外的每个高斯值与 𝑐 𝑖 𝑐_𝑖 ci 是非常便宜的。我们将其应用于 𝑛 𝑖 𝑛_𝑖 ni,解释为每个高斯椭球体的法向量的最短轴,以及 𝑟 𝑖 𝑟_𝑖 ri,一个控制其镜面反射强度的每个高斯标量:
N ( v ) = ∑ i n i G ( Θ i , v ) , R ( v ) = ∑ i r i G ( Θ i , v ) (2) N(\mathbf{v}) = \sum_{i} n_{i} G\left(\Theta_{i}, \mathbf{v}\right), \quad R(\mathbf{v}) = \sum_{i} r_{i} G\left(\Theta_{i}, \mathbf{v}\right) \tag 2 N(v)=i∑niG(Θi,v),R(v)=i∑riG(Θi,v)(2)
其中 𝑛 𝑖 𝑛_𝑖 ni根据需要翻转,以面向相机。
其次,延迟反射通道组合了最终像素颜色 𝐶 ′ ( v ) 𝐶'(v) C′(v),与高斯分布 𝐺 𝐺 G无关:
C ′ ( v ) = ( 1 − R ( v ) ) C ( v ) + R ( v ) E ( 2 v ⋅ N ( v ) N ( v ) ∥ N ( v ) ∥ − v ) (3) C'(\mathbf{v}) = (1-R(\mathbf{v}))C(\mathbf{v}) + R(\mathbf{v})E\left(\frac{2\mathbf{v}\cdot N(\mathbf{v})N(\mathbf{v})}{\|N(\mathbf{v})\|} - \mathbf{v}\right) \tag 3 C′(v)=(1−R(v))C(v)+R(v)E(∥N(v)∥2v⋅N(v)N(v)−v)(3)
其中 𝐸 是一个可学习的环境图,使用双线性滤波器在反射方向上进行查询。
图2展示了我们渲染模型的各个组件。每个高斯分布的法线 𝑛 𝑖 𝑛_𝑖 ni和反射强度 𝑟 𝑖 𝑟_𝑖 ri会分别进行训练和溅射(splatting)操作。这些溅射生成的图像会在着色阶段(shading pass)进行合成,最终输出渲染图像。整个过程完全在屏幕空间(screen space)中完成。环境贴图则完全基于最终渲染结果进行训练,与高斯分布本身保持解耦。
2. Loss函数和Normal 梯度
在训练过程中,我们使用与[Kерbl等人2023]中相同的组合图像损失L1和DSSIM损失函数:
L = ( 1 − λ ) L 1 + λ L D − S S I M (4) \mathcal{L} = (1-\lambda)\mathcal{L}_{1} + \lambda\mathcal{L}_{D-SSIM} \tag 4 L=(1−λ)L1+λLD−SSIM(4)
其中 λ = 0.2 \lambda=0.2 λ=0.2.
处理法向量梯度$\frac{\partial \mathcal L}{\partial N}
是训练中的一大挑战。由于损失函数完全基于颜色,我们的法向梯度最终来源于环境地图: 是训练中的一大挑战。由于损失函数完全基于颜色,我们的法向梯度最终来源于环境地图: 是训练中的一大挑战。由于损失函数完全基于颜色,我们的法向梯度最终来源于环境地图:\frac{\partial \mathcal L}{\partial N}=\frac{\partial \mathcal L}{\partial E} \frac{\partial E}{\partial N} 。这里的 𝐸 是一个纹理查询, 。这里的𝐸是一个纹理查询, 。这里的E是一个纹理查询,\frac{\partial E}{\partial N}$的唯一非零分量来自双线性纹理滤波器。从直观上看,这可以解释为梯度下降过程将反射方向旋转至最符合期望像素颜色的环境地图纹素,通过更新潜在的𝑁。然而,旋转目标仅限于参与特定查询的四个纹素,从而将有效梯度限制在已经接近正确值的法向量上。幸运的是,我们的延迟阴影模型提供了一个优雅的解决方案。由于我们在像素级别执行环境查找,每个高斯只需覆盖几个具有近似正确法向的像素即可接收有效的梯度。我们利用这一特性在相邻的高斯之间传播正确的法向,最终扩展到我们能够找到的所有反射表面。具体细节将在下一小节中解释。
3. 训练
我们通过关闭视角相关的颜色和反射最优化,启动一个短暂的视角独立阶段,以引导我们的训练过程。在此过程中,反射强度 𝑟 𝑖 𝑟_𝑖 ri初始化为0,且每个高斯球谐颜色函数 𝑐 𝑖 ( v ) 𝑐_𝑖(v) ci(v)被限制为0阶,即常数项 𝑐 𝑖 ( v ) = 𝑐 𝑖 , 0 𝑐_𝑖(v) = 𝑐_{𝑖,0} ci(v)=ci,0。由于 𝑟 𝑖 = 0 𝑟_𝑖 = 0 ri=0,反射相关的最优化被禁用,因为相关的梯度的大小为零。这个阶段持续几千次迭代,通常在高端图形处理器上需要几分钟。最优化过程与原始的3DGS [Kerbl et al. 2023]相同。
在接下来的训练中,我们开启每个高斯反射强度 𝑟 𝑖 𝑟_𝑖 ri 和环境图的优化。在优化过程中,一些高斯的反射强度可能相对较大(即 𝑟 𝑖 > 0.1 𝑟_𝑖 > 0.1 ri>0.1)。观察到这些反射性高斯具有近乎正确的法向量(见图 3),我们建议将它们的法向量传播到附近的高斯。具体来说,当一个近似正确法线的高斯与另一个没有法线的高斯重叠时,一些共享的像素也可以具有近似正确的法线。这将获得有意义的法向梯度,并有助于优化后续高斯的法向。为了促进这种传播,我们定期将所有高斯的不透明度提高到至少0.9,将反射强度提高到至少0.001,然后将反射高斯的两个最长轴缩放至1.5倍,而保持最短的用作法向的轴不变。这使几乎每个反射高斯都与其邻居重叠,并且普遍较高的不透明度确保每个可见高斯在表面法向上贡献显著的幅度,并在反向传播过程中受到有意义的法向梯度的影响。我们将这一过程称为法向传播。这使得几乎每个反射高斯与其邻域重叠,并且普遍较高的 opacity 确保每个可见高斯对表面法线产生显著影响,反过来,在反向传播过程中受到有意义的法向梯度的影响。我们将这一过程称为法向传播。
图3展示了随着训练的进行,正确法线如何传播的具体样例。从通过常色拟合生成的嘈杂最短轴方向开始,一些随机正确的点在第9000步时首先获得了反射强度。随后,它们将正确的法线向量传播到相邻的高斯分布,逐渐扩散到嘈杂的凸起上,最终形成一个光滑的球体。反射强度图在早期增加,但只有在法线向量变得更加准确时,才开始接近正确值。
扩散颜色 𝑐 𝑖 , 0 𝑐_{𝑖,0} ci,0已经通过视角无关的引导优化,在反射训练过程中,它们往往会出现过拟合,这可能会妨碍反射表面的发现。为了抵消这一影响,我们故意对尚未反射的高斯颜色进行破坏,对于 𝑟 𝑖 ≤ 0.1 𝑟_𝑖 ≤ 0.1 ri≤0.1的情况,在每次应用法线传播时添加±10%的噪声。我们将这一过程称为颜色破坏。
我们周期的不透明度提升与原始3D高斯点云中的周期不透明度钳制相冲突,后者将不透明度限制为不超过0.01 [Kerbl et al. 2023]。颜色干扰也阻止了颜色项的收敛。作为解决方法,我们将提升不透明度的周期与钳制不透明度的周期交替进行,以确保它们不会同时应用。一旦高斯数量中满足 𝑟 𝑖 > 0.1 𝑟_𝑖 > 0.1 ri>0.1的情况停止增加,并且经过固定次数的迭代后,我们也终止法线传播和颜色干扰,这表明无法找到更多的镜面表面。只有在满足镜面终止标准后,我们才开始优化更高阶的颜色球谐系数,以防止它们干扰反射训练。
RESULTS AND EVALUATION
作为我们核心延迟反射设计的消融研究,我们还实现了一种前向着色替代方案,该方案在单个高斯上计算反射颜色并将其喷溅到最终图像中。该替代前向渲染器用于训练和测试,其他训练设计保持不变。
数据集 我们在多个包含高光物体的数据集上进行评估,包括两个合成数据集:Shiny Blender [Verbin et al. 2022] 和 Glossy Synthetic [Liu et al. 2023],以及一个由 Ref-NeRF [Verbin et al. 2022] 使用的真实捕获数据集。我们还使用非高光 NeRF Synthetic [Mildenhall et al. 2020] 数据集作为回归测试。
实现细节 对于真实场景,我们使用一个球形领域𝑀来覆盖前景物体。我们将延迟反射阶段限制在𝑀内部的高斯分布,以减少训练过程中来自背景的干扰。根据我们的观察,仅在有限视角下捕捉到的背景物体表现出与反射物体相似的行为,这干扰了我们的环境映射拟合。
基准和指标 我们将我们的方法与以下基准进行比较:3DGS:普通的3D高斯喷涂[Kerbl et al. 2023],没有对反射进行特殊处理;GShader [Jiang et al. 2023]:一种使用反射感知着色器对每个高斯进行着色的方法,可以视为一种可微分的前向渲染流水线;ENVIDR [Liang et al. 2023]:一种基于SDF的方法,使用神经渲染进行逆向渲染;Ref-NeRF [Verbin et al. 2022]:一种基于NeRF的方法,专注于反射物体的渲染;NPC:神经点光学效应[NPC et al. 2022]:一种渲染器,使用MLP扭曲基于点的幻觉反射。除NPC外,所有方法均应用于相同的输入数据,而NPC需要覆盖每个输入图像中所有反射体的掩码。我们使用[Kirilov et al. 2023]估计的前景掩码作为替代。我们展示了使用三种标准指标测量的定量结果:PSNR、SSIM和LPIPS。为了展示法线和光照重构的准确性,我们还将我们的方法与基于SDF的逆向渲染方法进行比较:ENVIDR [Liang et al. 2023]和NVDiffRec [Munkberg et al. 2022]。我们使用平均角度误差(MAE) 来评估法线重构的准确性。我们使用LPIPS评估环境图重构的准确性,以减轻反照率、粗糙度和光之间的基本分歧。
1.和基线的比较
图像质量 表1展示了在三个数据集上的定量比较结果。我们的方法在合成数据集的图像质量方面表现出明显优势,并且在真实数据集上也显示出可比的结果。合成数据集和真实数据集的视觉比较如图8、图9和图10所示。Ref-NeRF [Verbin et al. 2022]在烤面包机场景中展示了一些规律性模式。NPC [Kopanas et al. 2022]的结果则噪声较多,并倾向于表现出扩散纹理。当相机视点具有高度自由度且反射器包含扩散和镜面成分时,多层感知机预测的变形场受到严重拉伸。3DGS [Kerbl et al. 2023]和GaussianShader [Jiang et al. 2023]的结果在反射表面上模糊或显示出不正确的反射。ENVIDR [Liang et al. 2023]的结果过度平滑了一些局部细节。我们的方法生成的表面看起来更为光滑,同时没有模糊反射细节,并且更接近真实值。在特写视图中,我们的结果显示出显著较少的可见高斯边界,通常表现为椭圆形的色块。
法线重建。在幕后**,质量的提升得益于表面法线和环境图的拟合质量改善**。
表2列出了Shiny Blender数据集中法线图的平均均值角误差。尽管我们的方法仅关注镜面表面的法线,但我们仍然取得了与ENVIDR [Liang et al. 2023] 相媲美的质量。
图11比较了我们的方法、ENVIDR、Ref-NeRF [Verbin et al. 2022] 和GaussianShader [Jiang et al. 2023] 预测的法向量,以及真实值和3DGS最短轴初始化。如图所示,我们的方法在仅依靠颜色损失项的情况下,能够生成平滑的结果,同时保持锐利的边界,例如咖啡场景中碟子和杯子之间的锐利分离。基于SDF表示的ENVIDR为球体提供了几乎完美的法线,但在细节几何上存在不足,例如汽车轮辋和薄杯壁,由于SDF的平滑性而导致失真。RefNeRF产生了锐利但带噪声的结果。GaussianShader通过平滑先验过滤掉噪声,但不幸的是也模糊了物体边界,例如咖啡场景中碟子和杯子之间的边界,并在球体上显示出一些表面缺陷。
光照重构 我们在表2中定量比较了光重构的质量。由于我们简单的渲染模型减少了逆问题的病态性,我们取得了最佳质量。我们还可视化了由GaussianShader、ENVIDR、NVDiffRec和我们的方法重构的环境图。为了补偿基本的光-反照率分歧,我们在比较之前将两个环境图的总能量进行均衡。
如图12所示,逐像素反射使我们的方法能够重构出显著较少噪声的环境图,几乎实现全方向覆盖,而GaussianShader只能为每个高斯重构出少量纹理单元,导致图像噪声大且有许多空洞。对于基于SDF的方法(ENVIDR和NVDiffRec),它们在完美分解光照、几何和材料方面存在困难,导致光照估计不稳健。
效率 表3列出了所有测试方法的数据集平均训练时间和渲染帧率。帧率值计算为平均帧渲染时间的倒数,以减少不公平的大数字对简单场景的影响。作为一个反射无关的参考,3DGS [Kerbl et al. 2023] 作为性能上限。基于NeRF的方法RefNeRF [Verbin et al. 2022]、基于SDF的方法ENVIDR [Liang et al. 2023] 和基于点的方法NPC [Kopanas et al. 2022] 训练时间需要数十小时。
Ablation Study
我们进行各种消融研究以验证关键设计选择的影响。具体而言,我们比较了延迟着色和前向着色,评估了法线传播和颜色破坏的必要性。我们还对非镜面NeRF合成数据集[Mildenhall等,2020]进行了回归测试。
延迟着色与前向着色 正如表1所示,在我们的方法中使用延迟着色相比于前向着色,在所有场景中均获得了更好的PSNR、SSIM和LPIPS。如图4所示,延迟着色能够生成具有像素级细节的清晰反射,例如最右侧列中的窗框。最左侧的茶壶场景也展示了反射环境的更完整重建,能够精确呈现窗帘形状,而前向流水线则未能捕捉到这一点。我们将延迟着色在逆向渲染中的优点总结为两个方面。
- 精确到像素的法线图减轻了不精确高斯法线的影响,同时也允许具有正确法线的高斯向不正确的法线传播梯度。
- 环境图与图像损失的关联更为紧密,这加速了其最优化,并进一步帮助引导法向量朝向正确的方向。
正常传播和颜色破坏的必要性 当相应的算法组件被禁用时,图5展示了在不同训练步骤下的法线图。表5评估了定量结果。
在没有法线传播的情况下,法线图在整个训练过程中几乎保持不变。在没有颜色干扰的情况下,法线传播显著减缓并提前收敛,被过拟合的高斯颜色所超越。这两种情况均导致最终图像质量显著下降。
分解结果 我们在图6中可视化了基颜色图、反射颜色图、反射强度图和最终结果。我们的方法精确捕捉了镜面反射,同时将其他效果留给基SH颜色,例如球体场景中的粗糙带和tbell场景中的光泽边缘。非镜面场景中的回归。
表6比较了我们的方法与普通3DGS [Kerbl等,2023]在非镜面场景中的表现。我们能够以最小的回归实现几乎无法区分的质量。由于我们使用相同的图像损失函数且没有额外的正则化,我们能够正确地将反射强度估计为漫反射物体的零。虽然我们的法线传播依赖于反射,但我们保留的SH着色根本不使用法线,而漫反射物体上的法线质量并不重要。
Limitations
我们的方法每个像素最多只能处理一层反射材料,这一点继承自传统的延迟着色。图7顶部行中的汽车展示了我们算法在透明物体上表现出的两种不同特性。前窗收敛于一个纯反射表面,而侧窗则收敛于纯透明表面。一个基本的解决方案首先需要一种方法,在初始化期间可靠地在透明窗户上创建高斯分布。
法线传播在凹形场景(如图7底部行中的钟形场景)上效果较差。训练仍然收敛,但需要的时间明显更长。更好设计的最优化策略可能会解决这个问题。
总结
我们提出了一种高质量的延迟高斯溅射渲染器,专注于反射。它在几乎相同的帧率下展示了稳定的训练和具有竞争力的视觉质量,且生成准确的表面法线和环境贴图。我们的延迟着色方法可能为未来的探索开辟了许多可能性。在高斯溅射的背景下,探索渲染方程的更多创意拆分将是非常有趣的。我们的流水线还可以扩展到更高质量的反射算法,超越环境贴图,包括屏幕空间反射[McGuire和Mara 2014]以及硬件光线追踪。将3D高斯和可微渲染推广到这些方法中可以显著提高反射质量。探索添加基于物理的粗糙度的可能性也是非常有趣的,这样可以将我们的方法推广到光泽材料。
思考
相比于 GSshader(可以参考之前的链接),本篇文章在训练和渲染速度上有了明显的提升,可能得益于可以使用更少的 gaussian 收敛,且像素级别的 loss 反传更有益于收敛。