DALL-E是OpenAI在2021年初发布的图像生成模型,它可以根据文字描述生成对应的图像,效果令人惊叹。本文深入剖析了DALL-E的底层原理,包括模型架构、训练方法、图像生成过程、关键技术等。如果你对AI图像生成感兴趣,或者想了解DALL-E背后的技术,希望这篇文章能帮到你。

一、DALL-E是什么

先简单介绍一下DALL-E。

DALL-E是OpenAI在2021年1月发布的一个生成模型,名字来源于艺术家萨尔瓦多·达利(Salvador Dali)和皮克斯的机器人瓦力(WALL-E)的组合。它可以根据文字描述(Prompt)生成对应的图像,比如"一只戴着草帽的猫坐在海边",DALL-E就能生成符合这个描述的图像。

DALL-E最让人惊叹的地方在于它的创造力。它不仅能生成真实存在的物体,还能生成不存在的、抽象的、超现实的图像。比如"一个由牛油果做成的扶手椅",DALL-E真的能生成一把看起来像牛油果的椅子。这种创造力在之前的图像生成模型中是很少见的。

DALL-E发布之后,在AI领域引起了很大的反响,也开启了AI图像生成的新时代。后来的DALL-E 2、Stable Diffusion、Midjourney等模型,都受到了DALL-E的影响。

二、DALL-E的整体架构

DALL-E的整体架构是基于Transformer的,和GPT类似,但是做了一些特殊的设计。

1. 图像和文字的统一表示

DALL-E的核心思想是把图像和文字都转换成离散的Token序列,然后用Transformer来建模它们之间的关系。

文字部分比较简单,用BPE(Byte Pair Encoding)分词,把文字转换成Token序列。

图像部分比较复杂。DALL-E用了一个叫dVAE(discrete Variational Autoencoder)的模型,把图像压缩成离散的Token序列。具体来说,dVAE把一张256x256的图像编码成32x32的Token网格,每个Token有8192种可能的取值。这样一张图像就变成了1024个Token的序列。

2. 自回归生成

DALL-E用的是自回归的方式生成图像。具体来说,先输入文字的Token序列,然后一个一个地生成图像的Token。每个图像Token的生成都依赖于前面所有的文字Token和图像Token。

这种方式和GPT生成文字是一样的,只不过DALL-E生成的是图像Token而不是文字Token。生成完所有的图像Token之后,再用dVAE的解码器把Token序列还原成图像。

3. 模型规模

DALL-E的模型有120亿参数,训练数据是从互联网上收集的2.5亿对图文数据。这个规模在2021年来说是非常大的,也是DALL-E效果好的重要原因。

三、关键技术详解

下面详细解释DALL-E的几个关键技术。

1. dVAE:图像的离散化

dVAE是DALL-E中非常重要的一个组件,它的作用是把连续的图像转换成离散的Token序列。

为什么要做离散化呢?因为Transformer擅长处理离散的Token序列(比如文字),而图像是连续的像素值,不适合直接用Transformer处理。通过dVAE把图像转换成离散Token,就可以用和GPT一样的方式来建模图像了。

dVAE的工作原理:

  • 编码器:把输入图像(256x256x3)编码成32x32的特征图,每个位置有8192个可能的取值
  • 码本(Codebook):有8192个向量,每个Token对应码本中的一个向量
  • 解码器:根据32x32的Token序列,还原成256x256的图像

训练dVAE的时候,有两个目标:

  • 重建目标:解码后的图像要和原图尽可能接近
  • 对齐目标:编码器的输出要和码本中的向量尽可能接近

通过这两个目标,dVAE学会了用离散Token来表示图像,同时保证重建质量。

2. 注意力机制

DALL-E用的是Transformer的自注意力机制,但是有一些特殊的设计。

文字部分的Token之间可以互相注意,图像部分的Token之间也可以互相注意,而且图像Token可以注意到所有的文字Token。这样在生成每个图像Token的时候,都能看到完整的文字描述和已经生成的图像部分。

为了降低计算量,DALL-E用了稀疏注意力(Sparse Attention)。具体来说,每个图像Token只注意它周围的一些Token(行、列、块),而不是注意所有的Token。这样可以把注意力的计算复杂度从O(n^2)降到O(n*sqrt(n)),对于1024个图像Token来说,计算量减少了很多。

3. 两阶段训练

DALL-E的训练分为两个阶段:

第一阶段:训练dVAE。用大量的图像数据训练dVAE,让它学会把图像编码成Token,再解码回图像。这个阶段不需要文字数据。

第二阶段:训练Transformer。用图文对数据训练Transformer,让它学会根据文字Token生成图像Token。这个阶段dVAE的参数是固定的。

这种两阶段的训练方式,让DALL-E可以分别优化图像表示和图文关系,效果更好。

四、图像生成的过程

了解了架构之后,我们来看看DALL-E生成一张图像的具体过程。

第一步:文字编码

用户输入一段文字描述,比如"一只戴着草帽的猫坐在海边"。DALL-E用BPE把这段文字转换成Token序列,大概有几十个Token。

第二步:自回归生成图像Token

Transformer以文字Token为开头,一个一个地生成图像Token。第一个图像Token的生成依赖于所有的文字Token,第二个图像Token的生成依赖于文字Token和第一个图像Token,以此类推。

生成1024个图像Token(32x32的网格)之后,图像的Token序列就完成了。

这个过程是比较慢的,因为要一个一个地生成,不能并行。生成一张图像大概需要几秒钟到几十秒,取决于硬件。

第三步:解码成图像

生成完图像Token之后,用dVAE的解码器把Token序列还原成256x256的图像。解码器会根据每个位置的Token,从码本中取出对应的向量,然后通过反卷积等操作还原成像素值。

第四步:采样和选择

DALL-E在生成的时候,会生成多张候选图像(通常是512张),然后用一个预训练的对比模型(CLIP)来评估每张图像和文字描述的匹配程度,选择匹配度最高的几张返回给用户。

CLIP是OpenAI的另一个模型,它可以计算图像和文字之间的相似度。用CLIP来筛选,可以大大提高生成图像的质量,确保生成的图像和文字描述一致。

五、DALL-E的能力和局限

能力

  1. 零样本生成:DALL-E可以生成训练数据中没有见过的组合,比如"一个由牛油果做成的扶手椅"。这说明它真正理解了文字和图像之间的关系,而不是简单地记忆训练数据。
  2. 多概念组合:DALL-E可以同时处理多个概念,比如颜色、形状、材质、场景等,把它们组合成一张图像。
  3. 风格迁移:DALL-E可以生成不同风格的图像,比如油画风格、水彩风格、像素风格等。
  4. 空间推理:DALL-E可以理解空间关系,比如"左边是猫,右边是狗","猫在桌子上面"。

局限

  1. 分辨率低:DALL-E生成的图像只有256x256,分辨率比较低,细节不够丰富。
  2. 生成速度慢:自回归生成的方式比较慢,生成一张图像需要较长时间。
  3. 复杂场景理解有限:对于非常复杂的场景或者精确的空间关系,DALL-E有时候会理解错误。
  4. 文字渲染不好:DALL-E在图像中渲染文字的能力比较差,经常出现乱码或者拼写错误。
  5. 可能生成有害内容:和其他生成模型一样,DALL-E也可能生成有害或者不当的内容,需要做安全过滤。

六、DALL-E对后续模型的影响

DALL-E虽然本身有一些局限,但是它对后续的图像生成模型产生了深远的影响。

DALL-E 2:OpenAI在2022年发布了DALL-E 2,用了扩散模型(Diffusion Model)代替了自回归生成,分辨率提升到1024x1024,生成速度也快了很多,效果也更好。

Stable Diffusion:Stability AI发布的Stable Diffusion,也是基于扩散模型,开源免费,让AI图像生成普及到了普通人。

Midjourney:Midjourney是一个商业化的AI图像生成工具,效果非常好,特别是在艺术创作方面。

这些后续模型虽然技术路线有所不同,但是都受到了DALL-E的启发。DALL-E证明了AI可以根据文字生成高质量的图像,开启了AI图像生成的新时代。

七、写在最后

DALL-E是AI图像生成领域的里程碑式的工作。它用Transformer和dVAE的组合,实现了根据文字生成图像的能力,展示了AI在创造力方面的巨大潜力。

虽然DALL-E本身已经被后续的模型超越了,但是它的核心思想——把图像转换成离散Token,用Transformer来建模图文关系——依然有很大的价值。理解DALL-E的原理,有助于我们理解后续的图像生成模型,也有助于我们在这个基础上做进一步的研究和创新。

AI图像生成技术还在快速发展,未来会有更强大、更高效、更安全的模型出现。作为技术人员,我们要保持学习,跟上技术的发展,同时也要思考这些技术带来的社会影响,确保技术被用在好的地方。

最后用一句话结束本文:"技术的进步永无止境,保持好奇,保持学习。"愿每一个对AI感兴趣的人,都能在这个快速发展的领域里找到自己的方向。