跳转至

ReSplat: Learning Recurrent Gaussian Splatting

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

一句话总结

ReSplat 先从带位姿图像构造紧凑高斯场,再把该场景对输入图像的解释误差交给共享循环网络修正,而非测试时求梯度;在 DL3DV 八视图实验中,固定约 246K 高斯由初始化的 26.21 dB 提升至四轮后的 27.70 dB,同时保留可反复快速渲染的显式场景。

研究背景与动机

前馈高斯重建把稀疏图像一次变成三维表示,避免每个场景重新优化数千步。但一次预测同时承担深度、跨视图融合和外观估计,复杂几何或训练外场景会留下误差;预测结束后,模型通常没有机会检查“这些高斯是否真的解释了给定照片”。逐场景3DGS恰好相反:它通过反复渲染和优化纠错,却依赖显式梯度和大量迭代,稀疏视图下还可能越优化越过拟合。因此问题不是是否允许迭代,而是能否把有用的纠错过程学成少量廉价前向步骤。

测试时输入照片本来就存在,这提供了不需要新视图真值的反馈:将当前场景渲染回已知相机,观察颜色和结构哪里不一致,再修正场景。若只把循环网络接到逐像素高斯场之后,每张高分辨率输入都带来大量高斯,三维邻域交互和每轮渲染会迅速变贵。初始化不仅要给出好起点,还必须决定一个后续反复更新负担得起的表示预算。

ReSplat 将两者联合设计:用三维上下文弥补较少锚点的信息损失,再让同一更新器根据最新渲染误差调整高斯与隐状态。“循环”针对一个静态场景的反复细化,不是动态物体的时间建模。核心 idea:在紧凑显式表示中,把测试时可观测的输入视图残差变成学习更新的输入,使场景能够纠错而不需要测试时更新网络权重或计算优化梯度。

方法详解

整体框架

输入是多张 RGB 图像及相机内外参,输出是支持新视图合成的显式三维高斯场。紧凑上下文初始化只执行一次;之后循环执行双域渲染误差、全局误差传播和状态化循环更新,每次都用更新后的场景重新渲染。新视图真值只用于训练或离线评测,不进入测试时反馈回路。

%%{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["固定高斯场<br/>新视图渲染"]
    H["训练目标视图"] -.->|逐轮渲染监督| F

显式参数控制真正渲染出的内容,隐状态保存几何和外观参数之外的上下文。推理时变化的是这两种场景状态,网络权重保持不变。“无梯度”仅指推理不显式求场景优化梯度,训练更新器仍然需要反向传播;输入图像作反馈也不等于给模型额外提供不可见相机的答案。

关键设计

1. 紧凑上下文初始化:先控制表示规模,再用三维交流补偿压缩

初始化借用 DepthSplat 的深度预测架构,将全分辨率深度缩至高、宽各1/4,再通过已知相机反投影到统一三维坐标系。多视图默认配置因此生成 \(M=NHW/16\) 个锚点,而非每个输入像素一个高斯;压缩发生在预测起点,不是先生成密集场再剪枝。每点还带有图像特征,Small为256维、Base为512维。

少量点若独立解码,会丢失纹理和表面细节。回归器因此通过六个交替的kNN与全局注意力块,让点交换局部表面信息和跨区域上下文,再用两层MLP解码透明度、协方差相关参数和球谐外观,点坐标成为初始中心。所有高斯属性拼成59维向量,聚合后的特征作为初始隐状态。这里的压缩收益需要上下文网络支撑,不是降低采样密度天然不会损害质量。

初始化kNN取 \(k=16\)。坐标参考系使用空间上居中的输入相机,对顺序轨迹通常是中间帧,以缩小场景点的空间分布跨度;这依赖给定相机,不是在网络中额外完成位姿估计。全局注意力先把1/4分辨率特征用pixel unshuffle再压缩到高、宽各1/16的网格计算,然后pixel shuffle回去,以避免对所有高分辨率token直接全局交互。临时网格压缩不再次改变高斯数量。

默认16倍高斯压缩不能套到所有实验。双视图低分辨率配置只把点数压缩4倍,并从每点解码4个高斯,最终数量与逐像素方法相同;少视图时冗余更少,作者选择保留更多表示容量。

2. 双域渲染误差:让更新器同时看见颜色偏差与结构偏差

每轮先用当前高斯渲染全部输入相机。像素误差为渲染RGB减输入RGB,保留偏差方向;经空间因子4的pixel unshuffle把局部像素排列进通道,形成1/4分辨率网格。它不同于直接平均池化,不会立刻将同一局部块的正负残差相互平均掉。之后线性层和Layer Normalization将其投到与特征分支相同的通道维度。

特征误差使用ImageNet预训练ResNet-18的前三阶段,取1/2、1/4、1/8分辨率特征,双线性缩放至1/4后拼接,形成256维特征。分别编码渲染图和输入图,再相减;最终把像素误差与特征误差逐元素相加。前者保留直接颜色不一致,后者使结构和邻域上下文也成为反馈。这不是优化梯度,也不是对误差图进行最近邻匹配。

训练损失中的VGG感知距离与这里的ResNet误差编码是不同机制:一个决定怎样监督网络,一个是推理更新器实际可以读取的观测。表6a中只用特征误差已强于只用RGB,而两者相加仍更好,说明增加的并非同一信息的重复表达。

3. 全局误差传播:不要让高斯只读取生成它的那个像素位置

初始高斯与压缩误差条目数量一致,最直接的关联是按原输入网格一一拼接。但高斯在渲染时可覆盖一片像素,并从多个相机被观察;原来的锚点索引不代表它对图像的全部影响区域。只读该索引附近的残差,会遗漏其他视角对相同几何或外观的约束。

ReSplat先对误差特征做全局注意力,让每个条目聚合所有输入视图中的反馈,再与对应高斯参数、隐状态拼接。这样保留网格到锚点的关联,又不将信息来源锁死在该局部格子。全局注意力同样使用临时unshuffle/shuffle降低token数量;恢复后的误差仍与固定高斯集逐条对应。它是学习的信息传播,不应被描述成由可微渲染器计算梯度再精确反投到每个高斯。

4. 状态化循环更新:记住此前的修正,并从新的残差继续推断

更新器以当前高斯、隐状态和传播后的误差为输入,用四个kNN注意力块建模三维局部结构,这里取 \(k=8\)。四层MLP预测高斯参数增量,网络同时预测隐状态增量;图2给出的更新关系可以简写为:

\[ \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. \]

其中高斯参数决定渲染,隐状态保存初始特征和后续更新所需的潜信息。每轮都重新渲染,更新器因此处理“剩余错误”,而不是把同一残差重复输入。不同轮次共享参数,更多迭代不意味着新增一套网络。高斯数量也始终固定,收益不是来自自动增密或剪枝。

训练随机采1–4轮,测试可按预算选择轮数;约四轮后饱和是实验观察,不是数学收敛保证。全局kNN默认CUDA搜索的二次复杂度在大量点时成为瓶颈,论文给出固定大小候选集的局部替代:从同视图空间邻域和邻近相机投影获取候选,再按真实三维距离选最近邻。这保证的是候选集内精确选择,不是整个点云的全局近邻保证。

一个完整示例

八张 \(512\times960\) 输入按默认配置产生 \(8\times512\times960/16=245{,}760\) 个高斯,表1取整为246K;逐像素方法对应 \(3{,}932{,}160\),记为3932K。

  1. 深度和上下文网络给出初始场景与隐状态,此时新视图PSNR为26.21 dB。
  2. 将当前高斯渲染回八个输入相机,计算RGB及ResNet特征残差,全局传播后预测第一轮增量,PSNR达到27.15 dB。
  3. 重新渲染已经修正的高斯,继续处理剩余误差;第二轮达到27.51 dB,第四轮达到27.70 dB,数量始终246K。
  4. 结束重建后,从新相机只需渲染最终高斯场,不必每次重新运行四轮重建。输入图像为反馈依据,新视图真值没有参与测试时更新。

可以把窗框看作直观解释:颜色和结构残差可能提示相关高斯的外观、位置或形状仍需调整。但本文没有给出窗框专门消融,不应把这一例子写成已测出的部件级更新规律。

损失函数 / 训练策略

训练先学习初始化,再冻结初始化、仅训练循环网络。初始阶段使用目标视图的L1与VGG感知损失,感知项权重0.5;输入深度使用边缘感知平滑正则,权重0.01。后者在平坦图像区更鼓励深度平滑,在明显图像边缘处减弱约束,不需要真实深度标注。

循环阶段对每一轮更新后的目标视图渲染结果施加渲染损失,较早轮次以 \(\gamma=0.9\) 折扣,后期预测权重更高。缓存中部分公式抽取损坏,此处依据清晰正文描述目标,不猜补全部实现符号。训练需要目标视图监督,不能因为推理反馈仅用输入就称整个训练无监督。

实现使用AdamW以及gsplat中基于Mip-Splatting的渲染器。默认Base为223M参数,其中初始化209M、循环14M;消融Small为77M,分别62M和15M。当前缓存未包含附录学习率、batch size与训练时间,不补造这些参数。

实验关键数据

主实验

表1在DL3DV的140个测试场景中使用八张 \(512\times960\) 输入图像。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

八视图主实验中,ReSplat以固定246K高斯在四轮更新后达到27.70 dB PSNR,优于DepthSplat的24.17 dB。完整差值3.53 dB中,初始化已贡献2.04 dB,循环自身再增加1.49 dB,不能把全部差值归功于更新器。

渲染约快4倍,但重建0.816秒慢于DepthSplat的0.190秒;这种取舍适合需要较高质量、并反复渲染同一显式场景的场合,不是所有延迟指标都更优。原文以约100倍概括相对3DGS的提速,而表中四轮值 \(70/0.816\) 约为85.8倍,应区分概括与精确比值。

表3另用16张 \(540\times960\) 图像覆盖完整DL3DV场景,协议与表1不同。两轮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秒。此时高斯约少4倍而不是16倍,因为Long-LRM也进行剪枝;ReSplat仍重建更慢。

表4双视图RealEstate10K采用前述不同表示预算,ReSplat为29.75 dB、0.912、0.100;LVSM decoder-only为29.67 dB、0.906、0.098,后者LPIPS更好。表5的RealEstate10K到ACID零样本结果为29.87 dB、0.864、0.135,这是另一套双视图模型,不应与八视图训练模型混写。

消融实验

表6采用Small、DL3DV八视图、\(256\times448\),不能将29.07 dB与主表高分辨率Base直接排名。下表摘取反馈与隐状态的关键行,并标明来源;表6d的隐状态行不是额外一次反馈类型实验。

配置 原表 PSNR SSIM LPIPS
仅初始化 6a 26.77 0.865 0.142
循环但不输入渲染误差 6a 27.19 0.873 0.137
仅RGB误差 6a 27.90 0.882 0.130
仅特征误差 6a 28.77 0.897 0.110
RGB与特征误差拼接 6a 28.93 0.900 0.106
RGB与特征误差相加 6a 29.07 0.902 0.105
完整循环模型 6d 29.07 0.902 0.105
循环模型去隐状态 6d 27.79 0.878 0.125

关键发现

  • 没有反馈的循环为27.19 dB,完整为29.07 dB,差1.88 dB;因此仅重复网络不足以解释全部收益。特征残差比纯RGB更有效,两者相加再获得0.30 dB。
  • 去隐状态损失1.28 dB,说明渲染参数本身不能替代丰富潜特征。表6d去kNN与全局注意力分别为28.58和28.96 dB,也各有贡献。
  • 表6c中初始化去kNN从26.77降至25.30 dB,去全局注意力为26.33,两者都去为24.50。紧凑表示能保持质量依赖三维上下文,不是仅靠采样公式。
  • 表6b中间视图坐标为29.07 dB,COLMAP原坐标为28.14,差0.93 dB;坐标规范化有效并不意味着任意坐标不变性。
  • 表2中77M Small四轮29.07 dB,高于559M Large单步27.86 dB;这证明所测架构中循环比单纯扩参数有效,不证明任何等算力单步网络都无法匹敌。

亮点与洞察

  • 测试时适应可以发生在场景表示上,而非网络权重上。输入视图的可观测残差提供任务专属反馈,不需要新视图标注或测试时反向传播。
  • 初始化控制的不仅是起点质量,也控制每轮更新的账单。图6指出逐像素MVSplat初始化虽也可被细化,但高斯更多使更新慢13倍,说明紧凑表示与循环不能分开只看一个模块。
  • 误差负责指出当前解释哪里不足,隐状态保留显式参数无法表达的上下文。将这一结构迁移到其他三维表示时,必须同时解决反馈与表示元素的关联,而非只增加迭代次数。

局限与展望

  • 高斯数量固定,初始化没有充分覆盖的结构无法通过新建基元补上;自适应增密、剪枝是作者提出而未完成的方向。
  • 约四轮饱和只是当前实验的经验现象,继续迭代未必持续获益;论文没有给出单调改进或收敛保证。
  • 输入是静态视图集合,滑动窗口和连续细化仅为未来流式扩展设想,不是已实现的在线SLAM或动态场景模型。
  • 方法依赖给定相机与坐标规范化,姿态噪声、无位姿输入、遮挡变化的鲁棒性不能由跨数据集成绩直接推出。
  • 精简高斯不保证最短首帧重建延迟,kNN、反馈渲染与多轮更新均有成本;应按视图数、分辨率、循环轮数和输出相机数量评估总开销。
  • 缓存未含附录,部分公式受损;不声称已核验完整训练超参、补充实验或多次运行统计。

相关工作与启发

  • vs DepthSplat / MVSplat:单步前馈提供基线,本文同时改变初始化与后续纠错。必须用消融分开理解紧凑上下文与循环的贡献。
  • vs 3DGS / G3R:前者逐场景求解,后者显式梯度指导更新;ReSplat以残差直接预测增量,不需要覆盖充分的初始三维点,但仍需要带位姿图像。
  • vs SplatFormer:前者主要对优化高斯做单次物体级细化;本文使用前馈初始化和共享多步反馈。场景级比较受归一化与网格选择影响,不应扩大成所有任务的普遍排名。
  • vs Long-LRM / LVSM:显式高斯及便宜重复渲染是本文的部署特点,不代表重建延迟或每个感知指标都领先。
  • 研究启发:让残差同时决定哪里增密、哪里继续更新、哪里提前停止,可以把固定表示预算与循环预算联动;这是基于局限的建议,不是已有模块。

评分

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