图是 Google 使用扩散模型生成图像的可视化说明。
扩散模型与其他类别的生成模型的比较。
首先,作者训练了一个 3.5B 参数扩散模型,该模型使用文本编码器以自然语言描述为条件。接下来,他们比较了两种将扩散模型引导到文本 prompt 的技术:CLIP 引导和无分类器引导(后者能产生更好的结果)。
分类器引导允许扩散模型以分类器的标签为条件,并且来自分类器的梯度用于引导样本朝向标签。
无分类器引导不需要训练单独的分类器模型。这只是一种引导形式,在有标签和没有标签的扩散模型的预测之间进行插值。
正如作者所说,无分类引导有两个吸引人的特性。首先,它允许单个模型在引导过程中利用自己的知识,而不是依赖于单独(有时更小的)分类模型的知识。其次,它简化了对难以用分类器预测的信息(例如文本)进行调节时的引导。
在 CLIP 引导下,分类器被替换为 CLIP 模型。它使用图像的点积和相对于图像的标题编码的梯度。
在分类器和 CLIP 引导中,我们必须在噪声图像上训练 CLIP,以便在反向扩散过程中获得正确的梯度。作者使用了经过明确训练具有噪声感知能力的 CLIP 模型,这些模型被称为噪声 CLIP 模型。尚未在噪声图像上训练的公共 CLIP 模型仍可用于引导扩散模型,但噪声 CLIP 引导对这种方法表现良好。
文本条件扩散模型是一种增强的 ADM 模型架构,它基于噪声图像 xₜ 和相应的文本标题 c 预测下一个扩散步骤的图像。
视觉部分是修改后的 U-Net 架构。U-Net 模型使用一堆残差层和下采样卷积,然后是一堆带有上采样卷积的残差层,使用残差连接(skip connection)连接具有相同空间大小的层。
原始的 U-Net 架构。图片来自原论文。
GLIDE 对原始 U-Net 架构的宽度、深度等方面有不同的修改,在 8×8、16×16 和 32×32 分辨率下添加了具有多个注意力头的全局注意力层。此外,还将时间步嵌入的投影添加到每个残差块中。
对于分类器引导模型,分类器架构是 U-Net 模型的下采样主干网络,在 8×8 层有一个注意力池以生成最终输出。
文本通过 transformer 模型被编码成 K 个(最大注意力跨度尚不清楚)tokens 的序列。
transformer 的输出有两种使用方式:首先,使用最终的 token 嵌入替代 ADM 模型中的类嵌入;其次,token 嵌入的最后一层(K 个特征向量的序列)分别投影到整个 ADM 模型中每个注意力层的维度,然后连接到每一层的注意力上下文。
文本 transformer 有 24 个宽度为 2048 的残差块,产生大约 1.2B 的参数。为 64×64 分辨率训练的模型的视觉部分由 2.3B 个参数组成。除了 3.5B 参数的文本条件扩散模型,作者还训练了另一个 1.5B 参数的文本条件上采样扩散模型,将分辨率提高到 256×256(这个想法在 DALL·E 中也会用到)。
上采样模型以与基本模型相同的方式以文本为条件,但使用宽度为 1024 而不是 2048 的较小文本编码器。对于 CLIP 引导,他们还训练了带噪声的 64×64 ViT-L CLIP 模型。
GLIDE 在与 DALL·E 相同的数据集上进行训练,总的训练计算量大致等于用于训练 DALL·E 的计算量。
GLIDE 在所有设置中都是最优,即使设置允许 DALL·E 使用更多的测试时间计算来得到优越的表现,同时降低 GLIDE 样本质量(通过 VAE 模糊)。
该模型经过微调以支持无条件的图像生成。这个训练过程与预训练完全一样,只是将 20% 的文本 token 序列替换为空序列。这样,模型保留了生成文本条件输出的能力,但也可以无条件地生成图像。
该模型还经过显式微调以执行修复。在微调期间,训练示例的随机区域被删除,其余部分与掩码通道一起作为附加条件信息输入模型。
GLIDE 可以迭代地使用 zero-shot 生成产生复杂场景,然后进行一系列修复编辑。
首先生成 prompt「一个舒适的客厅」的图像,然后使用修复蒙版,后续文本 prompt 在墙上添加了一幅画、一个茶几,茶几上还有一个花瓶,最后把墙移到沙发上。示例来自原论文。
DALL·E 2/unCLIP
OpenAI 于 2022 年 4 月 6 日发布了 DALL·E 2 系统。DALL·E 2 系统比原来的 DALL·E 显著提升了结果。它生成的图像分辨率提高了 4 倍(与原来的 DALL·E 和 GLIDE 相比),现在高达 1024×1024 像素。DALL·E 2 系统背后的模型称为 unCLIP。
作者发现,就照片写实而言,人类略微喜欢 GLIDE 而不是 unCLIP,但差距非常小。在具有类似真实感的情况下,在多样性方面,unCLIP 比 GLIDE 更受青睐,突出了它的好处之一。请记住,GLIDE 本身比 DALL·E 1 更受欢迎,所以说 DALL·E 2 比它的前身 DALL·E 1 有了显著改进。
对于「用克劳德 · 莫奈的风格画一幅狐狸坐在日出时分田野里的画」的要求,两个版本的系统生成的图片,图片来自原文章。
DALL·E 2 可以将概念、属性和风格结合起来:
原文中的示例。
DALL·E 2 还可以基于文本引导进行图像编辑,这是 GLIDE 中的功能。它可以在考虑阴影、反射和纹理的同时添加和删除元素:
将柯基犬添加到图像上的特定位置,图片来自原论文中。
DALL·E 2 还可用于生成原始图像的变体:
生成图像的变体,图片来自原文。
DALL·E 2 也存在一些问题。特别是 unCLIP 在将属性绑定到对象方面比 GLIDE 模型更差。例如,unCLIP 比 GLIDE 更难面对必须将两个单独的对象(立方体)绑定到两个单独的属性(颜色)的 prompt:
unCLIP 生成连贯的文本上也有一些困境:
另一个问题是 unCLIP 很难在复杂场景中生成细节:
模型内部发生了一些改变。下图是 CLIP 和 GLIDE 的结合,模型本身(全文条件图像生成堆栈)在论文内部称为 unCLIP,因为它通过反转 CLIP 图像编码器生成图像。
该模型的工作方式如下:CLIP 模型是单独训练的。然后 CLIP 文本编码器为输入文本(标题)生成嵌入。然后一个特殊的先验模型基于文本嵌入生成图像嵌入。然后扩散解码器基于图像嵌入生成图像。解码器本质上将图像嵌入反转回图像。
系统的宏观概述。一些细节(如解码器文本条件)没有显示。图片来自原论文。