想从一张图看到这个物体的新视角,但没有 3D 监督。
关键想法:在 Objaverse 渲染上微调 Stable Diffusion,让它以一个相对相机变换(Δ方位、Δ仰角、Δ半径)为条件生成新视角。第一次教会 2D 扩散模型"显式的视角控制"。
相比 SDS"逐资产优化",这是一次前向就出新视角;但每个视角独立生成,彼此不保证 3D 一致。
SDS 慢在"逐资产优化"。这一部换思路:微调一个 2D 扩散模型,让它一次性吐出几张相互一致的视图, 再丢给一个重建后端。一致性靠"视图共享 attention"几乎免费换来(Demo 5)。 从 Zero123 的单视图条件,到 CAT3D 的任意视图重建,主攻 痛点 (c) 一致性。
想从一张图看到这个物体的新视角,但没有 3D 监督。
关键想法:在 Objaverse 渲染上微调 Stable Diffusion,让它以一个相对相机变换(Δ方位、Δ仰角、Δ半径)为条件生成新视角。第一次教会 2D 扩散模型"显式的视角控制"。
相比 SDS"逐资产优化",这是一次前向就出新视角;但每个视角独立生成,彼此不保证 3D 一致。
Zero123-XL(更大的 Objaverse-XL 重训)与 Stable Zero123(质量过滤 + 仰角条件 + 训练提速)只提保真、不改架构。 问题留在了"独立生成 → 不一致"上——下面三节都是在补这个洞。
独立生成各视角 → 互相打架。
关键想法:把 6 张固定视角拼成一张 3×2 的大图,在一次扩散里生成——这些视角共享 SD 自己的 self-attention,一致性"免费"得到。再加 reference attention + 调好的噪声调度。
从"每视角一次扩散"变成"所有视角一次扩散"——这是整条线最便宜也最常用的一致性技巧。
有了一组一致视图,重建就能前馈化:One-2-3-45(2306.16928,跑 Zero123 出多视图 → 一个 cost-volume SparseNeuS 在 ~45s 出 mesh,无 SDS)、 One-2-3-45++(一致多视图 → 多视图条件的原生 3D 扩散,已经在往 Part VI 靠)、 Instant3D(2311.06214,文本→4 视图网格 → transformer LRM 回归 triplane NeRF,~20s——这是通往 Part V 的桥)。
统一的招数:让视图之间共享 attention,使网络把它们当成一个联合样本,而不是 N 个独立样本。具体有几味:
共享 self-attention 还不够准,且分辨率一高 attention 就爆。
关键想法:SyncDreamer 用3D 特征体积每步同步;Wonder3D 同时生成 RGB + 法线(跨域 attention),法线融合直出 mesh;Era3D 用行注意力把极线先验做便宜(省 12× 算力),上到 512² 且支持任意相机内参。
把"拼接 attention"升级成带几何结构的 attention——更锐、更高分辨率、几何更对。
既然视频模型天生有时间一致性,那"绕物体一圈"就是一段视频。SV3D(2403.12008, 把 Stable Video Diffusion 改成可控环绕视频)、V3D(视频模型出几百帧,密集视图喂重建)、 IM-3D(2402.08682,视频生成 + 3DGS 重建的迭代循环,2D 评估次数少 10–100×)。 密集的帧 → 更少 floater、更稳的重建。这是对"少量固定视图覆盖太稀疏"的回应。
真实场景重建需要任意数量的输入/目标视图,不止 4–6 张固定视角。
关键想法:一个多视图扩散模型吃任意数量输入视图、生成大量 3D 一致的目标视图(高效并行采样),再喂一个稳健的 NeRF/3DGS 重建。整个场景 ~1 分钟。
把"生成几张固定视图"推广到"按需生成任意多视图再重建",是这条线在场景尺度上的集大成。
快:生成一组一致视图是一次前向扩散(秒级),重建也前馈,比逐资产 SDS 优化快几个数量级,多样性更好,Janus 从结构上避免。 不够:2D 扩散只近似满足 3D 几何,残余的视图不一致 → floater、鬼影、糊掉的背面(最少被看到的背面约束最弱)。 几张固定视图覆盖稀疏,重建只能对不一致的像素求平均 → 糊。这正是视频先验(更密)和 CAT3D(更多视图)要补的,也是原生 3D 扩散干脆绕开 2D→3D 一致性鸿沟的动机。