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的能力和局限
能力
- 零样本生成:DALL-E可以生成训练数据中没有见过的组合,比如"一个由牛油果做成的扶手椅"。这说明它真正理解了文字和图像之间的关系,而不是简单地记忆训练数据。
- 多概念组合:DALL-E可以同时处理多个概念,比如颜色、形状、材质、场景等,把它们组合成一张图像。
- 风格迁移:DALL-E可以生成不同风格的图像,比如油画风格、水彩风格、像素风格等。
- 空间推理:DALL-E可以理解空间关系,比如"左边是猫,右边是狗","猫在桌子上面"。
局限
- 分辨率低:DALL-E生成的图像只有256x256,分辨率比较低,细节不够丰富。
- 生成速度慢:自回归生成的方式比较慢,生成一张图像需要较长时间。
- 复杂场景理解有限:对于非常复杂的场景或者精确的空间关系,DALL-E有时候会理解错误。
- 文字渲染不好:DALL-E在图像中渲染文字的能力比较差,经常出现乱码或者拼写错误。
- 可能生成有害内容:和其他生成模型一样,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感兴趣的人,都能在这个快速发展的领域里找到自己的方向。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录