DALL·E 2模型及其论文详解
详细介绍DALL·E 2的模型架构和训练过程,详细解读其论文《Hierarchical Text-Conditional Image Generation with CLIP Latents》。
🌺DALL·E系列文章列表🌺
- 万字长文解读深度学习——dVAE(DALL·E的核心部件)
- DALL·E模型及其论文详解
- 万字长文解读深度学习——多模态模型CLIP、BLIP、ViLT
文章目录
- 建议阅读
- 在DALL·E上的优化
- 概要介绍
- CLIP 模型
- DALL·E 2 的两阶段生成架构
- 阶段 1:Prior 先验模型
- 阶段 2:Decoder 解码器
- 模型的训练过程
- 模型架构
- CLIP 训练(图上部分)
- unCLIP 的图像生成(图下部分)
- 实现细节
- Prior模型
- 训练阶段
- 推理阶段
- Decoder模型
- 解码器概述
- 输入
- 扩散模型和解码器的架构
- 引导策略:Classifier-Free Guidance
- 高分辨率图像生成
- 推理阶段的应用
- 参考
建议阅读
- 论文:Hierarchical Text-Conditional Image Generation with CLIP Latents
- 官方博文:DALL·E 2
在DALL·E上的优化
- DELLE2可以生成之前四倍的分辨率,生成效果更加清晰逼真。
- 对比DALLE生成的图片和DALLE2生成的图片,有71.7%的人认为DALLE2生成的图片跟这个文本提示的内容更加贴切,将近88.8%的人认为DALLE2生成的图片比DALLE生成的图片更逼真。
In January 2021, OpenAI introduced DALL·E. One year later, our newest system, DALL·E 2, generates more realistic and accurate images with 4x greater resolution.
DALL·E 2 is preferred over DALL·E 1 when evaluators compared each model.
- 71.7% preferred for caption matching
- 88.8% preferred for photorealism
概要介绍
DALL·E 2 结合了 CLIP 模型 和 GLIDE 模型,使用了 CLIP 提供的图像特征 和 GLIDE 作为基于扩散模型的文本-图像生成方法,通过一个 两阶段生成架构 来生成高质量的图像。
CLIP 模型
CLIP(Contrastive Language-Image Pretraining)模型已经在大量的文本-图像数据上进行训练,通过 对比学习(contrastive learning)学习图像和文本之间的对齐特征。
CLIP的详细介绍参考:万字长文解读深度学习——多模态模型CLIP、BLIP、ViLT
DALL·E 2 的两阶段生成架构
DALL·E 2 主要包括两个阶段:Prior(先验)模型和 Decoder(解码器)。这两阶段的设计是为了解决图像生成中的两个关键问题:
- 如何根据文本生成图像特征(潜在特征);
- 以及如何根据这些特征生成最终图像。
阶段 1:Prior 先验模型
- 输入:
- 训练阶段是图片特征和文本特征(CLIP的文本/图像编码器生成);
- 推理阶段只有文本特征(CLIP的文本编码器生成)。
- 目标:根据输入的文本特征生成对应的 图像潜在特征。
- 在这一阶段,DALL·E 2 首先使用 CLIP 文本编码器 来提取文本描述的语义特征。
- 然后
- 推理阶段,这些文本特征作为条件输入,传递给 Prior 模型。经过训练的Prior 模型会根据这些文本特征生成对应的 图像潜在特征,即图像的嵌入表示(image embedding)。
- 训练阶段, CLIP 图像编码器将输入的图像转化为真实图像特征。这些真实图像特征作为目标(ground truth)来引导 Prior 模型的训练。训练目标是让 Prior 模型从文本特征(由 CLIP 文本编码器生成)生成的图像特征,尽可能地接近真实图像的特征。
- 这一过程基于类似于 扩散模型(diffusion models)或 自回归生成模型(autoregressive generative models)的技术,目的是通过多个步骤逐步生成图像特征。
阶段 2:Decoder 解码器
- 输入:生成的图像潜在特征,可能还有原始文本。
- 目标:将图像潜在特征解码为实际图像。
- 生成的图像潜在特征(即图像嵌入)被传递给 解码器。解码器的任务是根据这些图像特征生成最终的图像。
- 解码器的设计可能包括 反向扩散过程,即通过一个类似于 GLIDE 模型 中的扩散过程,将图像特征逐步转化为像素空间中的图像。
模型的训练过程
-
Prior 模型训练:Prior 模型的训练目标是将文本特征映射到一个与图像特征对齐的潜在空间。通过对比损失(contrastive loss),Prior 模型在训练过程中学会如何根据文本特征生成高质量的图像特征。这一训练过程类似于 对比学习 中的 正负样本对比。
-
解码器训练:解码器训练的目标是将生成的图像潜在特征解码为像素级图像。训练过程中,解码器的输入是图像特征(由 Prior 模型生成的潜在特征),输出是图像像素。解码器通过优化图像生成质量的损失函数(如重建损失、对抗损失等)来学习如何根据潜在特征生成更高质量的图像。
模型架构
DALLE2原名unCLIP,本质上是CLIP的反过程。
CLIP是给定文本、图像,得到对应的特征,然后将其进行匹配(图像匹配、图像检索等),是一个从输入到特征的过程。
DALLE2是通过文本特征到图像特征最后到生成图像的过程,是把特征还原到对应的数据。
图2:unCLIP的高层次概览。
虚线以上部分展示了CLIP的训练过程,通过该过程,我们学习了文本和图像的联合表示空间。
虚线以下部分展示了我们的文本到图像生成过程:一个CLIP文本嵌入首先被输入到自回归或扩散先验模型中,用以生成图像嵌入,然后该图像嵌入被用作扩散解码器的条件,从而生成最终的图像。
注意,在先验模型和解码器的训练期间,CLIP模型的参数是冻结的。
图像的解释:
CLIP 训练(图上部分)
CLIP 是一个对比学习框架,用于在文本和图像之间学习共享的表示。
- 左侧是文本输入,例如 “a corgi playing a flame throwing trumpet”(描述一只柯基吹火焰喷射喇叭)。
- 文本被送入
text encoder
(文本编码器),生成文本嵌入(text embedding)。 - 图像被送入
img encoder
(图像编码器),生成图像嵌入(image embedding)。 - 文本嵌入和图像嵌入通过对比学习(contrastive learning)进行联合优化,从而对齐文本与图像表示。
- 训练时CLIP的输入是一对对配对好的的图片-文本对(根据对应文本一条狗,去匹配一条狗的图片),这些文本和图片分别通过Text Encoder和Image Encoder输出对应的特征,然后在这些输出的文字特征和图片特征上进行对比学习。
- 推理时,CLIP的Text Encoder和Image Encoder可以分开使用。
CLIP的详细介绍参考:万字长文解读深度学习——多模态模型CLIP、BLIP、ViLT
unCLIP 的图像生成(图下部分)
在图像生成阶段,CLIP 模型的权重是冻结的,表示 CLIP 只是用来提供嵌入的基础。
- 输入文本通过 CLIP 的
text encoder
转化为文本嵌入。 - prior先验阶段:文本嵌入经过通过一个自回归或扩散式先验模型(autoregressive or diffusion prior),被进一步处理为图像嵌入。
- DALL·E 2训练阶段,输入也是文本-图像对。在 Prior 模型的训练过程中,图像本身并不是直接参与生成的,而是通过 CLIP 图像编码器将图像转化为图像特征。这些图像特征作为目标(ground truth)来引导 Prior 模型的训练。训练目标是让 Prior 模型从文本特征(由 CLIP 文本编码器生成)生成的图像特征【生成过程就是 Prior 模型的训练过程,涉及加噪,后面会详细介绍】,尽可能地接近真实图像的特征。
DALL·E 2 推理阶段,只需要输入文本即可。经过训练的Prior 模型会根据这些文本特征生成对应的 图像潜在特征,即图像的嵌入表示(image embedding)。
- decoder阶段:该图像嵌入被用来作为条件输入到扩散式解码器(升级版的GLIDE,其是基于扩散模型),最终生成符合文本描述的图像。
- 扩散模型是通过反向去噪过程,从随机噪声生成高质量的图像。通过条件输入(文本和图像嵌入),模型确保生成的图像与文本描述一致。
实现细节
论文中是先介绍Decoder模型,后介绍Prior模型的。这里,我们按照DALL·E 2的处理顺序进行讲解,即先讲解Prior模型,再讲解Decoder模型。
下文中的图像来源: diffusion model(六)Dalle2技术小结
Prior模型
虽然解码器(Decoder)可以反转 CLIP 图像嵌入 z i z_i zi 来生成图像 x x x;但我们需要一个Prior(先验)模型来从文本描述 y y y 生成 z i z_i zi,以实现从文本描述生成图像。我们探索了两种不同类型的先验模型:
- 自回归 (AR) 先验:将 CLIP 图像嵌入 z i z_i zi 转换为一系列离散代码,并根据文本描述 y y y 自回归地预测。
- 扩散先验:使用高斯扩散模型直接对连续向量 z i z_i zi 进行建模,并且该模型是以文本描述 y y y 为条件的。
论文中还强调:
- 两种方案都使用了classifier free guidance
- 对于Autoregressive prior模型,输入是文本特征,也有CLIP输出的图像特征,然后与DALL-E、GPT类似地把他们拼接起来,然后将图像特征遮住,去自回归的预测。但是OpenAI在CLIP的文章中就已提到,这种自回归做预测的模型,训练效率太低。
- 对于diffusion prior模型,训练了一个Transformer 的解码器(decoder) 来处理图像生成过程,Diffusion 模型在生成高质量图像方面的表现更稳定,且能够处理更复杂的生成任务。
下面主要介绍Diffusion Prior。
训练阶段
输入:图片文本对
步骤:
-
Step 1:
- 将图片文本对输入到 CLIP 模型中,获得对应的 文本向量编码(text embedding)、文本中每个 token 的编码(text encoding)及
真实的
图像向量编码(image embedding)。 - 注意:CLIP 的模型权重被冻结,不参与训练。
- 将图片文本对输入到 CLIP 模型中,获得对应的 文本向量编码(text embedding)、文本中每个 token 的编码(text encoding)及
-
Step 2:
- 对 image embedding(即在扩散模型中的 x 0 x_0 x0)进行随机采样时间步 t t t,然后对 x 0 x_0 x0 加噪,得到第 t t t 时刻的 噪声图像编码( x t x_t xt)。
这个和SD模型训练过程中的原始图像加噪是一样的。
- Step 3:
- 将 文本向量编码、文本 token 编码、时间步向量 和 第 t t t 时刻的噪声图像向量编码输入到Transformer的解码器模型中,预测从 t t t 时刻到 t − 1 t-1 t−1 时刻的图像嵌入分布, p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt−1∣xt) 。
仅使用了Transformer的解码器,并使用未来掩码/因果注意力掩码(causal attention mask)。
这和SD系列模型的扩散模型的前向加噪过程基本一致。
- Step 4:
- 计算预测分布与实际分布的 KL 散度,并实现训练。
这和SD系列模型的扩散模型的目的是一样的:预测加入的噪声和真实噪声的差距。
推理阶段
步骤1:将文本内容 y y y 输入到 CLIP 模型,得到文本向量编码(text embedding) 以及文本中每个 token 的编码(text encoding)。
步骤2:从高斯分布中随机采样一组向量,作为时间步 T T T 时刻的图像向量编码。然后将文本向量编码、文本中每个 token 的编码、时间步编码,以及 T T T 时刻的图像向量编码输入到 DiffusionPriorNetwork 中,预测 T − 1 T-1 T−1 时刻的图像向量编码。
同SD推理的文生图,随机噪声作为初始值。
步骤3:重复步骤 2,逐步向前推理,直到时间步达到 0,此时得到最终的图像嵌入(image embedding)。
同SD模型的逐步去噪。
Decoder模型
解码器概述
在 DALL·E 2 中,解码器的核心任务是将潜在图像特征(由 Prior 模型 生成的 CLIP 图像嵌入)转换为实际的高分辨率图像。这一过程通过扩散模型来实现,并对生成过程进行条件化,以确保生成的图像符合输入文本描述的要求。
输入
解码器的主要输入是 图像潜在特征,这些特征是由 Prior 模型基于文本特征生成的。在某些情况下,解码器也可能结合文本特征来帮助生成符合文本描述的图像。但核心的输入仍然是图像的潜在表示,而不是原始的像素图像或文本本身。
-
图像潜在特征(由 Prior 模型生成的):
- 在训练阶段,Prior 模型根据输入的文本特征生成图像潜在特征(图像嵌入)。
- 在推理阶段,这些潜在特征直接由 Prior 模型提供,解码器使用这些特征来生成图像。
-
文本特征(可选):
- 尽管在解码器的核心功能中,输入的主要是图像潜在特征,但某些情况下,文本特征也可能参与解码过程,尤其是在 条件化生成 过程中。文本特征有助于确保生成的图像符合输入文本的语义。
- 论文中提到,文本条件路径(来自 GLIDE 模型的文本编码器)被保留,这可能意味着文本特征在生成过程中仍然在某些方面起作用,特别是在保持语义一致性方面。
扩散模型和解码器的架构
DALL·E 2 使用了扩散模型(Diffusion Models)作为解码器的基础。扩散模型通过逐步去噪的方式生成图像,具体操作如下:
-
CLIP 图像嵌入与时间步嵌入结合:扩散模型首先将 CLIP 图像嵌入与时间步嵌入(timestep embedding)结合,以提供图像生成过程中的时序信息。
-
额外的上下文标记:CLIP 嵌入被投影为四个额外的上下文标记,并与来自 GLIDE 文本编码器 的输出序列连接。这些上下文标记帮助扩散模型更好地理解和生成图像,确保图像生成过程中能够有效利用文本信息。
-
文本条件路径:DALL·E 2 保留了原始 GLIDE 模型中的文本条件路径,尽管论文指出,虽然这样可以使扩散模型学习一些 CLIP 无法捕捉到的自然语言特性(例如变量绑定),但这一路径对最终效果的贡献较小。
引导策略:Classifier-Free Guidance
为提高图像生成质量,DALL·E 2 使用了 无分类器引导(Classifier-Free Guidance)来增强样本质量的技术。
- 每次随机mask掉10%的 CLIP embedding
- 每次随机丢弃50%的 text caption(文本描述)
通过这种引导策略,扩散模型可以更好地在不同的条件下生成高质量的图像,尤其是通过调整模型在条件信息上的依赖,使其能够生成更加多样化和更符合文本描述的图像。
高分辨率图像生成
为了生成高分辨率的图像,DALL·E 2 训练了两个扩散上采样模型(diffusion upsampler models):
- 第一个模型将图像从 64 × 64 上采样到 256 × 256 分辨率。
- 第二个模型将 256 × 256 的图像进一步上采样到 1024 × 1024 分辨率。
在训练过程中,为了增强上采样器的鲁棒性,DALL·E 2 对条件图像进行了轻微的破坏:
- 第一个上采样阶段使用 高斯模糊(Gaussian Blur)来破坏图像。
- 第二个上采样阶段使用更具多样性的 BSR 降级(BSR degradation)。
此外,为了降低训练计算量并提高数值稳定性,DALL·E 2 在训练时使用图像的随机裁剪,裁剪大小为目标大小的四分之一。
推理阶段的应用
在推理阶段,DALL·E 2 直接将训练好的模型应用于目标分辨率,观察到该模型能够很好地推广到更高的分辨率。在生成过程中,无需额外的文本条件,解码器通过无条件的 ADMNets 生成图像,避免了对文本说明的依赖,从而提升了生成速度和稳定性。
参考
AI绘画原理解析:从CLIP、BLIP到DALLE、DALLE 2、DALLE 3、Stable Diffusion(含ControlNet详解)
【论文精读】DALLE2: Hierarchical Text-Conditional Image Generation with CLIP Latents
diffusion model(六)Dalle2技术小结