跳转至

ReSplat: Learning Recurrent Gaussian Splatting

会议: ECCV2026
论文: ECCV 原文
PDF: 论文全文
项目: ReSplat
代码: https://github.com/cvg/resplat
领域: 3D 视觉
关键词: 高斯泼溅、稀疏视图合成、学习优化、渲染误差反馈、循环细化

一句话总结

ReSplat 先从带相机参数的图像预测紧凑高斯场,再利用输入视图的渲染误差循环修正高斯与隐状态,在无需测试时显式梯度计算的情况下,将 DL3DV 八视图重建从初始化的 26.21 dB 提升到 27.70 dB,并保持逐像素基线约 1/16 的高斯数量。

研究背景与动机

前馈高斯泼溅模型把多张图像直接映射为可以渲染的 3D 高斯,避免每个新场景都进行数千步优化。 MVSplat、DepthSplat 等方法因此适合快速稀疏视图重建,但一次前向传播需要同时完成几何推断、跨视图融合和外观预测。 复杂场景或者训练分布之外的相机配置会放大这一次预测的误差,而单步模型没有显式检查当前重建是否解释了输入图像的机制。 逐场景 3DGS 优化虽然可以反复纠错,却在稀疏输入下容易过拟合,且求梯度和大量迭代带来较高耗时。

ReSplat 关注的不是简单增加网络规模,而是让模型获得可重复使用的纠错步骤。 输入图像在测试时已经存在,把当前高斯渲染回这些相机就能得到真实可用的反馈,不需要知道待合成的新视图答案。 另一个相连的瓶颈是表示规模:若每个输入像素都对应一个高斯,八张高分辨率图像就会产生数百万个高斯。 直接在这些高斯上反复做三维邻域交互,会使原本轻量的纠错过程变得昂贵,因此初始化必须同时考虑后续更新的成本。

论文把紧凑表示和误差驱动更新联合起来:先利用三维上下文补偿降采样造成的信息损失,再让共享参数的网络逐轮读取当前重建误差。 这里的“循环”是同一个静态场景上的反复细化,而不是按视频时间递推的动态场景建模。 核心 idea:把输入视图的渲染残差变成高斯更新网络的观测,在紧凑高斯场中反复执行学习到的纠错,而不是只做一次预测或在测试时重新求解梯度优化。

方法详解

整体框架

输入是多张 RGB 图像及其相机内参、外参,输出是能从新相机位置渲染的显式 3D 高斯集合。 流程包括紧凑上下文初始化、双域渲染误差、全局误差传播和状态化循环更新四个相互衔接的设计。 初始化只运行一次;之后每轮先渲染已有输入视图,再把误差反馈给同一个更新网络。 最终新视图渲染使用更新后的高斯场,不需要在每个新输出视角重新运行重建网络。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
        A["图像与相机参数"] --> B["紧凑上下文初始化"]
        B --> C["当前高斯与隐状态"]
        C --> D["双域渲染误差"]
        A -->|输入图像作参照| D
        D --> E["全局误差传播"]
        E --> F["状态化循环更新"]
        C -->|当前参数与记忆| F
        F -->|下一轮| C
        F -->|结束细化| G["高斯场与新视图"]

模型区分显式高斯参数与隐状态:前者决定实际渲染,后者保存不能仅由位置、透明度和外观参数表达的上下文。 测试时更新的是这两类场景状态,而非网络权重。 因此,“无梯度”专指推断时不显式计算场景参数的优化梯度,并不意味着训练网络无需反向传播。

关键设计

1. 紧凑上下文初始化:压缩高斯数量之前先补足三维交流能力

初始化基于 DepthSplat 的深度预测架构,但把其全分辨率深度结果缩到高、宽各 1/4,再用相机参数反投影到统一三维坐标系。 若输入为 \(N\) 张 \(H\times W\) 图像,则多视图默认设置产生 \(M=NHW/16\) 个三维点,而不是 \(NHW\) 个逐像素点。 每个点同时携带来自图像的特征;Small 模型特征维度为 256,Base 为 512。 作者使用空间上居中的输入相机作为参考坐标系,以缓和不同视图到统一坐标系的位移分布。 对于顺序轨迹,这通常对应中间帧;它是坐标规范化,不是额外估计相机姿态。 如果直接从压缩后的单点特征回归高斯,少量点难以补偿被丢失的局部细节,表 6c 的消融证实了这一点。 因此回归器使用六个交替的 kNN 注意力与全局注意力块,使点同时获得局部表面信息和跨视图、跨区域上下文。

局部 kNN 注意力使用三维邻接关系,初始化阶段取 \(k=16\);全局交互则让空间上较远但有关联的区域交换信息。 上下文聚合后的点位置作为初始高斯中心,两层 MLP 解码其余高斯属性,包括透明度、协方差相关参数和球谐外观。 论文将每个高斯的全部参数拼为 59 维向量,并用聚合后的特征初始化它的隐状态。 压缩在这里不是先生成海量高斯再剪枝,而是从较少的三维锚点开始预测。 这意味着表示数量从初始化开始就受控,后面的渲染与循环更新都能受益。 但这一默认公式针对多视图设置;双视图实验采用另一种解码配置,不能据此宣称所有实验都减少 16 倍高斯。

2. 双域渲染误差:既看颜色差异,也看结构性特征差异

每轮把当前高斯场渲染到所有输入相机,然后与已有的输入图像比较。 像素误差是“渲染 RGB 减去输入 RGB”,保留颜色偏差和细节差异的方向。 随后使用空间因子为 4 的 pixel unshuffle,将局部像素位置重排进通道,得到与高斯锚点对应的 1/4 分辨率网格。 这个操作不是普通平均池化,因此不会在第一步就把一个局部块内的所有残差平均掉。 像素分支再经过线性投影与 Layer Normalization,匹配特征分支的通道数。

特征误差使用 ImageNet 预训练 ResNet-18 的前三个阶段,分别来自 1/2、1/4、1/8 分辨率。 这些特征被双线性缩放到 1/4 分辨率并拼接,形成 256 维表示,再计算渲染图像特征与输入图像特征之差。 两种误差最终逐元素相加:像素分支提供直接颜色反馈,特征分支提供更丰富的结构与上下文反馈。 它不是在特征空间搜索最近邻,也不是计算损失对高斯参数的梯度,而是把观测残差编码成网络输入。 表 6a 中特征误差单独使用已经显著强于 RGB 误差,但两者结合仍然更好,说明二者信息并不完全重叠。

3. 全局误差传播:不把一个高斯的反馈限制在它原来的像素格

压缩后的误差网格与初始高斯具有相同数量的条目,最直接的做法是按条目一一拼接。 但同一个高斯可以覆盖多个渲染像素,还可能在其他相机中参与成像;原始像素位置并不等于它的全部影响范围。 如果只读取原来网格位置附近的误差,高斯会遗漏其他视图对当前几何和外观的约束。 ReSplat 因而先对误差 token 做全局注意力,让每个条目聚合所有输入视图中的残差信息,再把聚合结果与对应高斯参数及隐状态拼接。 这里的顺序很重要:先传播误差,再把误差信息交给三维更新器,不应描述成高斯与图像之间的显式梯度反投影。

高分辨率下,对全部 1/4 分辨率 token 直接做全局注意力仍然昂贵。 实现中再用因子为 4 的 pixel unshuffle 将网格暂时压到 \(N\times H/16\times W/16\),在这个更小的 token 集合上计算全局注意力。 之后用 pixel shuffle 恢复至 1/4 分辨率,使误差特征仍能按条目与高斯状态对应。 这一步压缩的是注意力计算的空间网格,不是再次减少最终高斯数量。 初始化中的全局注意力也使用这种高效实现,因此紧凑表示和低成本上下文聚合是一致的设计选择。

4. 状态化循环更新:用共享网络累积修正,而不是逐轮重建全部场景

更新模块读取当前高斯参数、隐状态和全局聚合误差,使用四个 kNN 注意力块捕捉局部三维结构。 这一阶段取 \(k=8\),更聚焦于邻近细节,随后用轻量解码头预测增量;高斯参数更新头是四层 MLP。 显式参数和隐状态都进行残差式累加,论文图 2 与式 (4) 给出的核心关系为:

\[ \mathbf{g}^{t+1}_j=\mathbf{g}^{t}_j+\Delta\mathbf{g}^{t}_j, \qquad \mathbf{z}^{t+1}_j=\mathbf{z}^{t}_j+\Delta\mathbf{z}^{t}_j. \]

其中 \(\mathbf{g}\) 是可渲染的高斯参数,\(\mathbf{z}\) 是隐状态,\(j\) 索引高斯,\(t\) 索引更新轮次。 下一轮必须重新渲染更新后的高斯,不能反复使用初始化时的同一份误差。 隐状态由初始化特征而来,并随更新累积信息;去掉它后,即使保留显式高斯属性,表 6d 仍出现明显下降。 不同轮次共享同一更新网络权重,因此增加迭代不等于增加一套新的参数,也不等于扩大初始化骨干。 实验中大约四轮后趋于饱和,同一个模型可以在测试时选择不同轮数,在质量与重建延迟之间调整。 高斯数量在整个细化期间固定,网络没有通过增密或删除高斯获得这些增益。

三维 kNN 本身也有工程边界:默认 CUDA 全局搜索在点数较少时有效,但其二次复杂度会在更多视图下成为瓶颈。 论文给出局部候选替代方案,利用同视图空间邻域及邻近相机的跨视图投影形成候选集,再按真实三维距离选择最近邻。 固定候选规模后搜索成本随点数近似线性增长;这是受限候选中的精确选择,不是保证找到整个点云的全局最近邻。

一个完整示例

以表 1 的八张 \(512\times960\) 输入图像为例,默认初始化得到 \(8\times512\times960/16=245{,}760\) 个高斯,表中取整为 246K。 同样输入下,逐像素方法产生 \(3{,}932{,}160\) 个高斯,表中记为 3932K。 第一轮把这 246K 个高斯渲染到八个已知相机,获得 RGB 与 ResNet 特征残差,完成全局传播并预测高斯和隐状态增量。 第二轮再次渲染已经修正的场景,所以更新器看到的是尚未解释好的部分,而不是原来的整份误差。 如果把场景中的窗框作为直观例子,网络可从残差中学习调整相关高斯的位置、形状和外观;这只是机制说明,不是论文单独量化的窗框实验。 该设置下 PSNR 随初始化、第一轮、第二轮、第四轮依次为 26.21、27.15、27.51、27.70 dB,数量始终为 246K。 最后只保留更新后的可渲染场景即可合成新视图,输入图像提供反馈,新视图真值不参与测试时纠错。

损失函数 / 训练策略

训练分两阶段:先训练紧凑初始化模型,再冻结它,仅训练循环模型。 第一阶段使用目标视图渲染损失以及输入深度图的边缘感知平滑正则,式 (8) 至 (10) 可合写为:

\[ \mathcal{L}_{\mathrm{1st}} =\sum_{v=1}^{V}\left[\ell_1(\hat I_v,I_v)+0.5\,\ell_{\mathrm{perceptual}}(\hat I_v,I_v)\right] +0.01\sum_{i=1}^{N}\left[|\partial_x\hat D_i|e^{-|\partial_x I_i|}+|\partial_y\hat D_i|e^{-|\partial_y I_i|}\right]. \]

这里 \(V\) 是监督的目标视图数,\(N\) 是输入视图数,感知损失使用 VGG 特征空间。 深度正则不需要真实深度标签:图像平坦处更鼓励深度平滑,明显图像边缘处则减弱约束。 注意,训练损失中的 VGG 感知距离与反馈编码中的 ResNet-18 特征差异是两种不同用途,不能混为同一模块。 第二阶段对每轮更新后的目标视图渲染结果施加同样的渲染损失,以 \(\gamma=0.9\) 对较早轮次折扣,使后期预测权重更高。 训练时随机选择 1 至 4 轮,而不是仅监督固定四轮的最终结果,这支持一个模型按不同推断预算运行。 优化器为 AdamW,渲染器使用 gsplat 中基于 Mip-Splatting 的实现。 默认 Base 总计 223M 参数,其中初始化 209M、循环模型 14M;消融使用 Small,总计 77M,其中初始化 62M、循环模型 15M。 所给缓存包含主文及参考文献,未包含文中提及的附录训练细节,因此此处不补写未核实的学习率、批量大小或训练时长。

实验关键数据

主实验

下表摘自原文表 1:DL3DV benchmark 的 140 个场景,每个场景输入八视图,分辨率为 \(512\times960\)。 3DGS 对测试场景逐场景优化,前馈方法在这些场景上直接推断;“重建时间”和后续单视图“渲染时间”是不同指标。 PSNR、SSIM 越高越好,LPIPS 越低越好;时间单位为秒,高斯数量沿用原表取整值。

方法 / 更新轮数 PSNR SSIM LPIPS 高斯数 重建时间 渲染时间
3DGS / 4000 23.46 0.770 0.224 359K 70 0.0009
MVSplat / 0 22.49 0.764 0.261 3932K 0.129 0.0030
DepthSplat / 0 24.17 0.815 0.208 3932K 0.190 0.0030
ReSplat / 0 26.21 0.842 0.185 246K 0.311 0.0007
ReSplat / 1 27.15 0.859 0.169 246K 0.437 0.0007
ReSplat / 2 27.51 0.865 0.163 246K 0.563 0.0007
ReSplat / 4 27.70 0.868 0.160 246K 0.816 0.0007

四轮模型比 DepthSplat 高 3.53 dB,但其中初始化已经带来 2.04 dB,循环细化自身再增加 1.49 dB。 不能把完整方法相对 DepthSplat 的全部优势都归因于循环更新。 渲染耗时约为逐像素基线的 1/4,但重建时间 0.816 秒高于 DepthSplat 的 0.190 秒,说明这里用一次性重建成本换取质量和后续渲染效率。 原文用约 100 倍概括相对 3DGS 的速度优势;按四轮表格值计算,\(70/0.816\) 约为 85.8 倍,不是精确的 100 倍。

另一协议是表 3 的 DL3DV 全场景覆盖测试,使用 16 张 \(540\times960\) 图像,不能与表 1 的 PSNR 横向混比。 ReSplat 两轮达到 23.51 dB、0.766 SSIM、0.284 LPIPS,使用 518K 高斯、1.7 秒重建;Long-LRM 为 22.66 dB、0.740、0.292、2073K 高斯、0.4 秒。 因此相对 Long-LRM 的高斯数量优势约为四倍,但重建仍更慢,论文指出 kNN 是原因之一。

表 4 的两张 \(256\times256\) RealEstate10K 图像采用四倍空间采样点压缩、每点解码四个高斯,总数量与逐像素方法相同。 该设置 ReSplat 为 29.75 dB、0.912 SSIM、0.100 LPIPS;LVSM decoder-only 为 29.67 dB、0.906、0.098,ReSplat 并非在所有指标上更优。 表 5 的 RealEstate10K 到 ACID 零样本测试中,ReSplat 达到 29.87 dB、0.864、0.135;这是另一套两视图模型的跨数据集评估。

消融实验

以下两表来自原文表 6,均使用 ReSplat-Small、DL3DV 八输入视图、\(256\times448\) 分辨率。 它们与主结果表的模型和分辨率不同;29.07 dB 不能被解释为超过高分辨率 Base 主实验的直接证据。 第一张表对应表 6a,隔离循环网络所接收的误差信息。

反馈配置(表 6a) PSNR SSIM LPIPS
仅初始化 26.77 0.865 0.142
循环更新但不输入渲染误差 27.19 0.873 0.137
仅 RGB 误差 27.90 0.882 0.130
仅特征误差 28.77 0.897 0.110
RGB 与特征误差拼接 28.93 0.900 0.106
RGB 与特征误差相加 29.07 0.902 0.105

第二张表摘取表 6c、6d,区分“初始化能否承受压缩”与“循环更新需要什么输入和交互”。 初始化行都使用 57K 高斯;循环行也保持固定高斯数量,但它们是细化后的结果,不能当成同一个阶段的直接删模块比较。

阶段与配置 原表 PSNR SSIM LPIPS
完整初始化 6c 26.77 0.865 0.142
初始化去掉 kNN 注意力 6c 25.30 0.833 0.178
初始化去掉全局注意力 6c 26.33 0.856 0.150
初始化同时去掉两种注意力 6c 24.50 0.814 0.200
完整循环模型 6d 29.07 0.902 0.105
循环模型去掉隐状态 6d 27.79 0.878 0.125
循环模型去掉 kNN 注意力 6d 28.58 0.894 0.111
循环模型去掉全局注意力 6d 28.96 0.900 0.107

关键发现

  • 反馈不是可有可无的辅助输入:表 6a 中不输入误差时为 27.19 dB,完整模型为 29.07 dB,差 1.88 dB;单纯重复网络并不能解释全部收益。
  • 隐状态保留了显式高斯属性之外的信息:表 6d 去掉它下降 1.28 dB,而去掉 kNN 或全局注意力分别下降 0.49、0.11 dB。
  • 局部三维上下文对压缩尤其重要:表 6c 初始化去掉 kNN 下降 1.47 dB,同时去掉两种注意力下降 2.27 dB。
  • 坐标系也是学习条件:表 6b 使用中间视图为 29.07 dB,原始 COLMAP 坐标为 28.14 dB,差 0.93 dB;这不表示模型已经具备任意坐标变换不变性。
  • 参数扩容不是同等替代:表 2 中 Small 四轮 77M 参数达到 29.07 dB,而 Large 单步 559M 参数为 27.86 dB,相差 1.21 dB;结论限于所比较的架构与训练设置。

亮点与洞察

  • 反馈来自测试时本来就有的观测,而非不可见的新视图标签。这让模型能够适应当前场景,同时避免把“测试时适应”误解为更新网络权重。
  • 紧凑初始化决定了循环是否划算。图 6 的分析指出,逐像素 MVSplat 初始化虽也能被细化,但更多高斯使后续更新慢 13 倍,说明初始化不仅决定起点质量,也决定更新成本。
  • 误差是观测,隐状态是记忆,二者承担不同职责。可以把这个分工迁移到其他显式三维表示,但必须同时设计反馈如何对应表示元素,不能仅增加循环次数。
  • 固定场景表示支持多次廉价渲染。对需要大量输出视角的应用,应该衡量一次性重建加多次渲染的总成本,而不是只比较第一帧延迟。

局限与展望

  • 作者明确指出高斯数量在细化时固定。若初始化漏掉结构,更新器只能调整已有高斯,尚无自适应增密或剪枝机制来重新分配表示容量。
  • 四轮左右饱和是经验观察,不是数学收敛保证。更多测试时计算未必持续改善结果,作者将更有信息量的反馈视为后续方向。
  • 当前输入是静态视图集合,并非在线流式系统。作者提出滑动窗口初始化与持续细化的设想,但没有在本文完成流式建图验证。
  • 笔记判断:对已知相机参数和统一坐标系的依赖需要重视。论文使用 COLMAP 姿态,且坐标选择影响结果,不能据此声称对姿态噪声或无位姿输入同样稳健。
  • 笔记判断:紧凑高斯和快速渲染并不自动等于最低重建延迟。kNN、反馈渲染与多轮更新都消耗时间,部署时应同时报告视图数、分辨率、循环轮数及输出视角数量。
  • 笔记判断:两视图配置放弃了默认 16 倍数量压缩,说明质量与表示冗余取决于输入覆盖度。将自适应表示预算与误差反馈结合,是比无条件压缩更有针对性的延伸。

相关工作与启发

  • vs DepthSplat / MVSplat:这些方法提供快速单步高斯预测,ReSplat 在紧凑三维上下文初始化之上增加可反馈的细化。与 DepthSplat 的比较同时包含初始化与循环两方面变化,应结合消融拆解贡献。
  • vs 3DGS / G3R:3DGS 逐场景优化,G3R 使用显式梯度指导学习更新;ReSplat 使用渲染残差直接预测更新。它也不需要 G3R 所依赖的覆盖充分的初始三维点,但仍需要带位姿的图像。
  • vs SplatFormer:后者细化优化得到的高斯,以物体级场景和单步非循环网络为主;ReSplat 使用前馈初始化、误差反馈及共享权重多步更新。论文在场景级数据上的迁移比较受点云归一化与网格选择影响,不应扩大成所有任务上的绝对优劣。
  • vs Long-LRM / LVSM:Long-LRM 展示多视图一次重建的效率,LVSM 展示无需显式高斯的视图合成能力。ReSplat 的优势是显式表示与反馈纠错,但重建耗时和感知指标并非处处领先。
  • 研究启发:可以研究由残差决定何处增密、何处停止更新的预算策略。该建议来自固定高斯数和四轮饱和这两个限制,并不是论文已经实现的模块。

评分

  • 新颖性: 4/5。紧凑初始化、双域误差反馈和共享状态更新形成了完整方法,但学习优化与循环细化本身已有较多先例。
  • 实验充分度: 4/5。覆盖多视图、两视图、跨数据集、尺度与模块消融,但流式输入、姿态误差和长期迭代仍缺少验证。
  • 写作质量: 4/5。框架图和消融能支持主要机制,阅读时需要特别区分分辨率、初始化配置及重建与渲染效率。
  • 价值: 4/5。为快速显式三维重建提供了可复用的误差反馈路径,实际收益取决于重建预算和后续渲染需求。