文生图 · 扩散模型 · 多模态模型

DALL·E 2(unCLIP):用 CLIP 图像潜变量生成图像

DALL·E 2 在论文里叫 unCLIP:先用 prior 把文本变成 CLIP 图像嵌入,再用扩散解码器渲染成图——几乎不损失真实感和文本匹配度,就换来了更高的多样性。

DALL·E 2(unCLIP):用 CLIP 图像潜变量生成图像

快速答案

DALL·E 2 的架构在论文里叫 unCLIP,分两阶段生成图像:prior 把文本说明变成一个 CLIP 图像嵌入,扩散解码器再把这个嵌入渲染成真正的图像。最核心的结论是:先显式生成图像嵌入,可以在几乎不损失照片真实感和文本匹配度的前提下提升多样性,而不是被迫在两者之间二选一。同一套设计还顺带白送了图像变体和零样本、语言引导的编辑,因为它们都在 CLIP 共享的「文本-图像」空间里完成。

从 CLIP 图像嵌入反向生成图像

核心的赌注是:不要把文本直接映射到像素。CLIP 已经学到了一个联合嵌入空间,图像和它的文字说明在里面彼此靠近,同时编码了语义和风格。于是 OpenAI 把 CLIP「反过来用」:不是把图像编码成嵌入,而是从嵌入生成图像。这正是 unCLIP 这个名字的由来。

好处在于,这个嵌入是一个紧凑、语义明确的目标。它编码了「这张图讲的是什么」和整体观感,却故意丢掉了「非关键细节」。这个信息差不是缺陷,而是特性——固定住嵌入、重新采样其余部分,就能得到同一场景的多个合理变体。

两阶段:prior 加解码器

第一阶段是 prior:给定文本说明(及其 CLIP 文本嵌入),生成一个 CLIP 图像嵌入。作者试了两种实现——自回归和扩散——并报告扩散 prior 计算上更高效、样本质量也更好。这是一个具体且略反直觉的结果:在这一阶段,扩散在成本和质量上同时胜出,所以 DALL·E 2 最终采用扩散 prior。

第二阶段是解码器:一个以 CLIP 图像嵌入为条件的扩散模型,负责渲染出最终图像。由于解码器只看一个刻意丢掉了细节的嵌入,对同一个嵌入多次运行解码器,就会得到语义一致但细节不同的图像——这正是「变体」行为的来源。

那为什么要单独留一个 prior,而不是把文本嵌入直接喂给解码器?因为即便在 CLIP 的共享空间里,文本嵌入和图像嵌入也并不等同,论文显示正是这个显式的 prior 解锁了多样性的提升。我的判断是:prior 才是真正承担生成主力的部分,解码器更像一个学出来的、带随机性的渲染器。

关键结果

  • 显式生成图像嵌入可以在几乎不损失照片真实感和文本匹配度的前提下提升多样性——这是全文的核心主张,也是两阶段设计成立的理由。
  • 对 prior 而言,扩散版本在效率和样本质量上都优于自回归版本,所以正式模型用的是扩散 prior。
  • 解码器能生成给定图像的变体,保留其语义和风格,只改变嵌入里没编码的细节。
  • 借助 CLIP 的联合空间,模型支持零样本、语言引导的图像编辑——靠文本驱动,无需为编辑任务单独训练。

DALL·E 2 为何重要

DALL·E 2 帮助定义了今天人们对文生图产品的预期:输入一句话,拿到高分辨率图像,继续要变体,再用语言调整。在架构层面,它留下的持久想法是把一个表征模型(CLIP)和一个生成模型(扩散)当作可组合的阶段,而不是两条彼此分离的研究线——即「以学到的语义嵌入为条件去生成」。话说回来,扩散解码器这一脉后来部分被潜空间扩散(Stable Diffusion)超越,后者推动了开放权重和更低成本;unCLIP 那种「prior 加解码器」的具体拆法,并没有成为开源社区的主流方案。

局限与存疑

CLIP 嵌入天生有损,代价集中体现在绑定与构图上:精确的空间关系、属性与物体的绑定(「蓝色球体上的红色立方体」)、稳定渲染文字,都是这类模型的薄弱环节。嵌入保留了大意、丢掉了细节,因此任何依赖被丢掉细节的需求都很脆弱。

和其他用网络规模图文数据训练的生成器一样,它会复现数据偏见、产生伪影。两阶段设计还引出了论文自己提出的一个真问题:控制权应该有多少放在提示词里、多少放在潜变量嵌入里、多少放在显式编辑界面里——论文证明了三者都可行,却没有给出各自最优边界的答案。

常见问题

unCLIP 和 DALL·E 2 是什么关系?

unCLIP 是这篇论文里描述的架构名称,DALL·E 2 是 OpenAI 基于它做出的产品。叫「unCLIP」是因为它把 CLIP 反过来用——从 CLIP 图像嵌入生成图像,而不是把图像编码成嵌入。

DALL·E 2 为什么要用 prior,而不直接把文本喂给解码器?

prior 负责把文本说明映射成 CLIP 图像嵌入,论文显示正是这一显式步骤带来了「几乎不损失真实感和文本匹配度」的多样性提升;跳过它就失去了这个好处。

DALL·E 2 的 prior 是自回归还是扩散?

论文两种都试了;扩散 prior 计算更高效、样本质量更好,所以采用的是扩散版本。

DALL·E 2 是怎么生成图像变体的?

它固定住 CLIP 图像嵌入,然后重新运行扩散解码器。由于嵌入丢掉了非关键细节,每次运行都会保留语义和风格,只改变其余部分。

DALL·E 2 和 Stable Diffusion 是一回事吗?

不是。两者都是基于扩散的文生图系统,但 Stable Diffusion 用的是潜空间扩散且开放权重;DALL·E 2 的 unCLIP 架构是让扩散解码器以一个由独立 prior 产生的 CLIP 图像嵌入为条件。

一句话:DALL·E 2 把 CLIP 反过来用——先生成嵌入,再渲染成图——在不牺牲真实感的情况下换来了多样性。原文见 arXiv:2204.06125