DualDiff3D: Dual Structure-Appearance Diffusion Priors for Reliability-Enhanced 3D Gaussian Splatting
Qian Wang, Yu Wang, Weiqi Li, Xinhua Cheng, Xiandong Meng, Ronggang Wang, Jian Zhang
cs.CV
2026-09-02
修新视角时结构分支盯残缺渲染、外观分支盯参考图,再按置信把修复图喂回3DGS。DL3DV三视角重建PSNR从DIFIX3D的11.36升到12.56,不训练也能比DIFIX再高约0.7 dB。
稀疏视角下,3D Gaussian Splatting 很容易在新视角里长出伪影。后来的工作用扩散模型修这些渲染图,再喂回 3DGS。一类走视频扩散,又慢又贵;一类像 DIFIX3D+ 把新视角和参考图在同一套网络里拼在一起做自注意力。结构应该跟着残缺的新视角走,外观应该跟参考图走,两件事塞进一个网络会打架,参考图离得越远,修出来越糊。作者在 LLFF 上还看到一个反常现象:DIFIX 去掉参考反而比带着参考更好。
北京大学和鹏城实验室把修图拆成双分支 DualDiff,再套进带可靠性控制的重建环 DualDiff3D。
两个去噪 U-Net 都从 SD-Turbo 出发,权重用 DIFIX 初始化。结构分支吃低质量新视角,外观分支吃参考图。结构分支的自注意力改成 Structure-Appearance Attention:Query 只来自结构隐状态,Key 和 Value 来自两边拼接。输入不是高斯噪声,时间步固定在 t=200,相当于低噪声的一步去噪。结构分支的 VAE 解码器加零初始化跳连,并用 LoRA 微调,减轻编解码损失。
即便两个分支都不额外训练,只改成这套注意力,PSNR 也能再涨约0.7 dB。真训练时损失是重建 L2、LPIPS 和 VGG Gram,Gram 权重0.1。DualDiff-s 只看24视角的残缺渲染,DualDiff-m 混3、6、9、24视角。
重建环是 Render-Refine-Optimize。先稀疏视角训30k步,再每2k步修一批新视角、训30k。新视角不是乱采,只在已有相机之间插值并加一点外推,再用像素级置信掩码过滤。置信来自三次独立修复的方差、修复图和原渲染的差异、以及按深度重投影到参考图的误差。训练损失按这个掩码加权,每个 batch 仍保留一部分真图。验证集连续三次不涨就回滚,丢掉这批修复图。
在 DL3DV 留出的10%场景上修图,3视角 PSNR:3DGS 10.70,DIFIX 13.11,DualDiff-m 13.89。24视角 DualDiff-s 到20.57,DIFIX 是19.20,已经低于未修的3DGS 19.42,说明单网络修图在视角变密时会帮倒忙。
重建方面,DL3DV 3视角 DualDiff3D PSNR 12.56,对上 DIFIX3D 11.36和3DGS 10.70;24视角20.49,对上20.17和19.42。LLFF 没参与修图训练,3视角从14.11、15.21到16.34,9视角到21.89。Mip-NeRF360 上3视角15.70,略高于 GSFixer 的15.61和 DIFIX3D 的14.32;6、9视角和 GSFixer 互有胜负,9视角 PSNR 18.45对18.63,LPIPS 0.405对0.420。
LLFF 3视角消融:直接把修复图塞回去是15.43,加上渐进采样和置信加权后到16.34。单次修复 DualDiff 600ms,DIFIX 950ms;整场重建约10分40秒对8分52秒,峰值显存约12.6 GB对9.9 GB。
修新视角时,结构和外观本来就该分开处理。这篇把这个观察做成双分支注意力,不训练也能从 DIFIX 权重里抠出0.7 dB,说明问题首先是接口,其次才是再训。RRO 环用方差和重投影把扩散输出当成不可靠伪标签,这比「修完直接当真图」更接近 3DGS 真正怕的事:几何微偏就会把高斯带跑。
增益是扎实的渐进改进,不是换一套表示。极稀疏时作者自己说还会明显掉。
双 U-Net 把显存和重建时间都抬上去了,论文也说不是为在线重建设计的。极稀疏视角会明显退化,3视角绝对 PSNR 仍偏低。Mip-NeRF360 上并没有处处压过 GSFixer。置信掩码的权重靠网格搜索,换数据集要不要重调,正文没给。点云从随机初始化开始,和从 SfM 点出发的流水线不可直接比。