Conference

Repurposing Diffusion Inpainters for Novel View Synthesis

Yash Kant, Aliaksandr Siarohin, Michael Vasilkovsky, Riza Alp Güler, Jian Ren, Sergey Tulyakov, Igor Gilitschenski

University of Toronto; Snap Research

一句话总结

iNVS 把预训练的 2D 图像修复扩散模型改造成单图新视角合成器:先用单目深度把源图可见像素几何地重投到目标视角,再让扩散模型只补齐新出现的区域,从而在生成新内容的同时最大化复用源图像素。

研究背景

  • 领域现状:单图新视角合成长期依赖多视角输入(如 NeRF)或特定类别的 3D 先验(人体、人脸);近年大规模文本到图像扩散模型展现出强大的通用物体先验,Zero-1-to-3 等工作已尝试把 Stable Diffusion 微调用于新视角生成。
  • 核心痛点:这类”从零生成目标视角”的方法忽视了 U-Net 难以生成与源图对齐的输出,容易导致源视角与目标视角内容不一致,可见区域的外观得不到保持;而纯 2D 扩散模型本身缺乏对相机视角的精确控制。
  • 本文 idea:与其从零生成整张目标图,不如把任务拆成”复用 + 修复”——把源图中可见像素通过单目深度反投影到 3D 再投影到目标视角,形成一张部分目标视图,剩下新暴露的区域交给一个专门微调过的修复扩散模型来补全,用几何线索保证一致性。

方法

整体 pipeline:给定单张源图与源、目标相机位姿,先用单目深度估计器把源图像素反投影(unproject)到 3D 世界坐标,再投影(reproject)到目标视角得到”部分目标视图”,同时基于极线几何生成一张标注待修复区域的掩码;把部分目标视图、极线掩码、以及源图的 CLIP 图像嵌入一起送入以 Inpainting Stable Diffusion(ISD)为骨干的模型,去噪生成完整目标视图。

flowchart LR
  A["源图 + 相机位姿"] --> B["单目深度估计"]
  B --> C["反投影到 3D 点云"]
  C --> D["重投影到目标视角"]
  D --> E["部分目标视图 + 极线掩码"]
  F["源图 CLIP 嵌入"] --> G["ISD 修复扩散模型"]
  E --> G
  G --> H["完整目标视图"]

关键设计:

  1. 基于极线几何的平滑修复掩码:单纯把”目标视图里非物体的像素”当作修复区域会导致掩码过大、ISD 难以保持与源图一致。作者利用极线几何——源图某像素对应目标视图中的一条极线,重投影点 \(\boldsymbol{p}_w\) 精确划分该线的可见/遮挡部分。由此生成”极线掩码” \(M_{s \to t}\)。掩码取值不用非黑即白的 0/255,而是按源、目标相机光线夹角线性插值出平滑值(180 度为黑、0 度为白),告诉 ISD 每个点经历了多大视角变化,帮助它忽略/覆盖被翻转的像素。

  2. 用 CLIP 图像嵌入替代文本条件:把 Stable Diffusion 的 CLIP 文本编码器换成图像编码器,用源图的 CLIP 嵌入 \(X_s\) 作条件。由于源图与目标图在 RGB 空间并不对齐,条件通过交叉注意力注入而非通道拼接。核心去噪损失为 \(L_2 = \lVert \epsilon - \text{ISD}(I_t + \epsilon, M_{s \to t}, I_{s \to t}, X_s) \rVert^2\)。

  3. 更严格的边界损失:ISD 原本在真实多样背景上训练,难以生成纯白/纯黑背景,倾向于把物体边界扩大填满掩码。作者引入重加权系数:位于已知区域边界的像素 \(W[\boldsymbol{p}_t]=1\),需要发现物体边界的未知像素 \(W[\boldsymbol{p}_t]=2\),得到重加权损失 \(L_W = \lVert W(\epsilon - \text{ISD}(I_t + \epsilon, M_{s \to t}, I_{s \to t}, X_s)) \rVert^2\),促使模型专注于发现物体形状。

  4. 早期去噪步微调与推理引导:观察到形状边界在去噪早期就被确定、纹理较晚,作者额外在去噪调度前 10% 的噪声区间采样微调 ISD。推理时不从纯噪声开始,而是从部分目标视图 \(I_{s \to t}\) 的带噪版本开始反向去噪,显著减少伪影;同时因单目深度只有未知尺度,作者把投影点重心归零并缩放进立方体,与训练渲染设置对齐。

训练在 Objaverse(约 80 万个 3D 资产、渲染约 1900 万张图)上进行,从 Stable Diffusion v1.5 修复检查点初始化,分去噪、边界损失、早期步三阶段顺序训练,用 96 张 A100 各阶段各训 7 天。

实验结果

在 Google Scanned Objects(GSO)合成数据集上与四个基线的零样本新视角合成对比(mask 表示用真值掩码滤除背景后计算的指标):

方法 PSNR↑ (mask) SSIM↑ (mask) LPIPS↓
Point-E 8.90 0.82 0.25
Shap-E 10.39 0.82 0.29
Zero-1-to-3 14.74 0.84 0.25
Original ISD 15.03 0.49 0.38
iNVS (ours) 18.95 0.80 0.24

iNVS 在 PSNR 上显著领先所有基线,LPIPS 相当或更优,说明其在噪声抑制和感知相似度上表现良好。在 Ray-Traced Multiview(RTMV)与 Common Objects in 3D(CO3D,真实视频)上同样取得最高 PSNR;在 RTMV 上因光照分布外差异导致 SSIM/LPIPS 略逊。作者也指出 SSIM 指标在所有数据集上偏低,主因是单目深度在大视角变化下难以给出一致深度。

亮点与局限

  • 亮点:
    • 把新视角合成重构为”几何复用 + 扩散修复”两步,用几何线索显式保持源图可见区域的外观,缓解了从零生成方法的源-目标不一致问题。
    • 极线几何驱动的平滑掩码把”视角变化量”编码进修复条件,是复用 2D 修复扩散先验的巧妙桥梁。
    • 零样本泛化能力强,在合成与真实三个数据集上均取得有竞争力的结果。
  • 局限:
    • 强依赖单目深度估计器的质量,大视角变化下深度不一致会破坏结构,导致 SSIM 偏低。
    • 尺度未知需要重心归一化/缩放的启发式对齐,稳健性有限。
    • 对极端俯仰视角(如从底部看放在平台上的物体)本质缺信息,难以准确合成。

延伸思考

该工作体现了”最大化复用可见像素、只对新增区域调用生成先验”的思路,与后续把视频扩散模型用于新视角合成、以及”重建可见部分 + 修复隐藏部分”的分解式方法一脉相承。一个自然的追问是:把单目深度换成更强的几何先验(如多视一致的深度或前馈式 3D 表示)能否直接治好 SSIM 短板?此外,把极线掩码的”视角变化量”平滑编码推广到多帧/连续相机轨迹,或许能得到时序更一致的生成结果。