✨ 要点🔬 技术摘要
想象一下,你正试图用数百万个微小的、发光的、毛茸茸的气球(称为“高斯”)来构建一个令人惊叹的、照片级真实的 3D 世界。这就是**3D 高斯泼溅(3DGS)**所做的事情。这是一种从照片创建 3D 场景的流行方法,但到目前为止,构建这些世界就像试图用一把缓慢、沉重的画笔来绘制杰作,而这把画笔只能在一种特定品牌的电脑(NVIDIA)上运行。
这篇论文介绍了VkSplat ,一种新工具,它就像一把高速、通用的画笔。它能更快地构建这些 3D 世界,占用更少的内存,并且几乎可以在任何显卡上运行,而不仅仅是 NVIDIA 的。
以下是他们是如何做到的,用日常类比来解释:
1. 问题:“交通堵塞”与“排他性俱乐部”
交通堵塞 :在旧的方法中,计算机必须将每一个像素与每一个气球进行比对,以查看它们是否接触。这造成了巨大的交通堵塞,成千上万个工人(计算机线程)都试图同时写入同一个剪贴板,导致它们互相等待。
排他性俱乐部 :完成这项工作的最佳工具是用一种语言(CUDA)编写的,这种语言只能在 NVIDIA 显卡上运行。如果你拥有 AMD 或 Intel 显卡,你就会被拒之门外,或者不得不使用一个更慢、更笨拙的版本。
2. 解决方案:VkSplat 的“通用工具箱”
作者使用Vulkan 构建了VkSplat ,这是一种通用语言,能同样良好地与几乎所有显卡(NVIDIA、AMD、Intel 等)对话。他们不仅仅是翻译了旧代码,而是从头开始重建了引擎,使其极其高效。
3. 秘密配方(优化措施)
A. “完美地图”(图块剔除)
旧方法 :想象一位送货员检查街道上的每一栋房子,看看他们是否有包裹,即使那栋房子显然在城镇的另一边。这浪费了时间。
VkSplat 方法 :他们使用一种“扫描线”方法。就像在气球周围画一个完美、紧密的方框,只检查方框实际接触到的房子。他们通过数学计算得出结果,确保零错误(不检查不存在的房子,也不遗漏存在的房子)。这在交通堵塞发生之前就阻止了它。
B. “智能团队领导”(自适应调度)
旧方法 :想象一个工厂,每个工人被分配固定数量的任务,而不管实际上有多少任务在等待。一些工人闲置,而另一些则不堪重负。
VkSplat 方法 :他们使用一位“智能团队领导”来监视工作队列。如果某个特定区域有很多气球,领导就会分配更多工人到那个位置。如果很少,就分配较少的人。他们甚至采用了一种“赌徒策略”(Thompson 采样),在训练期间尝试不同的工作调度,以找到针对该特定场景完成工作的绝对最快方式。
C. “一站式商店”(融合操作)
旧方法 :想象一位厨师切菜,把菜放进碗里,走到冰箱拿香料,走回来,混合它们,然后走到炉灶。这涉及大量的走动(将数据移入和移出内存)。
VkSplat 方法 :他们建立了一个厨房,切菜、混合和烹饪都在一个单一的动作中完成。他们将“相机数学”(投影)和“学习步骤”(优化器)合并为一个单一步骤。这意味着数据永远不必离开“厨房台面”(内存),节省了巨大的时间和空间。
D. “智能排序”(32 位排序)
旧方法 :对数百万个项目进行排序通常需要为每个项目写下非常长、详细的地址(64 位数字)。
VkSplat 方法 :他们意识到可以使用更短、更聪明的地址(32 位数字),这些地址仍然能保持所有项目的正确顺序。这就像使用邮政编码而不是完整的街道地址来分拣邮件——它更快,占用空间更少,且不会损失准确性。
4. 结果:更快、更精简、更通用
该论文在 NVIDIA RTX 3090 显卡上将这种新工具与当前的黄金标准(GSplat)进行了测试:
速度 :它快了3.3 倍 。如果旧方法需要 23 分钟,VkSplat 大约需要 7 分钟。
内存 :它使用了33% 更少 的视频内存(VRAM)。这就像把一辆巨大的搬家卡车塞进一辆紧凑型汽车里。
质量 :最终的 3D 图像看起来与高质量标准完全相同。
兼容性 :他们在AMD 显卡(Radeon RX 7800 XT)上进行了测试。它成功了!虽然在 NVIDIA 上运行得更快(由于数据移动方式的硬件差异),但它证明了该工具可以在不同品牌之间工作,打破了“仅限 NVIDIA"的壁垒。
总结
VkSplat 是一个新的、高度优化的引擎,用于创建 3D 世界。它用快速、通用且高效的系统取代了过去缓慢、排他且占用大量内存的方法。这就像从只能在鹅卵石上运行的马车升级到了可以在任何轨道上运行的高速列车,让你在携带更少行李的同时,以三倍的速度到达目的地。
以下是论文《VkSplat: High-Performance 3DGS Training in Vulkan Compute》的详细技术总结。
1. 问题陈述
尽管 3D 高斯泼溅(3DGS)在高质量新视图合成中迅速普及,但其实际部署仍受限于两大主要瓶颈:
性能瓶颈: 现有的训练流程在速度和内存使用方面往往次优,特别是在处理大型场景时。关键瓶颈包括排序过程中的误报瓦片相交、反向光栅化期间的原子竞争,以及优化器(如 PyTorch 的 Adam)中低效的内存处理。
硬件锁定: 大多数最先进的实现严重依赖 CUDA 生态系统和 PyTorch,将训练限制在 NVIDIA GPU 上。这限制了拥有 AMD、Intel 或移动 GPU 用户的可访问性。
碎片化: 此前尝试使用跨厂商 API(如 Vulkan)的方案,要么仅解决了光栅化问题(而非端到端训练),要么仍依赖 PyTorch 进行训练循环,未能完全消除对 CUDA 的依赖。
2. 方法论
作者提出了 VkSplat ,这是一个完全端到端的 3DGS 训练流程,完全基于 Vulkan Compute 实现。该系统构建于 Slang 着色语言(针对 Vulkan 优化)之上,以确保跨厂商兼容性的同时保持高性能。
核心方法论涉及对 3DGS 流程的彻底重写,并包含特定的架构变更:
全 Vulkan Compute: 整个流程,从初始化和致密化到优化,均在 GPU 上运行,无需 CPU 端干预或 PyTorch 依赖。
Slang 后端: 利用 Slang 使代码能够针对多种后端,尽管当前实现专注于 Vulkan。
3. 关键技术贡献
论文详细阐述了五项主要技术优化,使 VkSplat 能够超越基于 CUDA 的基线:
A. 通过扫描线相交实现完整的瓦片剔除
问题: 现有方法(如 [KKLD23], [RSP∗24])会产生误报的瓦片相交(检查实际上未与高斯重叠的瓦片),浪费排序和光栅化时间。
解决方案: VkSplat 采用 扫描线公式 来计算精确相交。通过将高斯视为椭圆并计算相交行/列的闭式区间,系统生成精确的瓦片 - 深度对列表。
影响: 消除了误报,无需单独的剔除传递,从而降低了 VRAM 使用量和排序开销。
B. 自适应反向光栅化
问题: 标准的每像素反向传递在更新高斯梯度时会导致高原子竞争。
解决方案: 作者实现了两种策略,并使用 Thompson 采样调度器 根据场景动态选择最快的策略:
每瓦片并行: 每个瓦片一个线程块,动态调整高斯批次大小(优化为 S = N P S = \sqrt{NP} S = N P )以最小化延迟。
共享内存优化: 两遍方法(前向传递在共享内存中计算透射率;反向传递按高斯累积梯度)以最小化线程发散。
影响: 显著减少了原子竞争并提高了线程利用率。
C. 融合投影反向与优化器
问题: 标准实现分别存储梯度并使用 PyTorch 的 Adam,导致不必要的内存占用和内核启动。
解决方案: 投影反向传递与 Adam 优化器被 融合为单个内核 。
尺度和不透明度的值与梯度在内核中直接在 log/logit 空间之间转换。
球谐函数(SH)系数以与子组大小(128 位值)对齐的列式格式存储,以改善内存合并。
影响: 消除了梯度的中间内存存储,并减少了内核启动开销。
D. 32 位瓦片 - 深度排序
问题: Vulkan 的原生排序通常慢于 CUDA 的优化内置函数。
解决方案: 作者不使用 64 位键(32 位瓦片 ID + 32 位深度),而是使用 32 位键 。他们将深度 z z z 映射到一个范围,其中仅 FP32 浮点数的低 23 位尾数变化,将瓦片 ID 打包到高位。
影响: 在 Vulkan 硬件上实现了高效的 32 位排序,同时不牺牲深度精度或图像质量。
E. 完全融合的损失梯度评估
解决方案: 单个内核直接计算 L1 和 SSIM 损失的加权和及其梯度。
优化: 参考图像存储为 UINT8 RGBA(避免 FP32 转换),Alpha 遮罩处理开销极低。
影响: 消除了中间归约步骤和内存布局转换(从通道后置到通道前置)。
4. 结果
作者在 NVIDIA RTX 3090 上,使用 Mip-NeRF 360 数据集中的 7 个场景对 VkSplat 进行了评估,并与 GSplat 基线(领先的 CUDA+PyTorch 实现)进行了对比。
性能:
速度: 相比 GSplat 基线实现了 3.3 倍加速 (例如,默认致密化时间为 412 秒对比 1384 秒)。
VRAM: 内存使用量减少了 33% (3.01 GiB 对比 4.56 GiB)。
粒度: VkSplat 在 每一个 独立的流程阶段(投影、分块、光栅化、损失、优化器)都更快。
质量:
图像质量指标(PSNR、SSIM、LPIPS)与基线 完全相同 ,证实优化未损害保真度。
跨厂商兼容性:
成功在 AMD Radeon RX 7800 XT 上进行了训练。
虽然 AMD 整体速度较慢(NVIDIA 上为 575 秒,AMD 上为 1201 秒),但产生了 consistent 的质量指标和 VRAM 使用量。性能差距主要归因于 AMD 上较慢的主机到设备内存传输,表明仍有针对特定硬件进行进一步调优的空间。
5. 意义
首个端到端 Vulkan 3DGS: 这是首个基于全 Vulkan 的 3DGS 训练流程,实现了最先进的性能,打破了 CUDA 的垄断。
硬件无关性: 通过移除 PyTorch 和 CUDA 依赖,VkSplat 使得在 AMD、Intel 和移动 GPU 上进行 3DGS 训练成为可能, democratizing 了高质量 3D 重建的访问权。
性能领先: 反直觉的是,Vulkan 实现优于高度优化的 CUDA 基线,证明了细致的底层 GPU 优化(融合内核、精确剔除、自适应调度)即使在非 NVIDIA 硬件上也能带来收益。
可扩展性: Slang 的使用表明该流程可以轻松移植到其他后端,如 Metal、DirectX 或 WebGPU,进一步拓宽生态系统。
局限性: 当前实现缺乏成熟训练器中的一些“生产就绪”功能,如曝光校正、深度监督、批处理和多 GPU 训练。然而,核心架构旨在容纳这些功能。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。