DALL-E 系列 (1-3)

DALL-E 系列 (1-3)

本文主要梳理 DALL-E 系列图像生成模型的整体框架,相关论文中都包含了丰富的训练、优化细节,对这些细节本文不做过多介绍,有兴趣的读者可以阅读原文。注意,在阅读本文之前,最好先了解 VAE、VQVAE、VQGAN、GLIDE、CLIP 等一系列工作,这些在之前的文章中已经介绍过。

DALL-E: VQVAE+TextCondition

论文:Zero-Shot Text-to-Image Generation

DALLE-E 1 是在 VQVAE ( + AR model) 自回归生成的基础上加上文本条件,实现了 zero shot 的 text-to-image 生成。

与 VQGAN 类似,DALL-E 1 的训练分为两个阶段,第一阶段训练 dVAE(论文中叫 dVAE,实际就是 VQVAE)和 codebook,来作为图片 tokenizer,第二阶段训练一个 decoder-only 的 Transformer 自回归模型,作为 prior 模型。

在这里插入图片描述

第一阶段,训练 dVAE + codebook,整体过程与 VQVAE 类似,之前的文章已经介绍过,不再赘述。训练好的 dVAE encoder 相当于是一个图片 tokenizer,将像素空间的图片编码为隐空间的特征图,而 dVAE decoder 则可以将隐空间的特征图解码为真实图片。

第二阶段,训练 prior 模型。DALL-E 中的 prior 模型是一个参数量达 12B 的 decoder only 的自回归模型。在第一阶段训练完 dVAE 和 codebook 之后,固定其参数,作为图片 tokenizer。训练数据是图片文本对,BPE tokenizer 对文本进行编码,得到长度为 256 的文本 token,dVAE encoder 对图片进行编码,得到 32*32 的特征图,拉直后为 1024 个图片 token,注意这 1024 个token 都是 codebook 中的向量。将文本 token 和 图片 token 拼接起来,得到长度为 1280 的 token 序列。以前 256 个文本 token 为 prefix,把当前位置后面的图片 token 都 mask 掉,自回归地预测下一个图片 token,实际就是预测下一个 token 在 codebook 中的索引,通过交叉熵损失函数优化。

训练完成后,推理生图阶段,给定文本,将其 BPE 编码为 256 个文本 token,在后面预测图片 token 即可。在图片的自回归生成中,codebook 就相当于自然语言中的词表。所谓生成,就是预测下一个 token 的索引。预测出每一个 token 之后,将其 reshape 为特征图,送入 dVAE decoder 中生成出真实像素图片。这就完成了一次推理生图。

DALL-E 的做法基本与 VQVAE、VQGAN 一致,但是它将文本作为 prefix 预置条件,实现了 zero-shot 的 text-to-image 生成。DALL-E 的论文中,还花费很大篇幅介绍了大模型训练工程和大规模数据集构建的细节,感兴趣的读者可以参考原文。

DALL-E 2 (unCLIP): GLIDE+CLIP

论文:Hierarchical Text-Conditional Image Generation with CLIP Latents

2020 年从 DDPM 开始,扩散模型在图像生成领域大放异彩。DALL-E 2 就使用了扩散模型,方法与 OpenAI 之前另一篇扩散模型的工作 GLIDE 非常相似。在此基础上,为了实现更好的文本引导,OpenAI 还结合了自家提出的 CLIP 模型。

CLIP 模型是 OpenAI 提出的基于海量图片文本对数据集进行对比学习预训练的图文跨模态特征对齐方法,CLIP 由图片编码器和文本编码器组成,它们各自对图片和文本数据进行编码,两种数据模态的特征可以直接计算相似度。从而,CLIP 可以实现 zeroshot 的图文检索,比如由图片检索文本。而 DALL-E 2 刚好是倒过来,由文本生成图片,所以原文中将 DALL-E 2 称为 unCLIP。下图是 CLIP 由图片检索文本和 unCLIP 由文本生成图片的推理过程的示意图。

在这里插入图片描述

DALL-E 2(unCLIP)共有三部分组成,分别是预训练的 CLIP 模型,prior 模型和 decoder 模型。从上图 unCLIP 的采样过程可以看出他们各自的作用,CLIP 的文本编码器负责提取文本特征,prior 模型将文本特征转换为图片特征,解码器 decoder 则根据图片特征生成图片。

unCLIP 的几个组件是如何训练的呢?首先,CLIP 模型是预训练好的,其参数在 unCLIP 的训练过程中一直都是冻结的。所以 unCLIP 需要训练的是两部分:prior 模型和解码器 decoder。还要强调的一点是训练数据,训练 DALL-E 2 所需要的数据形式与其他文生图模型一直,是图片文本对,即一张图片与其对应的内容描述文本。

CLIP 模型不仅在 DALL-E 2 的推理生图过程中负责理解文本条件,在训练过程中它也非常重要。训练时,其参数固定,为 decoder 和 prior 的训练提供输入和监督信号。需要训练的 decoder 和 prior 分别是以 CLIP 的图像和文本特征作为输入,其中 prior 的训练还需要 CLIP 的图像特征作为监督信号,decoder 的训练则是以输入原图作为监督信号。

在这里插入图片描述

训练 decoder 模型

在生图过程中,decoder 模型的任务是将 CLIP 图片特征解码为真实的图片。其输入为 CLIP 的图像特征,输出为对应语义的真实图片。其训练过程相当于固定自编码器的编码器(参数冻结的 CLIP 图像编码器),来训练解码器。DALL-E 2 中的 decoder 是在 GLIDE 模型的基础上修改了文本条件注入的方式,具体实现细节这里就不多说。

为了生成高清大图,DALL-E 2 训练了两个扩散模型的上采样模型,分别将 64*64 上采样到 256*256 和将它们上采样到 1024*1024。即论文标题中所说的层级式的(hierarchical)生成。

训练 prior 模型

在生图的过程中,prior 模型负责的是将 CLIP 文本特征转换为 CLIP 图像特征。既然 CLIP 图片文本特征是对齐的,为什么不直接拿文本特征去生图,而是还要一步转换为图像特征呢?(以下是笔者的经验猜测)虽然经过 CLIP 对比学习的训练,图像特征和文本特征得到了一定的对齐,但是毕竟还是不同模态的特征来自两个不同的模型,还是有 modality gap 的存在。熟悉 CLIP 的读者也会知道,CLIP 的图文特征相似度的绝对值很小,即使是正样本,其相似度一般也在 0.5 以下,与孪生网络类的同模态特征相似度正样本特征接近 1 相比,modality gap 非常明显。(对 CLIP 模型 modality gap 感兴趣的读者,这里推荐一篇工作:Mind the Gap: Understanding the Modality Gap in Multi-modal Contrastive Representation Learning. arXiv 2203.02053)因此,直接将 CLIP 文本特征用于生图的效果并不好,所以 prior 模型这一步将 CLIP 文本特征转换为 CLIP 图片特征还是很有必要的。

prior 模型的输入和输出分别是 CLIP 文本特征和图片特征,所以直接由固定参数的 CLIP 分别提取图像文本对的特征,然后训练即可。

在 prior 模型的具体实现上,作者尝试了两种结构,分别是

  1. 自回归 prior ,将 CLIP 图像特征转换为一个离散编码序列,然后根据文本条件,预测下一个 token 进行自回归生成
  2. 扩散模型 prior,直接用一个高斯扩散模型来建模 CLIP 图像特征

作者还采用了一系列方法对两种结构进行优化,最终结论是效果差不多,但是扩散模型 prior 更加高效,因此 DALL-E 2 最终选择了扩散模型来作为 prior。

DALL-E 3: recaptioning + ?

论文:Improving Image Generation with Better Captions

DALLE-E 3 的论文并没有完整地介绍整个生图系统所使用的技术,而是重点介绍了目前文生图模型的一个难点:如何提升文生图模型的 prompt following 能力。目前的文生图模型的 prompt following 能力普遍还不够强,很多时候生成出的图片与文本 prompt 不够相关,并且,通常文本 prompt 只能是类似咒语一样的,多个单词的组合。作者认为,导致这个问题的原因是目前用于训练文生图模型的图片文本对数据集的质量都不够高,文本很多没能完整地描述图片内容,甚至有些干脆就是一些互联网上噪声的 alt-text。使用这种数据训练出的文生图模型,自然 prompt following 的能力不够强。作者提出的解决方案是:recaptioning,即训练一个 captioner 模型,来为图片生成更完整的文本描述。用这种合成的(synthetic)图像文本对数据集,来训练文生图模型,prompt following 能力显著提升。

训练并微调 Captioner

作者首先构建了一个基础版本的 captioner 模型,具体来说,是一个 CoCa 模型。但是这个模型也是使用通用的图像文本对数据集训练出来的,因此肯定也会受到上面说的那些低质量数据的影响。因此作者随后会对这个基础版本的 captioner 模型进行微调。微调使用的数据有两类,一类是仅描述图像主体的短 caption,称为 “short synthetic caption, SSC”,另一类则详尽地描述了图像的内容,称为 “discriptive synthetic caption, DSC”。两类 caption 的对比示例如下图。

在这里插入图片描述

不同 caption 数据集的评估

微调好两类 captioner 之后,可以合成数据集中图片的 caption,现在就有 gt、ssc、dsc 三类 caption。作者在相同的数据集上使用不同的 caption 训练了文生图模型,并评估了模型生成结果与 gt caption (下图左) 和与 dsc caption (下图右) 计算 CLIP score 的结果。CLIP score 可以反映不同文生图模型的 prompt following 能力。可以看到,与 gt caption 计算 CLIP score,基于 dsc 和 ssc 训练的文生图模型的 prompt following 均略微优于基于 gt 训练的模型;而如果与 dsc caption 计算 CLIP score,则 dsc 和 ssc 训练的模型则大幅优于 gt 训练的模型。无论怎么比,合成 caption 数据集训练出的文生图模型都比仅使用 gt caption 的 prompt following 能力更强。

注意该实验中使用合成 caption 训练的模型均是与 gt caption 进行了 95% 比 5% 的混合,而非全是合成 caption。

在这里插入图片描述

数据配比

虽然看起来合成 caption 训练出摸型的 prompt following 能力更强,但是实际中如果推理生图时的 prompt 与训练时的 caption 分布有较大的 bias,生成结果就不够好。因此要考虑用户写的生图 prompt 是否与训练时的 caption 分布一致,gt caption 自然是满足这一点的,因为它本身也是人类写的。但是合成的 caption 却不一定,因此需要在训练数据中混入适量的 gt caption 进行正则化。

那么合成 caption 与 gt caption 的配比应该是多少呢?作者对合成 caption 占比分别为 65%, 80%, 90%, 95% 进行了对比实验,结果如下图。其中 65% 的结果太低,没有出现在图中。可以看到,尽可能地提高合成 caption 的占比,可以显著提高模型的 prompt following 能力。

在这里插入图片描述

还有一点细节需要注意,DALL-E 3 使用了上述的合成 caption 数据集进行训练,但这会使得模型只有在生图 prompt 也是尽可能详尽描述图像的长 caption 时才会产生好的结果。而我们不能要求用户每次都详尽地描述图像,实际中这里会使用 GPT4 进行细节的补充。

consistency decoder

虽然 DALL-E 3 没开源,甚至技术报告都只提了 recaptioning 这一个技术点,但是 OpenAI 还是放出了一个很有用的东西:consistency decoder。代码及权重在:https://github.com/openai/consistencydecoder。

在技术报告的附录 A、B 中提到,DALL-E 3 的框架也是一个 LDM 模型,使用的也是 LDM 中的 VAE encoder 来将真实图片压缩为隐层空间特征图,也就是说,DALL-E 3 与目前常见的 Stable Diffusion 模型的隐层空间是同一个。但是,将隐层空间特征图解码为真实图片的 decoder,OpenAI 自己重新训了一个。

具体来说,consistency decoder 是一个 unet diffusion decoder,与 DDPM 中的 diffusion UNet 一致。在训练完成后,使用 consistency distillation 技术进行蒸馏,从而使得去噪过程只需两步。

只要是使用 LDM 相同的 vae 的模型,都可以直接将其 vae decoder 替换为 consistency decoder,其生成细节质量(如文字、人脸等)显著增强。

总结

DALL-E 系列(1, 2, 3)看起来更像是一个产品编号,从技术上来看,并没有什么一致性。从 DALL-E 1 的 VQVAE,到 DALL-E 2 的 unCLIP,再到 DALL-E 3 的 LDM,从 DALL-E 系列核心技术的迭代中,反倒是可以看出业界主流图像生成技术的演进:从自回归生成,到 Diffusion 模型加 CLIP 文本引导,再到如今基本统一的 LDM。只是可惜从论文到技术报告再到单个技术点分享, OpenAI 似乎越来越不 “open”,很遗憾无法一窥 DALL-E 3 全貌。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值