A Lesson in Splats: Teacher-Guided Diffusion for 3D Gaussian Splats Generation with 2D Supervision¶
会议: ICCV 2025
arXiv: 2412.00623
代码: https://lesson-in-splats.github.io/ (项目页)
领域: 3D视觉 / 扩散模型 / 3DGS
关键词: 3D Gaussian Splatting, 扩散模型, 2D监督, 单视图3D重建, 教师引导
一句话总结¶
提出一种用2D图像监督训练3D扩散模型的框架:利用预训练的确定性3D重建模型作为"噪声教师"生成3D噪声样本,通过多步去噪策略和渲染损失实现跨模态(3D去噪+2D监督)训练,在用更小模型的情况下超越教师模型0.5-0.85 PSNR。
背景与动机¶
现有痛点¶
现有痛点:领域现状:3D重建中,确定性前馈模型(如Splatter Image、Flash3D)受限于2D到3D映射的歧义性,预测往往模糊;而3D扩散模型虽然能建模分布多样性,但传统训练方式要求去噪和监督在同一模态(即需要大量3D数据),这在现实中极度稀缺。如何在只有2D图像的情况下训练3D扩散模型,是一个未被充分探索的关键问题。
核心矛盾¶
核心矛盾:本文目标:如何在没有3D ground truth的情况下,训练一个在3D空间操作的扩散模型?核心挑战在于标准扩散训练要求噪声样本和监督信号在同一模态,而这里去噪在3D、监督只有2D图像。
方法详解¶
整体框架¶
输入:单张图像 → 预训练确定性模型(教师)生成初始3DGS预测 → 加噪后输入3D扩散去噪器 → 去噪后的3DGS通过可微渲染得到2D图像 → 与GT图像计算损失。两阶段训练:Stage 1 Bootstrapping + Stage 2 Multi-step Denoising Fine-tuning。
关键设计¶
- 噪声教师解耦策略: 将噪声样本来源(教师模型的3D预测)和监督信号(2D图像)解耦。关键洞察来自SDEdit——在足够大的噪声水平t≥t*时,教师模型产生的噪声样本与真实3D数据加噪后的分布近似重叠。因此可以用教师的不完美3D预测作为去噪起点。
- 多步去噪训练: 标准单步去噪只能学习大噪声水平(t>t),无法恢复细节。创新地在训练时执行多步DDIM去噪(10步),从t>t逐步去噪到t=0,渲染最终清晰的3D预测并用2D图像监督。梯度通过所有去噪步骤反传,使模型能学习低噪声水平的细粒度去噪。
- 循环一致性正则化: 将去噪结果渲染到目标视角得到图像,再用该图像驱动第二次3D预测,将其渲染回源视角与源图像比较。确保生成的视角不仅外观相似,而且包含足够信息来还原源视角。
损失函数 / 训练策略¶
- Stage 1 (Bootstrapping): L_bootstrap = L_3DGS + L_image + L_cyc,使用教师模型提供的3D预测作为直接监督+渲染损失,快速初始化扩散模型
- Stage 2 (Multi-step fine-tuning): L_mlt-stp + L_cyc,去掉3D监督(教师已是瓶颈),只用渲染损失,允许模型超越教师
- 不同时间步的渲染损失加权λ_t,权重随时间步变化
- t* = 20(总100步),DDIM 10步采样
实验关键数据¶
ShapeNet-SRN (单视图重建)¶
| 数据集 | 指标 | 本文(Medium) | Splatter Image(Large) | 提升 |
|---|---|---|---|---|
| Cars | PSNR | 24.84 | 24.00 | +0.84 |
| Cars | SSIM | 0.93 | 0.92 | +0.01 |
| Cars | LPIPS | 0.077 | 0.078 | -0.001 |
| Chairs | PSNR | 25.21 | 24.43 | +0.78 |
RealEstate10K (新视图合成)¶
| 设置 | 指标 | 本文 | Flash3D | 提升 |
|---|---|---|---|---|
| 5 frames | PSNR | 29.12 | 28.46 | +0.66 |
| 10 frames | PSNR | 26.54 | 25.94 | +0.60 |
| 30 frames | PSNR | 25.40 | 24.93 | +0.47 |
Co3D Hydrant¶
| 指标 | 本文 | Splatter Image | ViewSet Diffusion |
|---|---|---|---|
| PSNR | 22.34 | 21.77 | 21.24 |
| LPIPS | 0.149 | 0.154 | 0.201 |
模型效率¶
| 模型 | 显存(GB) | 参数量(MB) |
|---|---|---|
| 本文(Medium) | 1.15 | 295 |
| Splatter Image(Large) | 1.71 | 646 |
| VisionNeRF | 6.42 | 1390 |
消融实验要点¶
- 去掉教师引导直接用渲染损失训练:PSNR骤降至16.73(vs 24.49),说明教师引导至关重要
- Stage 1仅用渲染损失(无扩散损失):18.82,加上扩散损失:22.61
- Stage 2继续用扩散损失反而被教师限制:23.13 vs 只用渲染损失:24.49
- 循环一致性损失在两个阶段都有提升
- 加权损失 vs 不加权:24.49 vs 22.88,证明时间步加权很重要
- 确定性前馈模型(同架构)仅19.99 PSNR,证明是扩散框架而非架构带来的提升
亮点与洞察 / 我学到了什么¶
- 跨模态扩散训练是可行的: 打破了扩散模型必须在同模态下训练的限制,这个思路可以迁移到其他模态缺乏GT的场景
- "噪声教师"概念巧妙: 不完美的确定性预测在加噪后反而可以成为扩散模型的有效输入,SDEdit的噪声覆盖思想被巧妙利用
- 小模型超越大模型: 只用295MB的中等模型就超越了646MB大模型的教师,说明扩散框架本身的表示能力优于确定性框架
- 多步去噪训练: 在训练时展开多步推理并反传梯度,虽然内存开销大,但通过两阶段策略控制计算成本
局限与展望¶
- 依赖像素对齐的3DGS表示,Gaussian分布集中在可见区域,遮挡区域覆盖不足导致新视角过度平滑
- Stage 2多步去噪的batch size从100降到10,计算成本仍然不低
- 仅验证了3DGS表示,未拓展到其他3D表示(mesh, NeRF等)
- 教师模型的选择影响最终质量的上限
相关工作与启发¶
- vs Splatter Image/Flash3D(确定性模型): 本文用其作为教师,以更小模型超越。确定性模型无法建模多样性,在歧义区域产生模糊;本文通过扩散模型捕获分布
- vs HoloDiffusion: 也是2D监督训练3D扩散,但HoloDiffusion用额外去噪pass来弥合分布差异;本文通过选择适当噪声水平+多步去噪更优雅地解决
- vs ViewsetDiffusion: 在多视角图像上去噪再汇聚到3D,但受限于视角数量和独立加噪导致的不一致;本文直接在3D空间去噪更连贯
与我的研究方向的关联¶
- 跨模态蒸馏的思路(3D操作、2D监督)可能适用于其他缺乏直接监督的任务
- "噪声教师"策略可以推广:任何不完美的预训练模型都可以作为噪声教师来启动扩散训练
评分¶
- 新颖性: ⭐⭐⭐⭐ 跨模态扩散训练的思路新颖,但核心灵感来自SDEdit
- 实验充分度: ⭐⭐⭐⭐ 覆盖合成+真实数据集,充分消融,但缺少更多类别的评估
- 写作质量: ⭐⭐⭐⭐ 逻辑清晰,方法描述详细,两阶段流程解释得当
- 对我的价值: ⭐⭐⭐⭐ 跨模态训练思想有启发,噪声教师概念可迁移