如何在一分钟以内完成 3DGS 训练?LiteGS:面向 3D 高斯泼溅的系统算法高性能框架 计算机视觉技术原理
如何在一分钟以内完成 3DGS 训练?LiteGS:面向 3D 高斯泼溅的系统算法高性能框架 计算机视觉技术原理
本博客由计算机视觉实践撰写,是面向技术从业者的一篇计算机视觉技术原理深度解读。本博客较长,建议收藏后分次阅读。
前言
3D 高斯泼溅(3DGS)凭借显式基元表示、可实时渲染的特性,成为三维重建领域主流方案,但原始实现的训练开销长期制约落地。LiteGS 从底层 GPU 计算、中层数据管理、高层算法三个层级协同设计,构建完整的加速流水线,通过硬件感知光栅化、基于 Morton 编码的空间聚类压缩、基于不透明度梯度方差的致密化判据,在不损失重建质量的前提下,将 3DGS 训练压缩至分钟以内,打通快速三维重建的工程瓶颈。
3D 高斯泼溅自提出以来,改变了传统 NeRF 类隐式体渲染依赖网络前向传播、推理延迟高的问题。它以离散三维高斯作为场景的基础表达单元,每个高斯基元存储位置、协方差、球谐颜色、不透明度参数,通过光栅化与 alpha 混合完成图像渲染,依靠渲染图像与真值图像之间的光度损失做梯度下降优化,同时配合致密化、剪枝机制动态调整高斯基元数量,逐步拟合场景几何与纹理细节。这套机制在渲染侧具备天然优势,渲染阶段可以直接遍历屏幕瓦片、筛选与瓦片相交的高斯,排序后沿深度方向混合,在消费级 GPU 上即可实现高分辨率画面实时渲染。但训练侧的效率短板,一直是限制 3DGS 大规模落地的核心障碍。
计算机视觉实践在梳理大量 3DGS 相关工作时观察到,绝大多数早期加速方案仅在单一维度做优化,一部分方案聚焦致密化与剪枝策略,调整高斯基元的增长逻辑,减少最终模型内基元总量;另一部分方案只在光栅化算子层面做 CUDA 优化,调整瓦片遍历、排序、混合的计算逻辑;还有一部分方案尝试降低训练迭代次数、使用多分辨率调度策略。这类单点优化存在明显上限,一个层级的优化很容易被其他层级的瓶颈抵消。举例来说,即便光栅化前向计算速度提升,反向传播阶段大量原子写冲突、梯度归约冲突依然会把 GPU 利用率压到很低;即便优化了致密化算法,无序分布的高斯基元持续带来缓存缺失、warp 分支发散,内存带宽会成为新的限制。LiteGS 的核心思路跳出单点优化的范式,采用系统与算法协同设计,让高层算法的统计需求,能够被底层光栅化硬件原语直接支撑;底层数据排布策略,适配上层致密化、剪枝的动态增长逻辑,三个层级互相配合,共同压低训练全链路耗时。
本博客将沿着 LiteGS 的三层架构,依次拆解它需要解决的现实问题、对应的解决思路、每一项创新措施的底层逻辑,同时梳理这套框架适配的工程场景,解释为什么协同设计能够相比单点优化带来量级上的加速收益。计算机视觉实践会尽量贴合论文原始表述,不额外引入未验证的假设,重点解释各项优化措施和 3DGS 原生训练流程之间的差异,说明每一项改动针对的瓶颈是什么。
【Figure 2 LiteGS 整体架构图】
一、3DGS 原生训练流程与现存瓶颈分析
想要理解 LiteGS 各项优化的价值,首先需要还原原生 3DGS 训练的完整流水线,定位每一个阶段的性能约束。原生 3DGS 训练流程分为初始化、迭代优化、动态基元调整三个部分。初始化阶段依靠 SfM 输出的稀疏点云生成初始高斯基元,每个点对应一个初始高斯,分配基础协方差、不透明度、球谐参数。进入迭代循环之后,每一轮迭代包含前向光栅化、损失计算、反向梯度传播、参数更新、致密化与剪枝五个子步骤。前向阶段,相机投影生成屏幕瓦片,筛选落在瓦片包围盒内的高斯,按深度排序,沿着深度方向执行 alpha 混合,生成渲染图像;损失函数对比渲染图与真值图,计算光度损失;反向阶段,梯度沿着混合链路回传,更新高斯的位置、协方差、颜色、不透明度;致密化模块根据梯度信息识别欠拟合区域,对高斯执行分裂或者复制操作,新增高斯基元;剪枝模块剔除不透明度极低、对渲染贡献很小的冗余高斯,控制模型规模。
计算机视觉实践分析原生实现的性能剖面后,可以把瓶颈归纳为三层,刚好对应 LiteGS 优化的三个层级。第一层是 GPU 计算层,也就是光栅化反向传播的梯度归约冲突。原生瓦片光栅化的实现中,同一个像素会被多个不同 warp 内的高斯贡献梯度,多个线程同时向同一个像素位置的梯度缓存执行原子加法操作,大量原子操作带来冲突、序列化等待,GPU 硬件利用率无法打满。很多时候 GPU 算力资源空闲,但大量线程卡在原子归约的等待队列中,这是反向传播阶段最主要的耗时来源。
第二层瓶颈是数据管理层的空间局部性缺失。高斯基元是动态增长的,致密化不断新增高斯,新增高斯在全局内存中随机追加,高斯在内存里的排布顺序和三维空间位置没有稳定关联。渲染瓦片筛选高斯的时候,同一个空间区域内的高斯分散在全局内存的不同地址,GPU 加载数据时缓存命中率持续走低,频繁触发 L2 缓存缺失。同时,空间无序会加剧 warp 发散,同一个 warp 内的高斯,一部分和当前瓦片相交、一部分不相交,分支判断之后大量线程空闲,进一步降低硬件效率。随着训练迭代推进,高斯数量持续上涨,这个问题会持续恶化,越到训练后期,单次迭代耗时越长。
第三层瓶颈是算法层致密化判据鲁棒性不足。原生 3DGS 使用位置梯度作为致密化判断依据,当高斯覆盖的像素区域存在纹理模糊、梯度噪声、多视角歧义时,位置梯度的波动很大,很容易出现误判。一部分几何已经拟合充分的区域被持续分裂,产生大量冗余高斯;一部分欠拟合区域没有被识别,几何细节无法补齐。这种不稳定的致密化带来两个负面结果:一是模型膨胀速度失控,高斯总量超出必要范围,放大前向和反向计算开销;二是重建质量波动,相同训练步数下,不同场景的收敛效果差异明显。
过往很多加速方案,单独解决其中某一类瓶颈。例如修改光栅化的瓦片负载均衡,只能缓解计算冲突,无法改善内存访问局部性;修改致密化阈值,只能减少冗余高斯,不能解决梯度归约的原子冲突。各个优化模块之间互相割裂,上层算法的需求没有向下传递给底层算子,底层算子也没有向上暴露统计能力给致密化算法,因此加速倍数存在天花板。LiteGS 的协同设计,就是打通三层之间的依赖关系,底层光栅化算子原生支持像素级梯度方差统计,刚好为上层致密化提供计算输入;中层聚类压缩持续维护高斯的空间有序排布,同时降低底层光栅化的缓存缺失与分支发散;上层致密化算法精准控制高斯增长节奏,避免高斯无限制膨胀,反过来减轻底层计算与内存压力。
二、LiteGS 的应用场景、问题描述与解决思路
计算机视觉实践认为,LiteGS 最核心的落地场景,是对三维重建耗时存在强约束的工程场景,这些场景无法接受原生 3DGS 数分钟乃至数十分钟的训练周期,同时要求重建质量不出现明显衰减。本博客将这些场景分类描述,并且说明每个场景里原生 3DGS 的痛点,以及 LiteGS 对应的解决思路。
第一个场景是移动端采集端的实时重建。消费级 RGB 相机、手机、便携扫描设备采集图像序列之后,需要在本地快速完成场景重建,生成可交互的 3D 高斯模型。这类场景的算力资源有限,GPU 显存、算力都不如工作站显卡,同时用户需要快速预览重建结果,不能等待长时间训练。原生 3DGS 在这类设备上训练周期极长,甚至无法完成完整训练,致密化带来的高斯膨胀很容易直接耗尽显存。LiteGS 的解决思路依靠三层协同优化,一方面 warp-based 光栅化降低梯度归约的算力开销,Cluster-Cull-Compact 流水线持续压缩内存占用、提升缓存命中率,另一方面基于梯度方差的致密化判据精准控制高斯增长,避免冗余基元产生,在有限显存和算力预算下,在一分钟以内完成收敛。
第二个场景是大规模批量重建生产流水线。在数字资产、虚拟展厅、实景三维生产中,需要批量处理大量独立小场景,每个场景都单独跑一遍 3DGS 训练。如果使用原生 3DGS,单场景训练耗时长,批量任务的吞吐能力很低,GPU 集群资源被大量占用,成本很高。这个场景的核心诉求不是单张图像极致渲染质量,而是在固定质量标准下,最大化单卡单位时间能够处理的场景数量。原生 3DGS 的问题在于,每一轮迭代的计算开销随着高斯数量非线性上涨,并且梯度冲突、缓存缺失带来的资源浪费在批量任务里被持续放大。LiteGS 的解决思路是,以系统优化压低每一轮迭代的单步耗时,配合稳定致密化控制高斯规模,同时 “空间换时间” 策略,在轻量化重建分支下,适度放宽高斯参数效率约束,优先换取更快的几何收敛,在满足验收质量指标的前提下,显著提升批量吞吐。
第三个场景是算法迭代与消融实验快速验证。计算机视觉研发人员在开发 3DGS 相关改进算法时,需要频繁调整超参数、修改致密化、剪枝、损失函数,每一次改动都需要重新训练场景做对比。原生 3DGS 单次训练耗时高,一轮消融实验需要等待很久,拉长研发周期。这个场景的痛点是研发迭代效率低,大量时间消耗在等待训练完成上。LiteGS 的解决思路是全链路加速,训练收敛时间压缩到分钟级别,研发人员可以快速验证改动带来的效果变化,同时框架本身保留 3DGS 的基础范式,上层算法改动可以直接接入,不需要大幅修改渲染和优化逻辑。
第四个场景是动态场景、多视角序列的快速预重建。动态 3D 高斯、时序高斯重建工作,通常需要先完成静态背景的基础重建,再做时序参数优化。预重建阶段如果耗时过长,会拖累整个动态重建流程。原生 3DGS 静态重建阶段的慢速特性,会让动态方案的整体训练周期难以接受。LiteGS 可以作为前置重建模块,快速得到高质量静态高斯模型,再交给后续时序优化模块处理。
除了上述明确场景之外,还有一类边界场景:轻量化 Web 端、XR 端的快速重建预览。这类场景对模型体积、加载速度都有要求,LiteGS 在高质量分支下,同等重建精度下可以使用更少高斯基元完成拟合,输出更紧凑的模型,同时训练速度更快。
计算机视觉实践在这里区分 LiteGS 的两条工作分支,方便理解不同场景下的取舍。论文设置了 LiteGS-quality 高质量分支、LiteGS-fast 快速重建分支。高质量分支优先保证重建指标,在达到和高质量 SOTA 相当甚至更高 PSNR 的前提下,实现十倍以上加速;快速重建分支启用空间换时间策略,允许适度增加高斯基元数量,换取更快的几何生长,直接达成亚分钟训练,适合快速预览、批量粗重建场景。两条分支共享同一套底层光栅化、Cluster-Cull-Compact 流水线,差异只来自上层致密化和超参数策略,这也体现协同设计的优势,底层基础设施同时支撑两种不同的优化目标。
所有场景的共同问题原点,是原生 3DGS 训练的计算、内存、算法三者之间互相耦合,一处瓶颈传导到全链路。LiteGS 的解决思路不是单一模块提速,而是构建一套互相适配的栈式架构:底层光栅化算子不仅完成渲染与梯度计算,同时原生输出像素梯度方差统计量;中层数据管理流水线持续维护高斯的空间局部性,降低光栅化过程的内存开销;上层致密化算法直接消费底层算子输出的方差统计量,精准控制高斯生长,抑制模型不必要膨胀,反过来降低底层计算压力。三层形成正向循环,而不是各自独立优化。
三、底层计算层:Warp-Based Raster 硬件感知光栅化设计
底层计算层是 LiteGS 最基础的创新,计算机视觉实践先回顾原生瓦片光栅化的反向传播痛点,再展开 warp-based raster 的设计逻辑、配套的扫描线优化与混合精度策略。
原生瓦片光栅化的设计思路是一个线程处理一个像素,每个线程遍历瓦片内所有相交高斯,执行 alpha 混合。前向阶段逻辑简单,但是反向阶段会出现严重的梯度归约冲突。不同高斯贡献到同一个像素的梯度,需要累加至像素梯度缓存,多个独立 warp 内的线程同时对同一个像素地址执行原子加法。原子操作会触发硬件的锁机制,并发访问同一个地址时线程串行等待,GPU 计算单元大量空闲,算力利用率上不去。随着瓦片内高斯数量增加,像素被更多高斯覆盖,原子冲突概率持续上升,反向传播耗时占比会持续放大。过往一部分优化方案尝试调整瓦片大小、调整负载均衡,但是没有改变 “多 warp 写入同一个像素” 这个根本矛盾,因此加速效果有限。
LiteGS 提出 warp-based raster,核心规则为 one warp per tile,一个 warp 负责处理一整个屏幕瓦片,而不是一个线程对应一个像素。一个 warp 内 32 个线程共同负责瓦片内全部像素,瓦片内所有高斯的混合计算全部收敛在同一个 warp 内部完成。梯度聚合不再需要跨 warp 的原子归约,所有梯度累加操作变成 warp 内部的归约运算,借助 warp 内 shuffle 指令完成,彻底消除跨 warp 原子写冲突。这是这项创新最核心的收益。
但是 one warp per tile 会带来新的硬件问题:一个 warp 需要同时维护瓦片内全部像素的中间混合状态、梯度缓存,寄存器压力显著上涨。GPU 每个 warp 可用的寄存器资源存在上限,寄存器溢出会导致数据溢出到本地内存,带来延迟上涨,抵消掉消除原子冲突带来的收益。针对寄存器压力上涨的问题,LiteGS 配套引入两项硬件感知优化,分别是扫描线调度策略与混合精度计算策略。
扫描线调度策略,是把瓦片内的像素按扫描线分组,warp 不会一次性加载瓦片全部像素状态,而是逐行处理像素。同一时刻只保留当前扫描线对应的像素混合缓存、梯度缓存,减少 warp 内同时驻留的寄存器变量数量,控制寄存器占用上限。扫描线的划分粒度和 warp 的线程数量匹配,32 线程的 warp 一次处理一行内 32 个像素,数据流规整,内存访问连续,不会引入额外发散。
第二项配套优化是混合精度策略。光栅化过程中,alpha 混合、梯度方差统计这类计算,对数值精度的容忍度更高。LiteGS 把中间混合权重、梯度方差统计量使用 FP16 或者 BF16 精度存储,只有高斯参数更新、最终损失计算部分保留 FP32 高精度。混合精度进一步降低寄存器占用,同时提升算力吞吐。需要注意的是,混合精度不是无条件下放,论文里做了数值稳定性校验,致密化依赖的不透明度梯度方差是统计量,小幅精度损失不会改变致密化的判断结果,不会引入误判。
warp-based 光栅化还有一个附带收益,它可以在渲染流水线内部低成本收集像素级梯度统计信息。原生光栅化想要拿到每个像素的梯度方差,需要额外开辟缓存、额外执行全局归约,开销很高;而在同一个 warp 内部完成全部混合与梯度计算之后,只需要在 warp 内部增加少量 shuffle 统计指令,就能直接输出每个像素位置的不透明度梯度均值与方差,不需要额外跨 warp 同步。这一点是协同设计的关键支点:底层光栅化原生向上暴露统计能力,上层致密化算法不需要额外付出高昂代价计算判据,致密化模块的开销被压到很低。如果没有这个底层支撑,基于梯度方差的致密化方案本身会带来大量额外计算,整体加速收益会被吃掉。
计算机视觉实践在这里区分清楚:warp-based raster 不是简单重写光栅化 CUDA 核函数,它是一套面向 GPU 硬件执行模型的范式变更,改变了线程、warp、瓦片三者之间的映射关系。它解决的首要问题是反向传播原子冲突,次要收益是原生支持像素梯度统计,为上层算法铺路。
四、中层数据管理层:基于 Morton 编码的 Cluster-Cull-Compact 流水线
在底层光栅化解决计算冲突之后,下一个瓶颈就是内存访问局部性,也就是缓存缺失、warp 分支发散的问题,LiteGS 在中层设计 Cluster-Cull-Compact(聚类 - 剔除 - 压缩)流水线,依托 Morton 编码实现高斯基元的动态空间排序。
先说明原生实现的内存访问问题。高斯基元在三维空间内分布,致密化新增高斯的时候,直接追加在全局内存数组尾部,高斯在内存数组里的顺序和三维空间位置无关。当光栅化筛选瓦片对应的高斯时,空间上邻近的高斯分散在内存的不同位置,GPU 读取高斯参数的时候,每次内存加载只能拿到少量有效数据,L2 缓存命中率很低。同时,一个 warp 拿到的高斯集合,一部分和当前瓦片相交,一部分不相交,分支判断之后部分线程退出,产生 warp 发散,降低硬件利用率。随着训练迭代,高斯数量持续增长,无序分布带来的缓存失效和发散问题持续恶化。
简单的解决方案是每一轮迭代都对全部高斯做全局空间排序,比如按 Z 轴深度排序、Morton 码排序。但是全局排序本身开销很高,高斯规模达到数百万级别之后,全局排序耗时会占据训练耗时的大头,得不偿失。这就是很多方案尝试空间排序但是收益有限的原因:排序本身的开销吃掉了缓存提升带来的收益。
LiteGS 的 Cluster-Cull-Compact 流水线,核心思路是不做全局全量排序,改为聚类粒度的局部重排,把排序开销控制在很低水平。整个流水线分为三个步骤:聚类、剔除、压缩。
第一步聚类,基于 Morton 编码(Z 序曲线)对高斯做空间分簇。Morton 编码把三维坐标映射成一维编码,空间邻近的三维点,Morton 编码数值接近。LiteGS 按照 Morton 码区间,把全部高斯划分为若干空间簇,同一个簇内的高斯在三维空间内相邻。聚类操作不是每一步都执行,按照固定迭代间隔触发,避免频繁聚类带来开销。
第二步剔除,在簇的粒度做可见性预剔除。每一个渲染视角下,先判断整个空间簇的包围盒是否和当前相机视锥、屏幕瓦片存在交集,如果整个簇完全不可见,直接跳过簇内全部高斯,不再逐个高斯做包围盒测试。原生实现是逐个高斯判断相交关系,大量不可见高斯依然会被加载到寄存器、执行分支判断,簇级剔除直接跳过整簇无效高斯,减少无效内存加载和分支判断。
第三步压缩,对保留下来的簇内高斯,在簇内部按照 Morton 码重新紧凑排布,把簇内高斯在内存上连续存放。经过压缩之后,同一个空间簇的高斯在内存上连续,光栅化加载簇内高斯的时候,内存访问是连续合并访问,缓存命中率大幅提升。同时,同一个簇内高斯空间位置接近,针对同一个瓦片的相交判断结果一致性更高,warp 内的分支发散显著减少。
计算机视觉实践需要强调这个流水线的动态特性:高斯是持续增长的,致密化不断新增高斯,新增高斯会先归入对应 Morton 簇,等待下一次聚类压缩周期到来之后,再完成重排。它不需要每次致密化之后立刻全局排序,聚类压缩的周期可以根据场景规模动态调整,在排序开销和缓存收益之间做平衡。论文里的实验曲线显示,随着高斯数量增长,开启 Cluster-Cull-Compact 的 L2 缓存命中率能够维持在更高水平,而基线方案的缓存命中率持续下滑,这直接证明这套流水线的有效性。
Cluster-Cull-Compact 和底层 warp 光栅化之间存在协同关系。底层光栅化以瓦片为单位、warp 为执行单元,中层输出空间连续的高斯簇,瓦片筛选的时候能够批量拿到连续内存上的高斯,合并内存访问适配 warp 的访存模式。反过来,底层光栅化的瓦片处理逻辑,也让簇级剔除的判断逻辑简单高效,不需要复杂的空间索引结构。这套流水线没有引入复杂的 BVH、八叉树结构,Morton 编码计算开销极低,保持框架轻量化。
有一个容易混淆的点:Cluster-Cull-Compact 不是静态空间索引,是跟随训练迭代动态更新的动态重排流水线。它的目标不是构建永久空间索引,而是持续维护高斯基元的内存局部性,持续降低光栅化阶段的内存访问开销,适配 3DGS 训练过程中高斯不断新增、动态变化的特点。
五、上层算法层:基于不透明度梯度方差的致密化判据与稳定不透明度控制
底层计算、中层数据管理,都属于系统层面的优化,系统优化的上限,会被上层致密化算法的稳定性约束。如果致密化持续产生大量冗余高斯,无论光栅化和内存访问多么高效,计算总量持续膨胀,训练速度依然无法突破。LiteGS 在上层算法层,替换原生位置梯度判据,提出基于像素不透明度梯度方差的致密化准则,搭配稳定的不透明度控制机制,实现更精准的高斯增长。
原生 3DGS 致密化的判断依据是高斯的位置梯度大小。位置梯度大,代表这个高斯所在区域几何拟合不足,需要分裂或者复制生成新高斯。计算机视觉实践分析原生判据的缺陷:位置梯度容易受图像噪声、纹理缺失、多视角歧义影响。在无纹理墙面、纯色区域,光度损失梯度本身噪声很大,位置梯度会出现无意义的剧烈波动,导致不需要分裂的高斯被持续分裂,生成大量冗余高斯;而在部分精细几何边缘,梯度被相邻高斯混合平滑,位置梯度偏小,欠拟合区域无法被识别,几何细节丢失。原生判据不具备统计稳定性,对场景纹理、噪声敏感,导致高斯增长不可控。
LiteGS 选择的观测指标是像素级不透明度梯度的方差,而不是单个高斯的位置梯度。这里需要区分观测对象:原生判据是面向单个高斯的梯度,LiteGS 的判据是统计一个像素位置上,不透明度梯度的方差。方差代表这个像素位置,在多轮迭代、多视角观测下,梯度信号的波动幅度。方差高,代表当前高斯集合对这个像素的建模不稳定,不同视角下梯度变化剧烈,属于欠拟合区域,需要新增高斯补充几何表达;方差低,代表像素的渲染结果稳定,现有高斯已经足够拟合,不需要继续分裂。
这个判据的优势体现在鲁棒性上。方差是统计量,单帧噪声、单视角扰动不会轻易改变方差数值,不会因为单次梯度尖峰就触发致密化。它识别的是持续不稳定的区域,而不是单次迭代的梯度异常。同时,不透明度直接控制高斯对像素渲染结果的贡献权重,不透明度梯度的波动,直接对应混合权重的不确定性,和 3DGS alpha 混合渲染的物理机制对齐,相比位置梯度,和渲染结果的关联更直接。
这里再次体现协同设计的价值:这个方差统计如果交给原生光栅化实现,额外开销很高;但 LiteGS 底层 warp-based 光栅化,在同一个 warp 内部完成像素混合与梯度计算,只需要少量 shuffle 指令,就可以在光栅化正向反向流程中同步累积梯度均值、方差统计量,致密化模块拿到统计量的成本极低,不会引入沉重的额外计算负担。如果底层算子不支持这个统计输出,这个致密化方案本身会带来很高的开销,整体加速收益会被抵消。
配套的稳定不透明度控制机制,用来约束致密化之后新增高斯的不透明度初始值。原生分裂之后,新高斯的不透明度初始化策略比较简单,容易出现大量高不透明度新高斯互相遮挡,造成渲染振荡,损失持续抖动,收敛变慢。LiteGS 在生成新高斯的时候,约束初始不透明度,控制新增高斯对渲染结果的扰动幅度,让损失曲线平滑收敛,减少振荡迭代次数,进一步压缩收敛需要的迭代步数。
同时论文提出空间换时间策略,用于 LiteGS-fast 快速分支。在快速重建场景下,允许适度提高高斯的增长速率,用更多高斯基元换取更快的几何收敛速度,在很短时间内完成场景主体结构拟合,牺牲一部分基元紧凑度,换取亚分钟训练。而高质量分支下,方差判据会严格控制高斯增长,抑制冗余基元,在同等质量下使用更少高斯。两种模式共用同一套方差判据,仅调整阈值和不透明度约束参数,框架灵活性很强。
计算机视觉实践在这里说明,上层算法优化不是独立存在的,它依赖底层硬件感知光栅化的统计能力,中层 Cluster-Cull-Compact 流水线负责承载持续增长的高斯,保证新增高斯加入之后,内存局部性不会快速恶化。三层协同,让算法改动不会带来额外的系统开销,系统优化也能够释放算法的潜力。
六、三层协同的完整数据流与训练闭环
单独拆解三层之后,计算机视觉实践把完整的训练闭环串起来,展示协同设计如何串联成完整流水线,方便理解整个流程的配合关系。
训练初始化阶段,由 SfM 点云生成初始高斯数组,执行第一轮 Morton 聚类,初始化 Cluster-Cull-Compact 的空间簇结构,高斯在内存上按簇紧凑排布。
进入迭代循环,每一轮迭代的执行顺序:
- 加载当前相机参数,生成屏幕瓦片;
- 中层 Cluster-Cull-Compact 流水线执行簇级视锥剔除,过滤完全不可见的空间簇,剩下的簇内高斯是候选渲染基元;
- 启动 warp-based 光栅化,一个 warp 处理一个瓦片,warp 内部逐扫描线完成 alpha 混合前向渲染,同步累积每个像素的不透明度梯度均值、方差统计量;
- 计算渲染图像与真值图像的光度损失,在 warp 内部完成梯度归约,消除跨 warp 原子冲突;
- 梯度回传,更新高斯的位置、协方差、球谐颜色、不透明度参数;
- 取出光栅化阶段输出的像素梯度方差,运行致密化判据,识别高方差欠拟合区域,执行高斯分裂或者复制;新增高斯归入对应的 Morton 簇;
- 执行剪枝,剔除低贡献、低不透明度高斯,从簇内移除;
- 到达预设聚类压缩周期时,触发 Cluster-Cull-Compact 流水线,重新聚类、剔除、压缩,维护高斯的空间局部性;
- 循环直到满足收敛条件。
在这个循环里面,数据流是双向支撑的:光栅化输出统计量供给致密化;致密化新增高斯交给中层聚类流水线管理;中层规整之后的高斯排布,降低光栅化阶段的访存开销与分支发散。每一层的输出,都是另一层的输入条件,不存在孤立模块。
对比单点优化方案,单点优化只能优化循环里某一个步骤,其他步骤的瓶颈依然存在。比如只优化光栅化,致密化疯狂新增高斯,内存持续膨胀,缓存持续恶化;只优化致密化,反向传播原子冲突依然卡住 GPU 利用率。LiteGS 协同设计的价值,就是把整条流水线的瓶颈同步消除,让加速收益叠加,而不是互相抵消。
七、效果对比简述
计算机视觉实践简要说明论文的实验结论,不展开大量指标表格。论文在 Mip-NeRF 360 等主流数据集上完成验证,对比原生 3DGS、FlashGS、3DGS-MCMC 等已有 SOTA 方案。在高质量设置下,LiteGS 相比原生 3DGS 最高可以实现 13.4 倍加速,重建质量持平或者优于基线;对比轻量化 SOTA 方案,最高取得 1.5 倍加速;对比专注质量的 3DGS-MCMC,在匹配或者超越重建精度的同时,训练速度提升一个数量级。在快速分支下,LiteGS 可以实现亚分钟完成场景训练,适合快速预览场景。同时在同等重建质量条件下,高质量分支的高斯基元数量低于很多基线方案,模型文件体积更小。
论文同时做消融实验,分别关闭 warp 光栅化、Cluster-Cull-Compact、方差致密化三个模块,验证每个模块的独立收益,证明三个模块都有正向加速贡献,并且组合在一起之后收益大于单独模块之和,验证协同设计的叠加效应。
八、技术局限
计算机视觉实践客观说明论文存在的局限。首先,warp-based 光栅化的瓦片大小和 warp 大小强绑定,在极端高分辨率、极小瓦片场景下,扫描线寄存器优化的收益会下降,需要重新调优瓦片超参数。其次,Cluster-Cull-Compact 依赖 Morton 编码的空间聚类特性,对于几何极度分散、空间分布极不均匀的场景,Morton 编码的局部性会减弱,缓存收益会下降。第三,方差致密化依然存在超参数调优需求,不同场景下方差阈值需要适配,固定阈值无法适配全部场景。第四,这套框架针对单 GPU 训练设计,论文没有重点讨论多 GPU 分布式训练下的扩展方案,大规模城市场景分布式重建的适配性还需要后续拓展。最后,快速分支下依靠增加高斯换取速度,在显存预算极其紧张的设备上,快速分支的显存占用会高于高质量分支,需要根据硬件做分支选择。
九、总结
3D 高斯泼溅的实时渲染能力已经得到行业认可,但训练阶段高昂的时间成本,长期限制它在快速重建、批量生产、移动端本地重建等场景落地。过往大量工作局限于单一算法或者单一算子优化,瓶颈互相牵制,加速效果存在明显上限。LiteGS 采用系统与算法协同设计思路,自底向上构建三层优化体系,底层提出 warp-based 光栅化范式,依靠 one warp per tile 消除跨 warp 梯度原子冲突,配套扫描线、混合精度控制寄存器压力,同时原生支持像素梯度统计;中层依托 Morton 编码构建 Cluster-Cull-Compact 动态流水线,以簇粒度空间重排维持内存局部性,降低缓存缺失与 warp 发散;上层使用不透明度梯度方差作为致密化判据,搭配稳定不透明度约束,精准控制高斯的生长节奏,避免冗余基元持续膨胀。三层模块互相支撑,底层算子为上层算法提供低成本统计能力,中层数据排布降低底层计算开销,上层致密化控制整体计算规模,实现全链路同步提速。
计算机视觉实践认为,LiteGS 的创新不只是一组 CUDA 算子优化和一个新致密化函数,它验证了 3D 高斯类渲染框架 “系统 - 算法协同设计” 的可行性。很多三维重建工作把算法设计和 GPU 系统实现拆分开,算法研究者不考虑硬件访存、warp 执行模型带来的开销,系统优化工作只关注算子吞吐,不考虑上层算法的统计需求。LiteGS 打通两者边界,让算法的设计需求直接指导硬件算子的设计,硬件算子原生暴露算法需要的统计信息,这种设计思路,也可以迁移到后续动态高斯、神经高斯、分布式高斯重建等方向。
LiteGS 的核心创新,是打破 3DGS 加速单点优化的范式,从 GPU 计算、数据管理、致密化算法三个层级协同改造训练流水线。依托 warp 内光栅化消除梯度归约冲突,Morton 聚类压缩持续优化内存局部性,梯度方差统计量稳定控制高斯增长,三层优化互相赋能,在保证重建质量的前提下,把 3DGS 训练压缩至分钟以内,为快速三维重建提供一套完整、可落地的高性能框架。
参考:
LiteGS: A High-performance Framework to Train 3DGS in Subminutes via System and Algorithm Codesign
URL:
https://arxiv.org/html/2503.01199v3/
本博客是对上述作者原创的技术解读,仅供学习交流,不代表原作者观点。 本博客部分示意图来源于上述作者论文,版权归原作者所有。
本博客由计算机视觉实践撰写的博客。若本博客对你有帮助,欢迎收藏、转发、点赞,也欢迎在评论区与我们一起探讨计算机视觉 - 语言预训练的更多可能。
YOLO v1 ~ v10 核心演变对比精简版 YOLO原理解析 计算机视觉技术原理分析
计算机视觉实训软件|万元级总成本永久授权,支持 300 人的大班教学,免硬件免云免编程,14 大技术主题、70 个独立实践