GSFixer:用真实照片引导视频扩散,修复 3DGS 的新视角

从几张照片训练出的 3D Gaussian Splatting(3DGS),在拍过的角度看起来可能很自然。相机一旦移到两张照片之间,墙上的窗框却可能变斜,屋檐边缘也可能出现漂浮的碎片。ICML 2026 的 GSFixer 把这些新视角渲染当成一段待修复的视频,并用真实照片提供外观和几何线索。修复后的画面还可以带着相机位姿回到 3DGS 训练中。GSFixer 论文

怎样给修复模型准备训练数据?

作者从 DL3DV‑10K 随机选取约 1,000 个场景。每个场景都有较密的实拍序列和相机位姿。先只取少量照片来训练一个 3DGS,例如 3、6 或 9 张,再沿原始拍摄路径渲染。这样,同一个相机位置有两份图像,一份是少视角 3DGS 容易出现伪影的渲染,另一份是原始实拍照片。

训练片段还带有两张参考照片,来自最初输入 3DGS 的真实视角。模型用有缺陷的渲染和参考照片作为条件,以对应的干净实拍序列为目标。训练固定为 49 帧、720 × 480,从预训练的 CogVideoX‑5B‑I2V 初始化,使用 AdamW、学习率 2 × 10⁻⁵ 和预热,训练 10,000 次迭代。论文报告 batch size 为 8,在 8 张 NVIDIA H20 上训练约 4 天。论文 §4.1

一条训练样本可以想成两排同步画面。上排是少视角 3DGS 的渲染,下排是同一组相机位置的实拍照片。输入端另外有两张可见的参考照片,目标端的中间实拍帧负责提供正确答案。因为视角一一对应,模型能学到如何修复窗框扭曲和浮点,同时保留这个相机应该看到的构图。伪影来自真正跑过的稀疏视角重建,包含了跨视角移动的变形和缺失。

两张真实照片怎样影响中间 47 帧?

CogVideoX 的 3D VAE 会在时间、宽和高三个维度一起压缩视频。去噪 Transformer 处理一整段潜空间表示,因而可以关联多个视角里逐渐移动的窗框。GSFixer 在这个主干上增加了两条视觉条件路径。CogVideoX 论文 · GSFixer §3.3

第一条是视频条件。 两张真实照片放在条件序列首尾,中间是各目标相机下的 3DGS 渲染。整段经过 VAE 编码,与正在去噪的视频表示一起输入 Transformer。即使某扇窗已经拉歪,原渲染仍提供了它在每个视角的大致位置和构图。

第二条是参考特征。 DINOv2 分别从两张参考照片提取图像块特征,VGGT 则联合处理两张图,提取包含跨视角空间关系的中间特征。两类 token 分别投影到相同维度后相加。在每个去噪 Transformer 块里,当前视频 token 作为 Query,融合参考 token 作为 Key 和 Value,通过交叉注意力读取相关区域。以窗框为例,模型既能从原渲染确定窗户大致在哪,也能从参考照片读取更清晰的外观和结构。论文 §3.3,式 4–7

两条路径在去噪里承担不同的工作。条件视频提供每个目标视角的大致布局,参考特征提供可以查询的细节。可以把参考特征融合写成

$$
T_{\mathrm{ref}} = P_{\mathrm{DINO}}(T_{\mathrm{DINO}}) + P_{\mathrm{VGGT}}(T_{\mathrm{VGGT}}).
$$

设中间某一帧的窗户变形了。对应的待修复 token 会给参考照片的各个图像块分配注意力权重,再汇总这些块的信息。做这个查询时,它也已经通过时空注意力看过相邻帧,因而可以结合窗户随相机移动的趋势修复当前帧。参考特征随去噪过程反复被读取。官方样例的 49 帧是一起处理的序列长度,50 步是对这段序列反复去噪的次数。最后,VAE 解码器把修好的潜变量还原成 RGB 图像。

VGGT 在这里提供的是学习到的几何线索。注意力可以支持跨帧一致的修复,同时仍允许模型在缺少观测的区域生成推测性的纹理或形状。这些生成内容的真实性,需要用实际拍摄的照片核验。

怎样把修复画面变成可以漫游的 3DGS?

扩散得到的是某条轨迹上的修复帧。要在自由视角里看到这些变化,作者将修复帧和各自的相机位姿送回 3DGS,用真实照片和修复帧分别计算光度损失。这个阶段固定扩散模型,只优化当前场景的高斯,并逐步提高生成帧损失的权重。

作者还设计了轨迹采样方式,让路径从真实参考相机附近出发,经过更广的视角,再回到下一张参考照片附近。相机靠近真实参考时,修复有更多可用线索。路径向外延伸时,可以为 3DGS 覆盖更多角度。论文将这两段结合起来,并迭代生成新轨迹上的修复帧。论文 §3.4 与图 3

两项评估对应这两个阶段。直接修复画面时,DL3DV‑Res 的 PSNR 从 14.12 提高到 16.72 dB。回训后的模型在 DL3DV‑Benchmark 的 3 张输入设置下,新视角 PSNR 从 13.72 提高到 16.21 dB。在 9 张输入设置下,PSNR 仍然提高,LPIPS 则从 0.293 变为 0.307。画面质量的变化会随输入密度和评价指标而异。论文表 1、表 2

从优化角度看,场景训练包含两类相机和相应的图像目标:

$$
\mathcal{L}=\mathcal{L}{\mathrm{photo}}+\lambda\,\mathcal{L}{\mathrm{fixed}}.
$$

在真实相机位置,渲染结果与实拍照片比较。在新相机位置,渲染结果与扩散修复帧比较。两项都使用 L1 和 SSIM 光度损失。真实照片持续为场景提供观测约束,生成帧则为原训练图之间的过渡视角补充监督。轨迹如果离真实照片太远,补充的视角更多,伪标签偏离实际场景的机会也更大。这就是论文把参考视角附近的插值和更广的相机路径组合起来的原因。论文 §3.4

南楼复现:窗框更规整,烟囱也变了

南楼实验从已有的 MetalSplat 3DGS 出发。选两张真实训练照片作为首尾参考,在它们之间插值生成 47 个相机视角。作者发布的 GSFixer 权重在 RTX 4070 Ti 上完成了 49 帧、720 × 480、50 步的修复,使用 CPU 卸载,去噪约耗时 19 分钟。随后将真实照片和中间 47 张修复帧混合,单轮回训 600 步,导出可自由浏览的 3DGS。回训每四步安排一次修复帧更新,该步损失乘以 0.25,其余三步使用真实训练照片。这是南楼实验采用的固定权重,论文的场景优化则会逐步提高生成监督的权重。

南楼三个视角的修复对照。左侧为原始 3DGS 渲染,右侧为 GSFixer 输出。

图中右侧立面的窗框和屋檐更规整,部分砖纹变软,右侧烟囱也出现了明显变化。图里展示的是直接修复后的帧。回训得到的 3DGS 是另一个结果,需要从其他相机重新渲染,才能检验视觉改善是否传递到了场景模型。南楼这轮只验证了单条轨迹和单轮回训,砖缝与烟囱是否更接近实物还未经留出照片验证。官方代码与权重入口

发表评论