ABCD:恒定显存训练大规模高斯泼溅场景
How ABCD Trains Large Gaussian Splat Scenes With Constant VRAM
研究者Ka Heng Shiu提出ABCD(Alpha-Composited Block Coordinate Descent)框架,通过将大型高斯泼溅场景分块并利用前景/背景RGBA缓存图像进行alpha合成,使活动分块在完整场景上下文中训练,峰值显存不随场景规模增长。该方法在SIGGRAPH发表,适用于城市级重建、游戏开发与数字孪生。
深度解读
ABCD 用恒定 VRAM 训练任意大的高斯泼溅场景,把"场景太大装不下"这个卡了神经渲染落地的核心瓶颈,从"换更贵的卡"变成了"换一种训练顺序"。
这是 Ka Heng Shiu 与 Kartic Subr 合作、在 SIGGRAPH 上发表的 Alpha-Composited Block Coordinate Descent(ABCD) 框架要解决的问题。它的出发点极其朴素:Shiu 在做香港城市遗产归档项目 The Lost Metropolis 时,用摄影测量扫描了整座村庄、连同建筑的内外结构,然后试图把这些扫描重建为 3D 高斯泼溅——结果反复爆显存。这个问题后来变成了他的本科毕业论文,被搁置约一年半,最终回到手中继续推进并发表。一个从"我自己的卡跑不动"长出来的方法,往往比从理论优雅性出发的方法更清楚真实世界的约束在哪里。
分区训练的老问题:切开的场景互相不知道对方存在
要理解 ABCD 的价值,必须先理解它反对什么。训练一个超出显存的大场景,最直觉的做法是切成若干区域,各自独立训练,最后合并。这个做法有一个致命缺陷:每个区域在优化时完全不知道场景的其余部分长什么样。
Shiu 举的例子非常具体:把一个房间切成左右两半,训练左半边时,某些相机图像里仍然包含右半边的物体。如果优化器手里只有左半边的高斯,它就会为了让渲染结果匹配图像,错误地把这些高斯放到本不该在的位置去"解释"画面右侧的内容。等到两半各自训练完再合并,这些错误就表现为漂浮几何体、接缝和其他不一致。
每个区域被优化时都不知道场景其余部分长什么样——这是所有"切块独立训练再合并"路线的原罪。
这不是工程调参能解决的,而是信息缺失导致的结构性问题。分区越细、场景越大,这种跨区域的解释错误就越难在合并阶段修补。
ABCD 的核心机制:把不活跃的部分压成图像,而不是删掉
ABCD 的关键判断是:把东西从显存里移除,不等于把它从渲染图像里移除。
具体做法是,每次只训练一个空间分块,其余部分保持可见但冻结。对每一个相机视角,不活跃的高斯被预渲染成一张前景 RGBA 图像和一张背景 RGBA 图像。活跃分块在这两层之间渲染,三者通过 alpha 合成(alpha compositing) 叠加成最终图像。整个过程中,只有活跃分块需要驻留显存。
这里最关键的性质是:其余场景被"坍缩"成了图像,而图像的大小不取决于它代表了多少个高斯。无论背景里塞了几百万还是几千万个高斯,压出来就是一张固定分辨率的图。于是峰值显存只由活跃分块的大小和渲染分辨率决定,与场景总规模解耦。
峰值 VRAM 不随场景增大而增长,你可以把活跃分块固定在一个尺寸上。
这同时解决了上下文问题。优化器看到的仍然是完整场景的渲染结果,它能学到这个分块应该如何遮挡、如何与周围几何混合、应该待在谁的前面谁的后面。ABCD 不是训练完再缝合,而是在整个训练过程中始终维持各部分之间的空间关系。
代价被转移了,而不是消失了
ABCD 并没有让成本凭空消失,它做的是资源置换:用系统内存、磁盘存储和额外训练时间,去换稀缺的显存。
当前实现里,VRAM 由活跃分块大小和渲染分辨率决定;RAM 用来缓存可能观测到该分块的相机图像;磁盘则存放更大规模的一组"相机 × 分块"预渲染组合。场景越大,这套缓存体系的开销就越可观,而且目前用的是无损 PNG 存储。
Shiu 自己承认,当前的可见性测试相当保守——它只检查一个分块是否落在相机视锥体内,而不检查这个分块是否实际上被其他几何体挡住了。这意味着大量根本看不见的分块也被预渲染并缓存了。遮挡感知剔除(occlusion-aware culling) 可以直接砍掉这部分浪费。
这一点在超大场景里尤其关键,因为可见性本质上是局部的:站在某条街上的相机看不到一座城市的大部分区域。如果能充分利用这个性质,RAM 占用就有望收敛到一个"局部工作集"的量级,而不是随场景总量线性增长。此外,更激进的图像压缩、更好的缓存策略、降低分区刷新频率,都是尚未验证但明确有前途的方向。
所以这对行业意味着什么
对做数字孪生、城市级扫描、游戏场景重建的团队来说,ABCD 指出的方向比它当前的性能更重要:大场景重建的瓶颈不该由显存容量来定义。
过去,能重建多大的场景,直接取决于你能买到多贵的 GPU,这是一个硬天花板,而且成本曲线极陡。ABCD 把这个天花板换成了"系统内存 + 磁盘 + 训练时间"的组合,这三样东西的扩展成本远低于显存,而且可以水平扩展。对于分布式渲染工作流,这个性质尤其有价值——如果峰值显存与场景规模无关,那么把一个城市级场景拆到多台机器上训练,就变成了调度问题而不是可行性问题。
需要清醒的是,论文当前的实验用的是相对较小的场景,固定开销部分掩盖了方法本该体现的内存优势。Shiu 自己说得很直白:真正需要的是城市级数据集上的验证。而一旦走到那个尺度,新的问题会浮现——保守的可见性测试会变得不可接受,缓存策略必须重做,遮挡剔除从"优化项"变成"必需品"。
换句话说,ABCD 现在证明的是"这条路走得通",还没证明"这条路走得快"。它把一个大场景训练问题,重新表述成了一个缓存管理和可见性计算问题——后者虽然也不简单,但至少不再受制于显存这根硬管子。
