作者:Ben Poole, Ajay Jain, Jonathan T. Barron, Ben Mildenhall

单位:Google Research, UC Berkeley

会议:ICLR 2023 notable top 5%,2022 Arxiv

链接:arXiv, Project, OpenReview

研究动机

DreamFusion-0

DreamFusion 解决的是一个很直接但当时非常困难的问题:能不能只输入一句自然语言,就生成一个可以从任意角度观察、重新打光、导出到 3D 环境中的物体或场景?

这个问题的核心矛盾在于,2D 文本到图像扩散模型已经能从海量图文数据中学到强大的视觉先验,但 3D 生成没有同等规模的文本-3D 标注数据。直接训练 3D 扩散模型需要大量 3D asset、多视角数据和高效的 3D 去噪结构,这些条件在论文写作时都不成熟。

因此论文换了一个角度:不重新训练一个 3D 生成模型,而是把已经训练好的 2D 文生图扩散模型当作一个可微的“审美与语义先验”,反复渲染一个随机初始化的 3D 表示,再用扩散模型告诉这个渲染图应该往哪个方向改。这样,3D 结构本身由 NeRF 表示承载,语言和视觉合理性由 2D Imagen 提供。

这篇文章的重要性不只在于生成效果,而在于它提出了一个后来被大量 text-to-3D / text-to-4D / avatar generation 工作复用的技术范式:

用 2D 扩散模型的 score 作为优化信号,在任意可微参数空间中搜索一个能被扩散先验认可的样本。

这个范式后来常被简称为 SDS,也就是 Score Distillation Sampling。

核心方法

DreamFusion-1

1. 从像素采样转向参数空间优化

普通扩散采样是在像素空间中从噪声逐步去噪,目标是得到一张图像。DreamFusion 的关键转折是:如果有一个可微生成器 $x=g(\theta)$,那么不一定要直接采样图像 $x$,也可以优化参数 $\theta$,让 $g(\theta)$ 生成的图像落到扩散模型认为高概率的位置。

扩散前向加噪可以写成:

其中 $x$ 是当前渲染图,$z_t$ 是加噪后的图像,$t$ 是噪声时间步,$\alpha_t$ 和 $\sigma_t$ 控制信号与噪声比例。冻结的文本到图像扩散模型会预测噪声:

其中 $y$ 是文本条件。直觉上,如果当前渲染图与文本不匹配,扩散模型预测出的噪声方向会和真实注入噪声 $\epsilon$ 存在偏差;这个偏差就可以作为“把图像推向文本匹配区域”的梯度信号。

DreamFusion 使用的 SDS 梯度可以概括为:

这里 $w(t)$ 是时间步权重,$\frac{\partial x}{\partial \theta}$ 来自可微渲染器。论文强调一个实用处理:更新参数时不反传扩散 U-Net 的完整 Jacobian,而是把扩散模型当作提供方向的冻结先验。这让方法更像 DeepDream:不是训练 Imagen,而是利用 Imagen 的梯度形状去“雕刻”另一个参数化对象。

2. DreamFusion 管线:Imagen 提供先验,NeRF 承载 3D

DreamFusion-2

DreamFusion 对每个文本 prompt 从头优化一个随机初始化的 NeRF-like 模型。这个 NeRF MLP 输出两类量:体密度 $\tau$ 和反照率 $\rho$。体渲染得到彩色图、深度、法线和纹理去除后的 shading 结果。

每次迭代包含四步:

  1. 随机采样相机位姿和光照位置;
  2. 从该视角渲染当前 NeRF,分支包括 albedo、shaded render 和 textureless render;
  3. 对渲染图加噪,送入冻结的 64x64 Imagen base model,计算 SDS 梯度;
  4. 将梯度通过可微渲染过程回传到 NeRF 参数。

这个设计的关键不是简单地“让一张图像像 prompt”,而是让同一个 3D 参数化对象在很多随机视角下都能被 2D 扩散模型接受。多视角随机渲染提供了几何一致性的压力,SDS 提供了语义和外观方向。

3. 为什么需要 view-dependent prompt 和几何正则

纯 SDS 很容易找到投机解。比如,模型可以把目标外观画在一张近似平面上,使某个视角看起来合理,但从侧面看就失去 3D 结构。论文为了避免这种局部最优,引入了几类辅助设计:

  1. 大范围相机采样。 每轮随机采样方位角、仰角、距离和焦距,让模型不能只服务于一个固定视角。
  2. 视角相关文本条件。 当相机从前、侧、后或高处看物体时,在 prompt 中追加对应视角描述,减少扩散模型对“典型正面图”的偏置。
  3. 光照和 textureless render。 如果只优化彩色 albedo,模型可能用纹理伪装几何;加入 Lambertian shading 和无纹理渲染后,密度场的法线与表面形状会受到更强约束。
  4. orientation / opacity 正则。 orientation loss 鼓励法线朝向合理,opacity 正则避免密度场把空间填满。

这也是 DreamFusion 比早期 CLIP-guided text-to-3D 方法更有价值的地方:它不是只换了一个更强的语义损失,而是围绕 3D 优化的病态性设计了一整套采样、渲染和正则策略。

4. 文本迭代与可编辑性

DreamFusion-3

论文展示了通过逐步修改 prompt 来细化 3D 场景的过程。这个图传达的不是“模型有交互界面”,而是 DreamFusion 的优化目标天然支持 prompt-level control:每个 prompt 会重新优化一个 3D 表示,用户可以通过语言改变对象类别、材质、动作或环境属性。

不过这也暴露了一个代价:它不是一次前馈生成,而是每个文本都要做较长时间的 per-prompt optimization。因此 DreamFusion 更像高质量 3D 资产生成的离线优化流程,而不是实时交互式生成器。

数据集

DreamFusion 本身不使用 3D 训练数据,也不使用多视角监督数据。论文的核心设定是:只依赖一个已经训练好的 2D text-to-image diffusion prior,再对每个 prompt 从随机初始化的 NeRF 开始优化。

实验评估主要使用 Dream Fields 中的 object-centric COCO validation subset,共 153 个文本 prompt。评价指标是 CLIP R-Precision:给定渲染图,检测 CLIP 能否从候选 captions 中检索回正确文本。论文同时在彩色渲染和 textureless geometry 渲染上测 R-Precision,因为彩色图的分数可能被“贴纹理”欺骗,而 textureless 渲染更能暴露几何质量。

需要注意的是,论文使用的 Imagen 预训练数据并不等同于 DreamFusion 自己的数据集。DreamFusion 继承了 Imagen 的图文先验,也继承了其中可能存在的数据偏差、内容偏差和安全风险。论文在 Ethics Statement 中明确指出,3D 生成模型可能放大 2D 生成模型已有的偏见和滥用问题。

算力

论文给出的主要训练/优化设置如下:

  1. 使用预训练的 64x64 Imagen base text-to-image model,不使用超分辨率级联;
  2. 每个 prompt 优化一个 NeRF-like 场景;
  3. 每次迭代每个设备渲染一个视角并调用一次 diffusion U-Net;
  4. 使用 TPUv4 machine with 4 chips;
  5. 优化 15000 iterations,约 1.5 小时;
  6. 渲染 NeRF 和评估 diffusion model 的时间大致各占一半;
  7. 优化器使用 Distributed Shampoo;
  8. classifier-free guidance 设置为 $\omega=100$,明显高于常见图像采样中的 guidance 范围。

所以 DreamFusion 的“无需 3D 数据”并不等于“便宜”。它把数据成本转移成了推理/优化成本:每个新对象都需要一次较重的 per-prompt 3D 优化。

实验结果

DreamFusion-4

Table 1 的主要结论是:DreamFusion 在彩色渲染和 textureless geometry 两类指标上都显著优于早期 text-to-3D baseline。论文报告 DreamFusion 在 CLIP L/14 上的 color R-Precision 为 79.7,geometry R-Precision 为 58.5;相比之下,Dream Fields reimplementation 的 geometry 分数只有 1.4。

这个差距说明一件事:只让渲染图在语义上像文本还不够,必须显式处理几何质量。DreamFusion 的 textureless render、视角采样和 shading 约束,正是为了解决“彩色图看起来像,但几何是假的”这个问题。

DreamFusion-5

定性对比进一步展示了这种差异。Dream Fields 和 CLIP-Mesh 可以生成与文本有一定关系的形状或贴图,但更容易出现粗糙、破碎、几何不稳定的问题。DreamFusion 的结果更接近完整物体,并能保留可观察的体积结构。

不过这里也要谨慎:CLIP R-Precision 并不是 3D 几何的真实标准答案。零样本文本到 3D 没有唯一 ground truth,论文只能用文本-渲染一致性作为代理指标。这个指标能说明“语义是否对得上”,但不能完全说明 mesh 可用性、拓扑质量、物理合理性或多视角细节质量。

DreamFusion-6

消融实验是论文里最有信息量的部分之一。它说明 DreamFusion 的几何质量不是 SDS 单独带来的,而是多个工程选择叠加出来的:

  1. 只看 albedo 的 R-Precision 可能很高,但会掩盖几何问题;
  2. 加入更大范围视角采样后,模型更难用单一视角投机;
  3. view-dependent prompt 改善不同观察方向下的语义一致性;
  4. 光照和 textureless render 让模型必须解释表面形状,而不是只画贴图;
  5. 最终 textureless geometry 指标随这些模块逐步提升。

这组消融也指出了 DreamFusion 的一个核心经验:text-to-3D 的失败往往不是“语义不知道”,而是“2D 先验太容易被错误几何欺骗”。因此几何约束与渲染策略和扩散先验同等重要。

优势与不足

优势

  1. 把 2D 扩散模型迁移到 3D 的思路非常干净。 DreamFusion 不需要 3D 训练集,也不修改 Imagen,只通过 SDS 把 2D prior 变成参数空间的优化信号。

  2. SDS 的复用价值很高。 只要对象能可微渲染或可微映射到图像空间,就可以尝试用扩散 score 优化参数。这使 SDS 后来成为 3D/4D/人体/场景生成中的通用工具。

  3. 论文没有只停留在 loss,而是解决了 3D 优化的局部最优问题。 随机视角、view-dependent prompt、textureless render、orientation loss 和 opacity regularization 共同构成了可用系统。

  4. 结果具备资产属性。 生成的 NeRF 可以从任意角度观察、重新打光,也可以通过 marching cubes 导出 mesh,这比单张图生成更接近 3D 内容生产需求。

不足

  1. 速度和成本高。 每个 prompt 需要约 15000 次迭代和 1.5 小时 TPUv4 优化,不适合实时或大规模低成本生成。

  2. 分辨率受 64x64 Imagen base 限制。 论文明确指出生成模型缺少细节;更高分辨率扩散模型和更大的 NeRF 可能改善细节,但会进一步增加计算成本。

  3. SDS 本身有 mode-seeking 倾向。 论文指出 SDS 相比 ancestral sampling 更容易产生过饱和、过平滑和低多样性结果,不同随机种子之间差异有限。

  4. 3D lifting 本质上病态。 从 2D prior 推断 3D 世界存在多解,模型仍可能陷入把内容“画”在平面上的局部最优。DreamFusion 的正则只能缓解,不能彻底消除这一歧义。

  5. 评估仍然不充分。 CLIP R-Precision 能评估文本一致性,但不能完全评价真实 3D 可用性、拓扑、细节、物理尺度和编辑稳定性。

  6. 继承 Imagen 的偏差与安全风险。 由于 2D prior 来自 Imagen,DreamFusion 也会继承其训练数据和文本编码器中的偏见、限制与潜在滥用风险。

记忆点

  1. SDS 的本质是把扩散模型从“采样器”变成“可微优化先验”。 它不直接生成 3D,而是告诉当前渲染图应该如何移动到文本条件下的高概率区域。

  2. DreamFusion 的关键对象不是图像,而是参数 $\theta$。 图像只是每次迭代从 NeRF 渲染出来、用于询问 Imagen 的中间观测。

  3. text-to-3D 的核心难点是几何投机。 只优化彩色图会得到看起来像、侧面崩的结果;textureless render 和 shading 约束是避免投机的重要技巧。

  4. 无 3D 数据不等于无先验。 DreamFusion 使用的是强 2D 图文先验,只是把 3D 标注需求换成了扩散 prior 与 per-prompt optimization。

  5. DreamFusion 是一类范式的起点。 后续很多工作都在回答同一个问题:如何让 SDS 更稳定、更快、更高分辨率,并用更强的 3D 表示或多视图扩散先验减少 Janus、过平滑和几何歧义。

一句话总结:DreamFusion 最值得记住的不是“第一批效果不错的文生 3D 图”,而是它把冻结的 2D diffusion model 变成了 3D 参数优化的通用监督信号;它证明了 2D 生成先验可以跨模态迁移,但也清楚暴露了速度、细节、多样性和几何歧义这些后续研究必须继续解决的问题。