SinMPI: Novel View Synthesis from a Single Image with Expanded Multiplane Images
Peking University
一句话总结
SinMPI 用一张扩展视角范围的可学习多平面图像(MPI)作为三维场景表示,结合 Stable Diffusion 外扩画面内容、深度感知的 warp-inpaint 生成伪多视角监督,从单张图片合成大视角范围、三维一致的高质量新视角。
研究背景
- 领域现状:单图新视角合成希望从一张图恢复无限个一致视角。NeRF 类方法(如 SinNeRF)能渲染高质量图像,但连续辐射场需要充足多视角输入,单图优化困难,结果模糊、闪烁;而 MPI(多平面图像)类方法用视锥内的一组平行平面表示场景,效率高、计算量小,AdaMPI 已在真实场景单图 NVS 上达到 SOTA。
- 核心痛点:传统 MPI 的建模空间被局限在原始相机视锥内,相机稍作旋转/平移就超出视野,边界像素外扩会产生不自然纹理;同时 MPI 渲染常伴随深度离散化伪影与重复纹理伪影。此外,用卷积生成器一次性预测被遮挡几何的做法,质量受训练数据强约束,难以泛化到新场景(如物体中心的合成场景)。
- 本文 idea:把 MPI 从”预测”改为”可学习参数直接优化”,并用更大的平面在更大的视锥里表示场景,从而显著扩展视角范围;被遮挡内容不靠一次性预测,而是用深度感知的 warp+inpaint 生成伪多视角数据来监督体渲染优化。
方法
整体框架由三个部分串联:连续外扩模块(continuous outpainter)先把参考图向画面外延展补全场景,深度感知修复模块(depth-aware inpainter)推断被遮挡的几何与内容并生成伪多视角数据,最后把所有内容投影进一个扩展的多平面图像并通过体渲染优化。
flowchart LR
A["单张参考图"] --> B["连续外扩<br/>Stable Diffusion + 深度对齐"]
B --> C["深度感知 warp + inpaint<br/>生成伪多视角数据"]
C --> D["扩展 MPI 初始化<br/>按深度分层投影"]
D --> E["体渲染 + 可训练双边滤波"]
E --> F["伪多视角监督下优化 MPI"]
F --> G["大视角范围三维一致新视角"]
-
连续外扩与深度对齐:用 Stable Diffusion 的 inpainting 模型对参考图做画面外延展,扩大场景内容。为保持深度一致,用 DPT 在外扩前后分别估计深度,并对外扩后的单目深度做线性缩放与平移对齐,使原始区域深度范围不变,得到扩展图 \(I_{exp}\) 及其深度 \(D_{exp}\)。
-
深度感知修复生成伪多视角:把参考视的像素连同深度当作空间点云,用深度 warp 把原图投到新视点:\(p_j = \hat{K}T(K^{-1}D_i p_i)\),再用画家算法选取离相机最近的点渲染。warp 后出现的空洞用一个基于 Edge-connect 的深度感知修复器补全(先修边、再修深度、最后修图像),并在单张输入上做逐场景微调。微调时把图 warp 到新视点又 warp 回来,用重建损失 \(L_{rec} = \lVert I^{WB}_{inp} - I_{exp} \rVert_1\)、深度损失、以及 VGG 感知损失与 DINO-ViT 特征损失约束一致性,约 100 次迭代即可平衡欠拟合与过拟合。
-
扩展 MPI 表示与渲染:把内容按深度分割投影到均匀分布的多个平面上,原始视点的点作为真值被冻结。MPI 存 \(P \times H \times W \times 4\) 参数(平面数、平面尺寸、每点的 RGB 与密度)。渲染用体渲染累积:\(I = \sum_{i=1}^{N} T_i (1 - \exp(-\sigma_{d_i}\delta_{d_i})) c_{d_i}\),其中 \(T_i\) 为累积透射率。为扩展视角,用更大的平面配合更大的视锥角 \(\theta\),关系为 \(\frac{w \cdot a}{2f} = \tan(\frac{\theta}{2})\),测试时只对相机视野内的平面做体渲染。
-
局部光线聚合与优化:伪视角图偏锐利、易有噪点和闪烁,需要 patch 级监督。方法在渲染器后接一个可训练的双边滤波层,按邻域像素的强度差与位置差加权聚合局部光线(高斯核 \(G_{\delta_s}\) 设为可训练卷积权重),平滑图像又不损失质量。最终以像素损失加特征损失优化 MPI:\(L_{MPI} = \lambda_{rec}L_{rec} + \lambda_{per}L_{per} + \lambda_{vit}L_{vit}\)。因为直接优化 MPI 而非训练大规模预测器,每条光线独立优化,收敛更快。
实验结果
在真实前向场景的 LLFF 数据集上与 NeRF 类与 MPI 类方法对比(下表取 Room 与 Flower 两个子集)。SinMPI 在 Room 子集上 SSIM/LPIPS 全面领先,纹理质量优于 AdaMPI;SinNeRF 的 PSNR 更高主要因其模糊/重复纹理对 PSNR 指标有利,而 SinMPI 输出更锐利、更贴合真值。Flower 子集因含约 19% 越界像素,纯 MPI 方法(无外扩时)无法生成越界内容,指标受影响。
| 方法 | Room SSIM↑ | Room PSNR↑ | Room LPIPS↓ | Flower SSIM↑ | Flower PSNR↑ | Flower LPIPS↓ |
|---|---|---|---|---|---|---|
| DS-NeRF | 0.65 | 17.44 | 0.40 | 0.41 | 16.92 | 0.39 |
| DietNeRF | 0.49 | 15.77 | 0.75 | 0.20 | 13.35 | 0.75 |
| PixelNeRF | 0.41 | 12.88 | 0.76 | 0.19 | 13.20 | 0.63 |
| SinNeRF | 0.67 | 18.85 | 0.38 | 0.41 | 17.20 | 0.37 |
| AdaMPI | 0.62 | 13.45 | 0.51 | 0.32 | 12.70 | 0.53 |
| 本文 | 0.70 | 17.20 | 0.34 | 0.38 | 15.57 | 0.38 |
此外在 NeRF 合成数据集、DTU 数据集上同样评测,并在 COCO、ADE20K 上做定性对比(这两者无多视角真值)。方法还展示了可结合图像编辑、用不同外扩结果改变场景周边等应用。
亮点与局限
- 亮点:
- 用可学习、可优化的扩展 MPI 突破了传统 MPI 局限于原始视锥的建模空间,支持更大范围相机移动与更大旋转角。
- 把被遮挡内容从”一次性预测”改为”伪多视角监督下体渲染优化”,缓解了深度离散化与重复纹理伪影,纹理质量优于 AdaMPI。
- 直接优化 MPI 参数而非训练大预测器,逐场景优化、每条光线独立、收敛快;扩展策略可迁移到任意 MPI 方法。
- 局限:
- 场景扩展管线计算成本高,目前无法与其他方法整合到同分辨率下合成新视角。
- 使用外扩图作输入虽更逼真,但因单目深度重估的尺度失配与外扩区域随机性,与真值的匹配分数反而下降。
- MPI 是漫反射体表示,不建模视角相关效果(如高光),这方面 NeRF 的潜力仍待探索。
延伸思考
- 方法把”生成式外扩(Stable Diffusion)+ 深度感知几何修复 + 体渲染优化的显式表示”三者拼接,本质是用生成先验补内容、用显式 MPI 保三维一致性,规避了纯生成方法的闪烁问题;这种”生成补全 + 显式表示优化”的思路在如今 3D Gaussian Splatting 时代同样适用,可思考把扩展 MPI 换成可优化的高斯表示能否兼得质量与效率。
- 定量分数(尤其 PSNR)与视觉质量脱节的现象值得注意:SinNeRF 靠模糊换高 PSNR,说明单图 NVS 的评测更应结合 LPIPS 与感知指标乃至视频层面的三维一致性评估。
- 外扩带来的深度尺度失配是关键瓶颈,若能让外扩内容与原场景在几何尺度上自洽(而非事后线性对齐),越界区域的合成质量与评测一致性都有望提升。