用于3D高斯飞溅效果高效混合的变形级筛选技术

《Proceedings of the ACM on Computer Graphics and Interactive Techniques》:Warp-Level Culling for Efficient Blending in 3D Gaussian Splatting

【字体: 大 中 小 】 时间:2026年07月06日 来源:Proceedings of the ACM on Computer Graphics and Interactive Techniques 3.1

编辑推荐:

  摘要 AI总结:要查看此由AI生成的总结,您需要拥有高级访问权限。了解更多信息并登录。 摘要 3D高斯溅射技术是实时捕捉和渲染辐射场的事实标准,在众多应用中得到了广泛应用。近期有一些方法被提出用于提升渲染速度,但这些方案往往会导致模型分辨率下降、依赖会降低图像质量的

  摘要
AI总结:要查看此由AI生成的总结,您需要拥有高级访问权限。了解更多信息并登录。

摘要
3D高斯溅射技术是实时捕捉和渲染辐射场的事实标准,在众多应用中得到了广泛应用。近期有一些方法被提出用于提升渲染速度,但这些方案往往会导致模型分辨率下降、依赖会降低图像质量的近似方法,或需要专用硬件。我们仔细分析了用于渲染的标准CUDA架构的性能,重点关注了整体数据传输、同步瓶颈以及计算负荷。基于分析结果,我们对3DGS的alpha混合阶段提出了三项优化措施,这些优化能够在不改变渲染输出的前提下提升性能。首先,我们利用线程级协作对图像块进行细分,有效剔除与像素没有几何重叠的溅射点,从而避免昂贵的alpha值计算。其次,我们选择更有利于优化内核中计算和内存负荷的渲染批次大小。第三,我们重新整理溅射数据结构,使其更便于在共享内存中传输。这些算法改进可直接应用于标准的CUDA架构,便于未来实现时整合进去。我们通过与其他现代实现方法的对比,展示了这些改进所带来的性能提升。

AI总结(实验性):该总结是由自动化工具生成的,并非由文章作者撰写或审核。它旨在帮助人们发现相关内容、评估文章的相关性,以及帮助来自相关研究领域的读者理解该工作。它是对作者提供的摘要的补充,而作者提供的摘要仍是论文的主要总结内容。完整文章才是具有权威性的版本。点击此处了解更多信息。点击此处对该总结的准确性、清晰度及实用性发表意见,您的反馈将有助于后续改进和生成新的版本。要查看此由AI生成的通俗语言总结,您需要拥有高级访问权限。

图1:不同方法下的3DGS渲染帧率对比,结果显示与Faster-GS相比,我们的方法在RTX 4090上的速度快19%,在2070 Super上快32%,同时生成的图像完全一致。

1 引言
3D高斯溅射技术[Kerbl等人,2023年]已迅速成为新型视图合成的主流技术,目前已有数千种后续方法采用并扩展了标准的CUDA渲染架构。令人惊讶的是,尽管该领域已有大量研究成果,但我们仍发现提升渲染速度的空间。为此,我们提出了一种更快的3DGS渲染算法,其输出与现有解决方案完全相同。此外,该方法可在现有的CUDA可微分架构中实现,因此也可用于训练过程。我们通过线程级子块剔除、调整渲染批次大小,以及重新整理alpha混合内核中的溅射数据,实现了渲染性能的提升。

大多数旨在提升3DGS推理性能的方法都会带来图像质量方面的限制。例如,PUP 3D-GS[Hanson等人,2025b年]根据对最终输出的重要性来删除模型中的高斯项;Sort-Free Gaussians[Hou等人,2025年]通过避免昂贵的排序操作来近似实现alpha混合;VKRayGS[Rota Bulò等人,2025年]则利用独立于CUDA架构的代理几何结构和固定功能硬件来提升渲染速度。这些方法虽然提升了速度,但会牺牲图像质量或可微性,通常还需要不同的代码库来实现渲染和优化功能。Faster-GS[Hahlbohm等人,2026年]是一种较新的方法,旨在在不影响图像质量的前提下提升训练和渲染性能。

为克服这些限制,我们的目标是提升标准、可微分的CUDA架构的渲染速度,同时保持图像质量不变。我们的工作是在Faster-GS [Hahlbohm等人,2026年]的基础上进行的,该研究对多种最新成果进行了综述,并将它们结合起来,形成了最快的3DGS训练实现方案。Faster-GS也保持了与原始3DGS实现相同的视觉精度,并且仍在CUDA可微分框架内运行。Hahlbohm等人主要致力于提升训练速度,而将提升渲染速度视为其工作的范畴之外。相比之下,我们则专注于分析他们现有的最先进的渲染推理架构,进一步改进它,并将其整合到他们的训练流程中,以便在未来进行更多优化。

我们首先对推理架构进行了理论吞吐量分析,以确定可以提升渲染速度的环节。分析结果表明,alpha混合GPU内核的实际运行速度仅为理论最优值的二到三倍。基于这一分析结果,我们对推理架构中的最终alpha混合内核提出了三项优化措施:
(1) 对图像块进行细分,利用线程级并行性剔除那些对子块中的像素没有贡献的溅射点;
(2) 调整渲染批次大小,以优化内存和计算效率;
(3) 将溅射数据重新组织为适合共享内存使用的优化结构。

在我们的测试数据集上,这些改进使得在所有测试过的GPU上,渲染帧时间平均比Faster-GS快17%(帧率提高20%,按几何平均计算),在RTX 2070 Super上甚至可快24%(帧率提高32%)。我们在三代NVIDIA GPU上测试了该实现方案:NVIDIA RTX 4090、NVIDIA RTX 3090以及NVIDIA RTX 2070 Super,验证了其带来的性能提升效果。相关代码实现可在补充材料中找到,也可像Faster-GS一样用于ICG神经辐射场与新型视图合成框架(NeRFICG)[Kappel等人,2026年]中。

2 相关工作
近年来,3DGS领域的性能提升主要体现在三个方向:模型压缩、alpha混合近似方法,以及GPU内核优化。我们的工作属于第三类,旨在在保持与Faster-GS相同输出质量的同时提升渲染速度。由于3DGS领域的发展十分迅速,我们这里主要介绍一些更为知名的先前研究成果。

2.1 模型压缩
渲染高斯项本质上是一个对内存需求很高的任务。每个高斯项都包含大量数据,而渲染流程中的很大一部分工作就是将这些数据传输并存储到所需位置。最大的瓶颈在于通过全局内存(DRAM)在GPU内核之间读取和传输高斯数据。因此,减小模型规模和提升内存带宽是提升渲染速度的有效手段。近期的一些方法,如LightGaussian[Fan等人,2024年]、Mini-Splatting[Fang和Wang,2024年]以及PUP 3D-GS[Hanson等人,2025b年],都是根据重要性或敏感度得分来删除某些溅射点;而Speedy-Splats[Hanson等人,2025a年]、Taming-3DGS[Mallick等人,2024年]以及FastGS[Ren等人,2025年]则利用类似的质量评估指标,在优化过程中提高模型密度并剔除高斯项。这样得到的模型虽然高斯项数量大幅减少,但由于表示更加稀疏,图像质量会有所下降。而我们的实现方案则在不修改底层模型的前提下提升渲染性能,从而保持相同的视觉质量。更重要的是,这意味着我们的方案也可以应用于现有的已训练模型。

2.2 渲染优化方法
alpha混合是渲染重叠透明区域的最精确方法,但其要求必须按顺序处理各个溅射点,这成了一个计算瓶颈。StochasticSplats[Kheradmand等人,2025年]利用估计器来采样最终颜色,而Sort-Free Gaussians[Hou等人,2025年]则用加权求和的方式替代有序渲染,以此近似得到最终颜色。虽然这些方法提升了处理效率,但得到的结果是近似的,会导致图像质量下降。一些基于硬件光栅化的方法,如NVIDIA的vk_gaussian_splatting[nvpro samples 2026年]和VKRayGS[Rota Bulò等人,2025年],则利用固定功能硬件通过代理几何结构来进行光栅化。这种方法虽能提升效率,但与CUDA可微分架构不兼容,无法用于训练。如果使用非可微分渲染器,那么就无法为该渲染器优化模型,还需要维护独立的代码库来处理训练任务。而我们的实现方案并未放弃alpha混合,因此能够保持图像质量,同时也与可微分架构完全兼容。

2.3 内核优化
最后,还有一些方法致力于优化GPU内核的设计。这类方法可以在保持图像质量的同时提升渲染性能。FlashGS[Feng等人,2024年]和Faster-GS都采用了更精细的基于块的相交检测机制,大幅减少了冗余的溅射点。它们还优化了数据在渲染流程各阶段之间的传输方式,以减少数据流量。TC-GS[Liao等人,2025年]则利用张量核心加快alpha混合的速度,同时确保张量核心的半精度计算不会显著降低图像质量。我们的实现方案也属于这一类,我们通过优化内核设计,减少了所需的计算量和内存流量,从而提升了性能。

3 背景
我们的工作是在Faster-GS的基础上开展的。在此,我们将详细介绍Faster-GS所提供的基础框架,以及我们的改进是如何融入该框架的。

3.1 Faster-GS如何渲染图像
Faster-GS拥有两种渲染架构:一种用于训练的“正向”渲染架构,另一种用于渲染已训练模型的“推理”渲染架构。这里我们主要讨论推理渲染架构。

在推理渲染架构中,图像的渲染分为四个阶段(由多个GPU内核组成):
(1) 预处理阶段:从模型中选取需要渲染的3D高斯项,并将它们投影到屏幕空间,转化为2D的“溅射”图形元素。这一阶段由preprocess_cu内核负责处理。
(2) 深度排序阶段:根据这些溅射点与相机的距离对它们进行排序。这一阶段由CUB设备基数排序内核完成。
(3) 实例化阶段:将图像分割成多个块,以便进行基于块的光栅化处理,同时将每个溅射点复制到对应的图像块中。这一阶段由一系列我们未作详细分析的定制内核负责处理。
(4) 混合阶段:对每个图像块中的溅射点进行alpha混合,最终生成完整的图像。这一阶段由blend_cu内核负责处理。

图3显示了典型渲染过程中这四个阶段的相对运行时间。可以看出,预处理阶段和混合阶段占据了渲染时间的绝大部分,因此它们是优化的重要目标。

渲染流程的每个阶段都负责逐步提升数据的细节程度。预处理阶段处理模型中的高斯项,深度排序阶段处理已生成的屏幕空间溅射点,实例化阶段则对这些溅射点进行复制并分配到各个块中,而混合阶段则在每个块内的像素层面进行处理。

Faster-GS之所以能实现高性能,主要是因为在“预处理”和“实例化”阶段去除了大量冗余的溅射点。那些完全没有对最终图像产生任何影响的冗余溅射点可以被直接忽略,而不会对最终结果造成任何影响。Faster-GS利用矩形边界框来更好地适配椭圆形的溅射点形状,并用这个边界框进行初步的剔除和块分配。在实例化阶段,还会计算每个分配到的块中溅射点的最大透明度。如果透明度低于用于决定颜色贡献的最小阈值,那么该溅射点就会被从该块中剔除。Faster-GS设定的颜色贡献阈值为8位RGB颜色的最小值1256,这一设定大大减少了需要处理的冗余溅射点数量。我们的优化方案进一步提升了这一效果,减少了最终“混合”阶段中需要处理的冗余溅射点数量。

3.2 混合阶段的工作原理
图2展示了一个图像如何被分割成多个块,再由GPU线程块进行处理的过程。每个线程块中的每个像素都经过两个阶段的处理:首先从全局内存中获取数据,然后再进行渲染。

我们选择将优化重点放在混合阶段,因为它是推理渲染架构中运行时间最长的阶段之一。对这一阶段进行优化将显著缩短整体渲染时间。默认情况下,Faster-GS会将图像分割成16×16像素大小的块。某个像素的颜色是由分配到该块的各个溅射点经过alpha混合后得到的,这一运算在Faster-GS的blend_cu内核中完成。该内核的线程数量与图像中的像素数量相对应,不同的线程块则对应不同的图像块,如图2所示。

blend_cu内核中的线程以线程块的形式协同工作,共同完成图像的渲染。由于每个线程块都对应一个图像块,因此该块中的数据和计算操作都只针对该块内的溅射点。一个图像块中可能包含数百个溅射点,而这些溅射点的数据是以256个为一组进行处理的。每组数据会在两个经过同步屏障分隔的阶段中被处理:数据获取阶段和渲染阶段。在数据获取阶段,每个线程会被分配到256个溅射点中的一个,然后它们会同时从全局内存中将相应数据读取到块共享内存中。溅射点的数据包括其位置、方向、透明度和颜色等信息。同步屏障的作用是确保所有线程都完成数据获取之后,才会进入渲染阶段。在渲染阶段,每个线程对应着图块中的256个像素之一,并分别处理所获取的溅射数据批次。对于每一个溅射数据,线程会检查该数据是否会对相应像素产生影响(即其透明度高于某个最低阈值),如果是,则会计算混合后的透明度值。在此阶段之后还有一个同步屏障,确保所有线程在获取下一批次数据之前已经处理完当前批次。各个线程会持续处理这些批次,直到图块中的所有溅射数据都被处理完毕。

为优化性能,我们首先分析了推理流程的运行状况,以找出瓶颈所在。

4.1 分析
4.1.1 整体推理流程分析
图3展示了使用NVIDIA Nsight Systems对Mip-NeRF 360 Garden场景中的单帧进行渲染时的流程概况,四个渲染阶段都有标注。可以看出,预处理阶段(1)和混合阶段(4)占据了流程中大部分时间。
我们首先通过NVIDIA Nsight Systems来分析整个流程。图3显示了流程中每个GPU内核的相对运行时长以及它们之间的等待时间。显然,预处理阶段和混合阶段占据了相当大的运行时间。优化这两个阶段将对渲染性能产生更大影响。对这两个阶段的分析表明,预处理阶段已经得到了很好的优化,而混合阶段则仍有很大的改进空间。

4.1.2 混合阶段的理论峰值吞吐量分析
为了评估混合阶段的潜在性能,我们对blend_cu内核进行了理论峰值吞吐量分析。
表1列出了指向全局内存的各个内核参数的大小(以字节为单位):tile_instance_ranges为uint28类型,大小为T;instance_primitive_indices为uint4类型,大小为N;primitive_mean2d为float类型,大小为28×N;primitive_conic_opacity为float类型,大小为16×N;primitive_color为float类型,大小为12×N;bg_color为float类型,大小为12×N;image为float类型,大小为3×4×W×H。blend_cu内核的参数指向全局内存的输入/输出区域,其中W和H分别为图像的宽度与高度,T为图像图块的数量,计算公式为?H/16??W/16?,N为所有图块中溅射数据对的总数。
我们首先根据不同场景的属性,计算从全局内存输入和输出的数据总量。blend_cu所需的关键参数包括图像的宽度W和高度H、图像图块的数量T=?H/16??W/16?,以及所有图块中溅射数据对的总数N。表1显示了指向全局内存的各个内核参数的大小分布,由此可得出公式12WH + 40N + 8T + 12,该公式表示内核内部及外部所需的内存总量(以字节计)。
接着,我们从数据集中的每个场景的测试样本中提取T、N、W、H的值并取平均值。将这些实测值代入公式后,即可得到表2中所列的平均内存需求值。
表2展示了Mip-NeRF 360场景下“坦克与神庙”和“深度混合”两种模式下的平均内存需求,单位为兆字节。blend_cu内核的算术平均内存输入+输出值也列在其中。
随后,我们用32位浮点运算次数作为衡量内核计算负荷的指标。NVIDIA Nsight Compute提供了smsp__sass_thread_inst_executed_op_fp32_pred_on.sum这一指标,用于统计GPU上所有活跃线程执行的32位浮点运算总次数。我们将这些数据汇总到表3中,并对不同场景的多次测试结果取平均值。
表3显示了Mip-NeRF 360场景下“坦克与神庙”和“深度混合”两种模式下的blend_cu内核平均32位浮点运算次数。
表4列出了RTX 4090、RTX 3090和RTX 2070 Super的三项规格:内存带宽(单位为TB/s)、峰值FP32浮点运算次数(单位为TFLOPS)。这些数据分别来自NVIDIA Corporation在2022年、2020年和2019年发布的产品规格。
最后,我们利用表4中的设备规格以及表2和表3中的指标,通过公式D=内存负荷(TB)/内存吞吐量(TB/s)+浮点运算次数/FLOPS(TFLOPS)来计算内核运行的理论最短时间D。我们选择内存负荷与计算吞吐量的总和而非两者中的最大值,是因为blend内核的架构设计使得全局内存读取与计算是顺序进行的。
表5对比了RTX 2070 Super、RTX 3090和RTX 4090在Mip-NeRF 360、“坦克与神庙”以及“深度混合”三种场景下的理论计算时间与实际测量时间。可以看出,实际测量时间往往远长于理论值,这背后的原因不仅仅是数据传输和32位浮点运算,还有其他因素。通过对内核性能的进一步分析,可以找到导致延迟的其他原因。

4.1.3 对混合阶段内核的性能分析
当启用行号信息编译时,NVIDIA Nsight Compute能够显示源代码中每一行的性能指标,这一功能有助于找到内核优化方向。我们利用这一方法分析了blend_cu内核,试图解释理论峰值吞吐量与实际测量时间之间的差异。通过性能分析,我们发现了内核中的三个主要瓶颈:溅射数据透明度计算时指令数量过多、块级同步屏障导致的频繁延迟,以及与共享内存操作相关的延迟。我们在图4中通过实际测试数据进行了说明,测试是在RTX 4090上对Mip-NeRF 360 Garden场景中的第一个测试视图(第8张图像)进行渲染时获取的性能指标。接下来我们将详细介绍这项分析的主要发现。
图4展示了从NVIDIA Nsight Compute中提取的blend_cu内核的相关指标,包括代码来源、暂停原因、线程指令执行次数、线程组暂停情况以及同步屏障相关数据。百分比数值表示该行代码对该指标的贡献程度,百分比越高,代表其贡献越大。在代码列表中,以collected_为前缀的变量指的是存储在共享内存中的数据批次。
在内核中,计算像素位置处溅射数据的透明度占据了绝大部分指令。图4中的性能指标显示,与计算像素坐标处溅射数据透明度相关的代码行(第423至433行)具有较高的指令执行次数和较高的线程组暂停频率。这表明不仅这些指令被频繁执行,而且也是导致延迟的地方。这部分代码对内核的运行时间影响很大,因此减少其执行次数有望显著提升内核性能。
块级同步屏障也会导致严重延迟。由于线程块中的溅射数据需要分两阶段处理,因此需要通过同步屏障来分隔数据收集与计算过程。涉及整个线程组的同步屏障会导致整个线程组的执行速度受到最慢线程的限制。图4中的性能数据显示,同步屏障处的循环次数非常高,这说明优化这些阶段的任务分配有助于减少延迟。
溅射数据的结构也会影响共享内存操作的效率。渲染一个溅射数据需要将它的位置、透明度、坐标和颜色从全局内存读取到共享内存中。这些数据被组织成一个128位的4D浮点向量(位置和透明度合并在一起)、一个64位的2D浮点向量(坐标)以及一个96位的3D浮点向量(颜色)。共享内存有针对32位、64位和128位数据结构的读取指令,但没有针对96位向量的指令,因此需要额外的指令来读取这类数据。

4.2 解决方案
针对在blend内核中发现的三个主要瓶颈,我们提出了三项针对性优化措施。

4.2.1 线程组级筛选
图像图块中的每个像素都需要检查分配到该图块的每一个溅射数据是否会对它产生影响。要判断一个溅射数据是否对像素有用,就需要在该像素位置计算高斯函数,而这既耗费内存又需要大量计算资源。如图4所示,线程首先需要从共享内存中读取该溅射数据的所有信息(第423至426行),然后再进行复杂的计算(第427至430行)。与其直接进行精确计算,不如先筛选掉那些与像素没有几何重叠的溅射数据。这种方法的成本要低得多,只需要读取该溅射数据的边界框并进行布尔重叠检测,就能排除那些无法对像素产生影响的溅射数据。需要注意的是,这样做后生成的渲染结果与Faster-GS算法的结果完全一致,因为我们仍然会渲染那些会对像素产生影响的溅射数据,只是更高效地过滤掉了那些无用的数据。
图5展示了一个示意图,说明了在块/图块层级与线程/像素层级之间新增的线程组级筛选步骤。通过这一步骤,可以共同筛选出那些不会与像素发生几何重叠的溅射数据,从而减少渲染该像素所需的内存读取量和计算量。
为了实现这一筛选功能,我们将图像图块进一步细分为32像素大小的子图块(8×4),每个子图块中的每个像素都对应着线程组中的一个线程。线程组是由32个线程组成的单元,它们共享同一个指令计数器,并且可以互相传递本地数据。线程组每次处理32个溅射数据批次,线程组中的32个线程分别对应着这32个数据中的一个。然后,这些线程会同时读取每个溅射数据的边界框,并通过几何计算判断该溅射数据是否与该线程组对应的子图块有重叠。各线程会使用投票机制将检测结果传递给线程组中的其他线程,最终生成一个32位的位掩码。这种重叠检测属于简单的布尔运算,不需要读取该溅射数据的全部信息。之后,线程组中的每个线程会遍历这32个被检测过的溅射数据,利用位掩码跳过那些没有与子图块重叠的数据。这样一来,线程组中的所有线程都可以避免加载完整的溅射数据,也就无需对那些无论如何都不会影响子图块中任何像素的溅射数据进行复杂的透明度计算。需要强调的是,这一算法并不会改变溅射数据的渲染方式,也不会影响哪些数据会被渲染,因此最终输出的图像保持不变。图5展示了这一过程的示意图。
这一方法之所以有效,关键在于充分利用了线程组的特点。这种筛选算法与整个混合阶段的处理流程类似,也是先并行读取数据,然后再进行渲染。由于线程组中的线程是同步执行的,因此不需要额外的同步机制,投票“屏障”也不会导致延迟。一旦上一轮处理完成,线程们就可以立即开始处理下一轮的32个溅射数据。

4.2.2 优化渲染批次大小
在一个图像图块中,并非所有的溅射数据都会与该图块中的某个像素发生重叠并产生视觉影响。因此,映射到不同像素上的线程所承担的任务量并不均匀,有些线程需要处理的溅射数据较少,而有些则较多。这种不均衡现象会导致某些线程在同步屏障处出现延迟。由于我们的线程组级筛选内核是一次处理32个溅射数据批次,所以我们测试了从每批次32个数据到256个数据不等的不同批次大小,旨在为所测试的三种GPU找到最优的批次大小。

4.2.3 将溅射数据重新组织为128位数据结构
原先的溅射数据结构中,颜色数据的使用方式不利于共享内存访问,它是用一个96位的3D浮点向量来存储的。通过将其调整为128位的4D浮点向量,我们可以用更多的内存容量换取更少的内存读取指令。在实现图像图块细分之后,我们还需要另一个4D向量来存储溅射数据的边界框信息。由于这些信息是以像素为单位给出的,因此可以用16位无符号整数来表示,这样这个4D向量只需要64位即可。为了让数据读取更加高效,我们将溅射数据的边界框信息与溅射数据在屏幕上的位置信息(一个64位的2D浮点向量)结合在一起,形成一个128位的单一数据结构。虽然这样需要更多的指令来解包数据,但可以进一步减少内存操作指令的数量。新的溅射数据结构如图6所示。
图6展示了溅射数据重新组织的结构。之前,颜色数据是96位的3D浮点格式,没有优化的读取指令。新的结构将其转换为128位的4D浮点格式,该格式拥有优化的读取指令。此外,线程组级筛选也需要边界框信息。该数据被重新整理为4D 16位无符号整数向量,然后被封装到原本用于存储64位2D向量的空间中,再与64位2D位置向量一起组合,从而形成128位的4D浮点向量。5 结果与讨论我们介绍了如何收集优化结果,并探讨了这些优化对性能的影响。5.1 实验设置为了评估性能提升,我们使用NeRFICG框架[Kappel等人,2026年]开发并测试了我们的实现方案,同时以3DGS数据集中的13个场景作为基准进行对比(其中9个来自Mip-NeRF 360 [Barron等人,2021年],2个来自Tanks & Temples [Knapitsch等人,2017年],还有2个来自Deep Blending [Hedman等人,2018年])。为确保测试模型的一致性,我们使用Faster-GS [Hahlbohm等人,2026年]为这13个场景创建了训练好的模型集。我们使用NeRFICG风格的模型格式来测试Faster-GS和我们的方法,而3DGS [Kerbl等人,2023年]、TC-GS [Liao等人,2025年]以及FlashGS [Feng等人,2024年]则采用3DGS风格的模型格式。由于RTX 2070 Super的显存仅为8GB,使用FlashGS时无法渲染Bicycle、Dr. Johnson、Flowers、Garden、Playroom、Stump和Tree Hill这几个场景。由于这些较为复杂的场景被省略,使用FlashGS时的帧时间数据会出现虚高。因此,在表7中比较各种方法的性能指标时,这些场景的结果也被排除在外。RTX 2070 Super使用Faster-GS(以及我们的方法)则可以渲染所有场景,所以在其他表格中比较我们的方法与Faster-GS时,使用了所有场景的渲染结果。帧时间(以毫秒计)和图像质量等渲染指标是通过从每个场景的数据集中选取一部分图像来测定的。数据集的比例为7:1,用于训练和测试(采用Mip-NeRF风格)。测试是通过一个脚本来进行的,该脚本会遍历这13个模型。首先,脚本会渲染测试集并保存结果以便评估图像质量;接着,它会再次渲染该测试集200次作为预热;最后,还会再渲染200次并记录所需时间。平均帧时间则是将这200次渲染所花费的时间除以200得到的。对于渲染出的图像,我们会计算PSNR、SSIM和LPIPS值,并针对每个场景取平均值。我们加载并渲染的图像分辨率为一半,即介于720p和1080p之间。为了确定用于平衡内核负载的最佳批量大小,我们尝试了从32到256共8种批量大小,每次增加32。选择32为增量是为了与我们在进行波形级剔除时的批量处理方式保持一致。表6展示了不同批量大小下帧时间提升的百分比。我们发现,对于RTX 4090和3090来说,192个样本的批量大小最为合适,而RTX 2070 Super则在保持原有的256个样本批量大小时表现最佳。这一差异表明,对于RTX 2070 Super而言,获取数据可能需要更多成本,因此通过减少数据获取次数来避免潜在的计算延迟更为划算。对于RTX 4090和3090,我们的方法采用192个样本的批量大小,而RTX 2070 Super则采用256个样本的批量大小。表6.数据集32 64 96 128 160 192 224 256 RTX 4090 Mip-NeRF360 10.07% 13.13% 13.97% 14.61% 15.61% 15.78% 15.53% 15.62% Tanks & Temples 9.58% 12.33% 13.18% 13.80% 14.80% 15.00% 14.81% 14.96% Deep Blending 10.08% 13.09% 13.81% 14.34% 15.31% 15.22% 14.96% 15.05% 全部场景 9.92% 13.01% 13.87% 14.51% 15.51% 15.67% 15.43% 15.53% RTX 3090 Mip-NeRF360 12.99% 16.56% 17.49% 18.15% 19.39% 19.48% 18.86% 18.85% Tanks & Temples 7.60% 9.65% 10.04% 10.36% 11.64% 11.40% 10.75% 10.56% Deep Blending 10.22% 15.48% 16.71% 17.52% 18.97% 19.19% 18.70% 18.97% 全部场景 11.78% 15.29% 16.18% 16.81% 18.09% 18.15% 17.53% 17.52% RTX 2070 Super Mip-NeRF360 12.34% 15.86% 16.67% 17.38% 18.86% 22.96% 24.95% 25.09% Tanks & Temples 8.11% 10.73% 10.88% 11.41% 13.00% 18.90% 18.99% 18.90% Deep Blending 10.51% 14.50% 15.30% 15.87% 17.40% 23.50% 23.50% 23.50% 全部场景 11.40% 14.82% 15.53% 16.19% 17.71% 22.26% 23.78% 23.87% 表示在不同批量大小的渲染批次下,数据集的几何平均帧时间提升百分比,批量大小以32为间隔递增。数值为相比基础版Faster-GS的提升百分比,提升最明显的数值已用粗体标出。5.2 渲染性能比较我们以帧时间为渲染性能指标,同时以PSNR、SSIM和LPIPS值以及与真实图像的对比来评估图像质量。表7展示了我们的方法与其他内核优化类别中的方法相比的情况,其中3DGS被视为基准。需要再次说明的是,由于我们的方法和Faster-GS生成的图像相同,因此图像质量也一致。这并非实验数据得出的结论,而是我们在设计算法时就考虑到了这一点。总体而言,与Faster-GS相比,我们的方法在所有测试过的GPU上都能带来最多17%的帧时间提升(相当于FPS提升20%),而在RTX 2070 Super上则可实现最多24%的帧时间提升(相当于FPS提升32%)。由于RTX 2070 Super的显存限制,有一些场景无法使用FlashGS进行渲染。在我们的性能表中,为了便于比较,我们没有列出2070 Super使用所有方法的这些场景的结果。而Faster-GS(以及我们的算法)则能够在RTX 2070 Super的显存限制内完成渲染。关于我们的优化方案相比Faster-GS在RTX 2070 Super上对数据集中所有场景的帧时间提升百分比,可参见表6。实验结果表明,这些优化对那些计算能力和显存能力较弱的显卡带来的好处尤为显著,因为它们无法依靠更快的计算和显存性能来弥补渲染过程中的延迟问题。表7.方法 RTX4090 ↓ RTX3090 ↓ RTX2070Super ↓ PSNR ↑ SSIM ↑ LPIPS ↓ Mip-NeRF 360 3DGS 5.13 56.99 71 10.04 32 7.56 0.82 0.18 TC-GS 3.63 75.38 46.90 82 7.55 0.82 0.18 FlashGS 1.33 12.41 52.61 52 8.42 0.87 0.18 Faster-GS 1.08 31.58 92.30 42 7.84 0.82 0.21 我们的方法 0.90 51.37 81.74 62 7.84 0.82 0.21 Tanks & Temples 3DGS 6.61 29.42 6 -29.63 0.90 0.24 TC-GS 3.60 94.73 0 -29.62 0.90 0.24 FlashGS 0.89 61.47 1 -33.47 0.95 0.26 Faster-GS 0.909 1.499 -29.80 0.91 0.30 我们的方法 0.819 1.424 -29.80 0.91 0.30 Deep Blending 3DGS 4.90 26.86 414.365 23.67 0.85 0.17 TC-GS 2.90 13.55 98.907 23.67 0.85 0.17 FlashGS 1.627 22.360 3.923 25.78 0.88 0.19 Faster-GS 1.169 1.667 3.163 23.83 0.85 0.20 我们的方法 0.960 1.455 2.420 23.83 0.85 0.20 全部场景 3DGS 5.30 17.30 411.316 27.28 0.84 0.19 TC-GS 3.50 94.95 27.519 27.27 0.84 0.19 FlashGS 1.292 22.230 2.993 28.79 0.88 0.19 Faster-GS 1.067 1.586 2.561 27.52 0.84 0.22 我们的方法 0.900 1.396 1.946 27.52 0.84 0.22 表格展示了不同方法在数据集上的几何平均帧时间(以毫秒计)以及算术平均图像质量。由于显存限制,RTX 2070 Super无法在多个数据集的场景中进行性能对比,其中包括Tanks & Temples场景。除了帧时间之外,表8还展示了我们的实现方案在32位浮点运算次数上的显著减少。表8.数据集 Faster-GS 我们的方法 减少幅度 Mip-NeRF 360 5,249,080 397 2,308,867,774 56.01% Tanks & Temples 5,615,645,835 3,853,577,545 31.38% Deep Blending 3,514,107,275 1,784,174,424 49.23% 表格显示了我们的内核与Faster-GS相比在32位浮点运算方面的算术平均差异。5.3 训练性能比较虽然提升训练效率不在我们当前工作的范围内,但我们确保了我们的实现方案与可微分渲染技术兼容。由于该算法不会改变图像输出及传递的信息,因此训练得到的模型也不会发生变化(图像质量保持不变)。我们还对比了训练时间,发现两者没有差异。未来的工作或许可以考虑利用我们的优化方案来进一步改进训练过程。5.4 消融实验表9展示了我们提出的三项优化措施各自的贡献程度。首先,我们采用了32个样本的批量大小来实现波形级剔除,这一大小与单个波形的规模相匹配。这也使得我们很自然地接下来尝试使用小于默认值256的批量大小,并进一步优化渲染批量大小。这两项优化是紧密关联的,共同构成了“波形级剔除”优化方案。最后,根据分析结果,我们还加入了样本数据重排的优化措施。表9.数据集 + 波形级剔除 + 最优批量大小 + 样本数据重排 RTX 4090 Mip-NeRF 360 10.44% 5.48% 2.15% Tanks & Temples 5.75% 2.39% 3.08% Deep Blending 9.88% 7.45% 2.04% RTX 3090 Mip-NeRF 360 13.57% 6.23% 3.04% Tanks & Temples 6.07% 2.21% 4.50% Deep Blending 10.54% 8.75% 2.70% RTX 2070 Super Mip-NeRF 360 12.10% 6.17% 3.90% Tanks & Temples 5.50% 3.03% 5.44% Deep Blending 10.17% 6.31% 3.51% 表格显示了在Faster-GS基础上分别加入这三项优化后,帧时间提升的几何平均百分比。数值为相比前一行对应的提升比例。波形级剔除的对比是以32个样本的批量大小为基准的。6 结论在本文中,我们对3DGS中用于渲染的标准CUDA架构进行了深入的分析,重点研究了内存吞吐量、同步瓶颈以及计算负荷等问题。基于分析结果,我们为Faster-GS的alpha混合内核提出了三项算法优化措施,这些优化在无需影响图像质量的前提下带来了显著的性能提升。这些优化是在标准CUDA框架中实现的,同时也与可微分渲染流程兼容,因此很容易被纳入未来的开发中。我们的优化目标是在不改变视觉质量的前提下,为3DGS的后续发展提供快速的性能提升。未来的工作或许可以探索如何利用我们的波形级剔除技术来优化训练过程。致谢G. Drettakis的研究得到了欧盟欧洲研究委员会(ERC)的先进研究项目NERPHYS的支持,项目编号为101141721,网址为https://project.inria.fr/nerphys。不过,本文中所表达的观点仅代表作者个人意见,不一定反映欧盟或欧洲研究委员会的立场。欧盟及资助机构均不对这些观点负责。
相关新闻
生物通微信公众号
微信
新浪微博

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号