Press "Enter" to skip to content

AI艺术的背后:详解文本生成图像模型

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

2018年,一副由 AI 生成的艺术品《埃德蒙·贝拉米肖像》以大约300万人名币的高价成功拍卖,尽管质疑声不断,从那时起,AI 艺术生成已经开始走进大众的视野中。在过去一年里,出现了大量的文本生成图像模型,尤其是随着 Stable Diffusion 以及 Midjourney 的出现,带起了一股 AI 艺术创作热潮,甚至很多艺术家也开始尝试用 AI 来辅助艺术创作。在本文中,将会系统梳理近几年出现的文本生成图像算法,帮助大家深入了解其背后的原理。

 

 

©本图由本文作者使用 Midjourney 创作生成

 

目 录

 

 

 

基于 VQ-VAE

 

 

AE

 

VAE

 

VQ-VAE

 

DALL-E

 

基于 GAN

 

VQGAN

 

VQGAN-CLIP

 

DALL-E Mini

 

Parti

 

NUWA-Infinity

 

基于 Diffusion Model

 

Diffusion Model

 

GLIDE

 

DALL-E2

 

Imagen

 

Stable Diffusion

 

模型试玩

 

总结

 

 

 

基于VQ-VAE

 

在了解 VQ-VAE 的原理之前,需要先理解 AE (AutoEncoder) 以及 VAE (Variational Autoencoders) ,这些模型都属于自监督学习方法,接下来,本文将对其进行简要的介绍。

 

 

AE

 

自编码器由编码器以及解码器组成(如下图所示) [1] ,其首先对图像进行压缩,之后,在对压缩后的表征进行重建。在实际应用中,自编码器往往会被用于降维,去噪,异常检测或者神经风格迁移中。

 

 

由于自编码器的目标是重建输入,因此,其损失函数为:
,其中,
是输入,
是对
的重建,只需要简单的端对端训练,即可得到一个自编码器。

 

 

VAE

 

与 AE 不同的是,VAE 不再去学习一个连续的表征,而是 直接学习一个分布 ,然后通过这个分布采样得到中间表征
去重建原图  [2] 。

 

 

VAE 假设中间表征
是一个正态分布,因此,编码器部分需要将原图
映射为正态分布
,通过重参数技巧,得到采样后的中间表征
, 其中 ϵ 采样于标准整体分布
。紧接着,解码器通过中间表征 z 进行解码操作,得到原图的重建。VAE 的损失函数定义为:

 

 

 

其中,

 

在 VAE 的损失函数中,第一项的目的是让模型能够重建输入,而第二项的目的是让解码器输出的分布尽量接近标准整体分布,这样的好处是,迫使
接近于标准整体分布,这样在生成的时候,就可以直接从正态分布中采样, 然后通过解码器部分进行图像生成了。

 

 

VQ-VAE

 

VAE 具有一个最大的问题就是使用了固定的先验(正态分布),其次是使用了连续的中间表征,这样会导致图片生成的多样性并不是很好以及可控性差。为了解决这个问题,VQ-VAE ( Vector Quantized Variational Autoencoder) 选择使用 离散的中间表征 ,同时,通常会使用一个自回归模型来学习先验(例如 PixelCNN 或者 Transformer)。在 VQ-VAE 中,其中间表征就足够稳定和多样化,从而可以很好的影响 Decoder 部分的输出 ,帮助生成丰富多样的图片。因此,后来很多的文本生成图像模型都基于 VQ-VAE [3] 。

 

 

VQ-VAE 的算法流程为:

 

 

首先设置 K 个向量作为可查询的 Codebook。

 

输入图片通过编码器 CNN 来得到 N 个中间表征
,然后通过最邻近算法,在 Codebook 中查询与这个 N 个中间表征最相似的向量。

 

将 Codebook 中查询的相似向量放到对应
的位置上,得到

 

解码器通过得到的中间表征
重建图片。

 

 

VQ-VAE 最核心的部分就是 Codebook 查询操作 ,通过使用具有高度一致性的 Codebook 来代替混乱的中间表征,可以有效的提高图像生成的可控性和丰富度。VQ-VAE 的损失函数定义为:

 

 

其中,sg 为梯度暂停操作,也就是 sg 所处的模块不会进行梯度更新。

 

损失函数的第一项主要是针对编码器和解码器,在这个过程中,由于中间 codebook 查询操作是离散的,因此,这里直接将
的梯度,复制给
,从而形成梯度反向传播。第二项被称为 VQ loss,其目的是训练 codebook 模块 e,由于
这里是固定的,因此会迫使 codebook 模块 e 朝
靠近。第三项被称为 commitment loss,这里只有
的梯度在变化,其目的是反过来让
去靠近 codebook 模块
,从而使得 encoder 模块的输出能够更加稳定。

 

在 VAE 中,由于中间表征
服从标准正态分布,因此在生成的时候,只需要在标准正态分布中随机采样即可。而在 VQ-VAE 中,随机选择 N 个 codebook 不能保证生成预期的图像,因此,需要有一个模型来学习生成特定中间表征,这样才能生成有效的图像(也称为学习先验)。

 

因此,在原始的 VQ-VAE 论文中,作者通过使用  PixelCNN 来学习先验,首先,使用训练好的 VQ-VAE 来得到训练数据的中间离散编码,来作为自回归模型 PixelCNN 的语料库进行训练。之后,在生成的时候,直接使用 PixelCNN 来生一个中间离散表征,然后通过匹配 Codebook,使用 Decoder 进行图片生成。

 

 

DALL-E

 

DALL-E 由 OpenAI 开发,其第一代版本使用的是 VQ-VAE,是当前非常流行的文本生成图像模型之一。目前,DALL-E 第一代并没有开放,因此,想要试玩可以直接去玩网友复现的 DALL-E-Mini 版本。

 

DALL-E 第一代最大的特色是 对语义的理解非常出色 ,以及可以生成各种非常规但是又符合语义信息的图像 [4,5] 。

 

 

DALL-E 模型中的生成模块使用的是 VQ-VAE,不同的是,其先验的学习,使用的是 文本到中间离散表征的映射 ,具体步骤如下:

 

 

训练一个 dVAE(文章里面称为 dVAE,实际上是一个 VQ-VAE,这里不再赘述),其中,Codebook 的数量为 8192

 

训练一个自回归模型,这里文章中使用的是Transformer,通过输入文本,来预测中间表征

 

 

在生成过程中,直接输入文本,通过 Transformer 预测中间表征
,然后 dVAE 的 Decoder 模块通过中间表征
来生成最终图像。在 DALL-E 的文章中,作者还提出了很多技术上的细节,例如,在最后挑选图片的时候,可以使用 CLIP 模型来选择与文本相似度最高的模型,以及分布式训练,混合精度训练等,具体细节可以查看原论文。

 

基于 GAN

 

生成对抗网络 ( GAN ,Generative Adversarial Networks) 由两个主要的模块构成:生成器和判别器。生成器负责生成一张图片,而判别器则负责判断这张图片质量,也就是判断是真实样本还是生成的虚假样本,通过逐步的迭代,左右互博,最终生成器可以生成越来越逼真的图像,而判别器则可以更加精准的判断图片的真假。GAN 的最大优势是其 不依赖于先验假设,而是通过迭代的方式逐渐学到数据的分布 [6] 。

 

最原始的GAN的定义为:

 

其中,

 

当我们固定
的时候,最大化
的含义是,数据如果来源于真实数据
,我们需要
要接近于 1,而当数据来源于生成器
的时候,我们需要它接近于 0,也就是说,判别器
需要将真实数据判断为 1 而将生成数据判断为 0,这个时候,可以对判别器
进行优化。而当我们固定判别器
的时候,最小化
,则需要生成器
生成的数据接近于真实数据。

 

简单来说, 一个 GAN 的训练流程如下 :

 

 

初始化一个生成器
和一个判别器
.

 

固定生成器
的参数, 只更新判别器
的参数。具体过程为:选择一部分真实样本,以及从生成器
得到一些生成的样本,送入到判别器
中,判别器
需要判断哪些样本为真实的,哪些样本为生成的,通过与真实结果的误差来优化判别器

 

固定判别器
的参数, 只更新生成器
的参数。具体过程为:使用生成器
生成一部分样本, 将生成的样本喂入到判别器
中,判别器会对进行判断,优化生成器
的参数,使得判别器将其判断为更加偏向于真实样本。

 

 

上文中介绍的 GAN 模型仅仅是最原始的 GAN,在后来的发展中,GAN 已经逐渐被用到各个领域,也产生了非常多的变种,接下来将会介绍一个非常知名的基于 GAN 的文本生成图像模型 VQGAN-CLIP。

 

 

VQGAN

 

上文中已经介绍了 GAN 的基本原理,而 VQGAN ( Vector Quantized Generative Adversarial Networks ) 则是一种 GAN 的变种(如下图所示) [7] ,其受到 VQ-VAE 的启发, 使用了 codebook 来学习离散表征 。

 

具体来说,会预先定义
个向量作为离散的特征查询表,当一张图片被送入到 CNN Encoder 中后,会得到
个图像的中间表征
,之后会在 Codebook 中去查询与其最相似的表征向量,得到
个表征
,其过程用公式可以描述为:

 

紧接着,CNN Decoder 会根据得到的表征
去重建图像。

 

 

上述步骤跟 VQ-VAE 非常像,而 VQGAN 与之不同的是,上述步骤仅仅对应于 GAN 中的生成器,因此,这里还需要一个判别器
,来对生成的图像进行判断,而与传统 GAN 不同的是, 这里的判别器不是对每张图片进行判断,而是对每一个图片的 Patch 进行判断 。

 

对于 VQGAN 中生成器的训练,其损失函数与 VQ-VAE 非常相似,其公式为:

 

 

VQGAN的训练损失函数定义为:

 

结合上述生成器的训练的损失函数,其完整公式可以表示为:

 

 

实际上,和 GAN 的损失函数还是非常一致的,不同的是, 这里的对于生成器部分的优化,需要使用与 VQ-VAE 一样的方法去进行 。

 

在训练好 VQGAN 之后,在生成的时候,可以直接初始化一个
去生成,然而,为了能够得到稳定的
,需要使用一个模型对先验进行学习,这里使用了 Transformer 模型来学习
中离散表征的序列,可以简单的将其建模为自回归模型
,这样,我们只需要给定一个初始的随机向量,就可以通过 Transfomer 模型生成完整的
,从而可以通过 CNN Decoder 模块生成最终的图像。

 

 

VQGAN-CLIP

 

VQGAN-CLIP 也是一个非常流行的文本生成图像模型,一些开放的文本生成图像平台使用的就是 VQGAN-CLIP [8] 。

 

VQGAN-CLIP 通过文本描述信息来对 VQGAN 模型进行引导,使其最终生成与文本描述非常相似的图片,其具体过程如下图所示:

 

 

具体来说,在最开始,需要初始化一张图片,其像素为随机生成,这个时候,模型是从 0 开始迭代,也可以初始化一张绘制好的原始图片,这个时候,模型的迭代相当于对这张图片进行重绘。通过 VQGAN 的 Encoder 模块,可以得到中间表征离散 Z-vector,这个上文中 VQGAN 中的
是一样的。

 

通过 CLIP 模型,来对比生成的图像特征与指定文本的相似度,来调节中间表征向量 Z-vector,从而使得 VQGAN 模块生成与文本描述一致的图片,从上图中看出,除了 VQGAN 和 CLIP 模块,还有 Random Crops  以及 Augmented Images,这个操作是为了增加图片的稳定性,而且实验证明,加了这两个操作之后,更利于优化。

 

基于 VQGAN-CLIP 生成的模型如下图所示,通过设置复杂的描述,可以生成质量非常高的图片。

 

 

 

DALL-E Mini

 

DALL-E Mini 是网友对 DALL-E 的复现版本 [8] ,不同的是,DALL-E Mini 并没有使用原始的 VQ-VAE,而是使用了 VQGAN, DALL-E-Mini 模型要远远小于原始 DALL-E 模型,使用的训练样本也相对较少 [9] 。

 

DALL-E-Mini 首先使用 BART 模型(一种Sequence-to-Sequence模型)来学习文本到图像的映射,将文本转换为离散图像表征。

 

 

在图像生成步骤中,可以直接将文本输入到 BART 中,然后得到图片离散表征,紧接着使用 VQ-GAN Decoder 模块,将离散图像表征解码为完整图像,之后在使用 CLIP 对图像进行筛选,得到最终的生成结果。

 

 

 

Parti

 

在 Imagen 刚出来后没多久(Imagen的介绍可以看扩散模型部分),Google 又继续提出了新的文本生成图像模型 Parti,其全称为「Pathways Autoregressive Text-to-Image」,直观来看,就是使用了 Google 最新提出的 Pathway 语言模型 [10] 。

 

 

与 Imagen 不同的是, Parti 又回归了原始文本生成图像的做法 ,不是直接使用文本表征作为条件扩散模型范式去生成图像,而是使用 Pathway 语言模型,学习文本表征到图像表征的映射,也就是像 DALL-E2 一样,学习一个先验模型,同时,Parti 使用的是基于 VQGAN 的方法,而不是扩散模型。

 

具体来说,Parti 首先训练一个 ViT-VQGAN 模型,之后使用 Pathway 语言模型学习文本到图像 token 的映射,由于 Pathway 语言模型强大的序列预测能力,其输出的图像表征非常出色,在预测过程中,只需将文本映射为图片表征,然后使用 ViT-VQGAN 解码器模块进行解码即可。

 

 

Parti 最大的特色就是 20B 的大模型,其参数量支持模型能够进行复杂语义理解,下图是不同参数量模型对于文本描述:「 一张身穿橙色连帽衫和蓝色太阳镜的袋鼠肖像照片站在悉尼歌剧院前的草地上,胸前举着写着“欢迎朋友”标语的牌子! 」 的生成效果,可以看出 20B 的大模型能够非常精准的理解 Prompt 的语义信息。

 

 

 

NUWA-Infinity

 

NUWA-Infinity 是微软亚洲亚洲研究院 NUWA 团队基于之前工作,研发出的无限视觉生成模型,其特点是, 可以对已有的画进行续画,尤其是对于风景画效果非常惊艳 ,同时,该模型还支持文本生成图像,动画生成等任务,不过由于其主要创新点在于图片续画,因此在这里只对这一功能进行详细介绍 [11] 。

 

 

为了实现这一功能,作者提出了全局自回归嵌套局部自回归的生成机制,其中,全局自回归建模视觉块之间的依赖 (patch-level) ,而局部自回归建模视觉 token 之间的依赖 (token-level) 。其公式表达为:

 

也就是一个全局自回归模型中(n个patch),嵌入了一个局部自回归模型(m个token)。

 

在 NUWA-Infinity 中,作者还提出了两个机制,Nearby Context Pool(NCP)和 Arbitrary Direction Controller (ADC)。其中,ADC 负责将图片分割成 patch 并决定 patch 的方向,如下图所示,左图为训练的时候的顺序定义,右图是推理的时候的顺序定义。

 

 

由于当图片尺寸变大之后,patch 的数量会超过自回归模型所能接收的最大长度,因此需要有一个增加新 patch 和移除旧 patch 的机制,这样就保证了自回归模型一直在需要生成的 patch 附近进行序列学习。

 

 

在模型的训练过程中,首先将图片分成 patch,然后,随机选择一种 patch 生成顺序,这对应于全局自回归操作。而对于每一个 patch,首先选择其邻近的 patch,加入位置编码以及文本信息,一起送入到自回归模型中,得到预测的中间离散表征
,同时,对于之前的 patch, 使用训练好的 VQ-GAN 生成中间离散表征
,而模型的目标则是让

足够接近。直观来说,模型本质上是在训练一个模型,其通过与当前 patch 的邻近的 patch 的中间离散表征,和文本表征,来预测当前 patch 的中间离散表征。

 

 

在推理过程中,对于图片续画任务,只需要将图片输入进模型,选择 K 个 patch 作为条件,对 NCP 进行初始化,然后就可以通过已有的选择的 patch 结合文本信息,来对下个patch进行预测,最后使用 VQGAN Decoder 来将预测的 patch 的中间离散表征解码成图片即可,通过不断的迭代,最终实现对图片的续画功能。

 

 

基于Diffusion Model

 

不同于 VQ-VAE,VQ-GAN, 扩散模型是当今文本生成图像领域的核心方法 ,当前最知名也最受欢迎的文本生成图像模型 Stable Diffusion,Disco-Diffusion,Mid-Journey,DALL-E2 等等,均基于扩散模型。在这部分,会对扩散模型的原理以及基于扩散模型的算法进行详细的介绍。

 

 

Diffusion Model

 

回忆上文提到的 VQ-VAE 以及 VQ-GAN,都是先通过编码器将图像映射到中间潜变量,然后解码器在通过中间潜变量进行还原。实际上,扩散模型做的事情本质上是一样的,不同的是,扩散模型完全使用了全新的思路来实现这个目标 [12,13.14] 。

 

在扩散模型中,主要有两个过程组成, 前向扩散过程,反向去噪过程 ,前向扩散过程主要是将一张图片变成随机噪音,而逆向去噪过程则是将一张随机噪音的图片还原为一张完整的图片。

 

 

为了帮助理解,这里选择最经典的扩散模型进行介绍,关于扩散模型的具体推导,可以参考 [13,14] 。

 

「前向扩散过程」

 

前向扩散过程的本质就是 在原始图像上,随机添加噪音 ,通过 T 步迭代,最终将原始图片的分布变成标准高斯分布
具体来说,给定初始数据分布
,增加噪声的过程可以定义为如下公式:

 

 

其中:
,在这个过程中,随着 t 的不断增大,最终数据分布 x 变成了一个各向独立的高斯分布。

 

值得注意的是,这里正向扩散的过程,由于参数
是预先定义好的,前向过程没有任何需要学习的参数,因此每一时刻的结果都可以直接计算出来,这里首先定义
,则:

 

 

因此得到前向扩散过程的分布表达式为:

 

「逆向扩散过程」

 

逆向过程就是还原的过程,也就是 从高斯噪声中恢复原始分布的过程 ,实际上,只要学习
分布即可,可以通过一个可学习的神经网络来对其进行拟合,其定义如下:

 

 

其中,
由于无法直接估计,因此一般会使用神经网络模型来进行逼近,需要注意的是,在原始论文中,方差是无需训练的,被预选设置好了:
,而这里

 

由于隐马尔可夫的性质,
是条件独立的,因此
,而这里,后一项则可以直接使用一个表达式来表达出来,从而使得的们可以进行后面的优化计算,这里将表达式写成:

 

通过推导可以得到:(详细可以看 [13,14] )

 

 

扩散模型本质上也是在学习数据分布,因此其对数似然可以表示为:

 

 

最终,其 loss 可以表示为 [13,14] :

 

 

经过化简,可以得到最后 loss 表达形式,从公式形态来看,其目标就是在预测每一步的噪音:

 

 

「训练流程」

 

直观上理解,扩散模型其实是通过一个神经网络
,来预测每一步扩散模型中所添加的噪音,其算法流程如下:

 

 

在完成训练之后,只需要通过重参数化技巧,进行采样操作即可,具体流程如上边右图所示,通过不断的「减去」模型预测的噪音,可以逐渐的生成一张完整的图片。

 

「Classifier-Free Guidance Diffusion」

 

基于传统的扩散模型,后续又有一些改进操作,这些改进操作使得扩散模型被广泛的应用于文本生成图像任务中。其中,最常用的改进版本为 Classifier-Free Guidance Diffusion [15] 。

 

上述扩散模型通过
来对噪音进行估计,而引导扩散模型,则需要将引导条件
,加入到模型输入中,因此到的
,而 Classifier-Free Guidance Diffusion 则结和了条件和无条件噪声估计模型,其定义为:

 

这样做的优点是 训练过程非常稳定,且摆脱了分类器的限制 (实际上等价于学习了一个隐含的分类器),缺点是,成本比较高,相当于每次要生成两个输出,尽管如此,后面的大部份知名文本生成图像模型,都是基于这个方法进行的。

 

 

GLIDE

 

GLIDE 使用了 文本作为条件,来实现文本引导 的扩散模型,在文本引导上面,文中主要使用了两种策略,Classifier-Free Diffusion Guidence 以及 CLIP 来作为条件监督,同时使用了更大的模型,在数据量上,和DALL-E 相似 [16] 。

 

GLIDE 的核心就是 Classifier-Free Diffusion Guidence,其使用文本描述作为引导,来训练一个扩散模型,其定义为:

 

其中,y是一段文本描述。

 

由于 GLIDE 方法提出较早,相对于现有很多方法,GLIDE 模型的效果并不是很好,下面是 GLIDE 生成的图像示例。

 

 

GLIDE 还支持通过 选取区域+文本Prompt 来对图像进行编辑操作,可以看出效果也不错。使用过程中,只需要将遮蔽区域进行 mask,以及剩下的图片一起送入到网络中,即可产生补全之后的图片。

 

 

此外,GLIDE 的语义理解能力并不是很强,在一些少见的文本描述下,很难产生合乎逻辑的图像,而 DALL-E2 在这方面的能力上,要远超 GLIDE

 

 

 

DALL-E2

 

DALL-E2 是 OpenAI 最新 AI 生成图像模型,其最大的特色是 模型具有惊人的理解力和创造力 , 其参数大约 3.5B , 相对于上一代版本,DALL-E2 可以生成4倍分倍率的图片,且非常贴合语义信息。作者使用了人工评测方法,让志愿者看1000张图,71.7% 的人认为其更加匹配文本描述 ,88.8% 认为画的图相对于上一代版本更加好看 [17,18] 。

 

 

DALL-E2 由三个模块组成:

 

CLIP模型,对齐图片文本表征

 

先验模型,接收文本信息,将其转换成 CLIP 图像表征

 

扩散模型,接受图像表征,来生成完整图像

 

 

DALL-E2 的训练过程为:

 

训练一个 CLIP 模型,使其能够对齐文本和图片特征。

 

训练一个先验模型,由自回归模型或者一个扩散先验模型(实验证明,扩散先验模型表现更好),其功能是将文本表征映射为图片表征。

 

训练一个扩散解码模型,其目标是根据图片表征,还原原始图片。

 

在训练完成之后,推理过程就比较直接了,首先使用CLIP 文本编码器,获得文本编码,之后使用先验模型将文本编码映射为图片编码,最后使用扩散解码器用图片编码生成完整图片。注意这里扩散解码模型使用的是经过修改的 GLIDE 扩散模型,其生成的图像尺寸为 64×64,然后使用两个上采样扩散模型将其上采样至 256×256,以及 1024×1024.

 

DALL-E2 原论文中也提到了其许多不足,例如容易将物体和属性混淆,无法精确的将文本放置到图像中,然而,这些都无法阻止大家对文本生成图像的热情,DALL-E2 也被广泛应用到各种艺术创作过程中。

 

 

Imagen

 

在 DALL-E2 提出没多久,Google 就提出了一个新的文本生成图像模型 Imagen [19] ,论文中提到, 其生成的图片相对于 DALL-E2 真实感和语言理解能力都更加强大 (使用一种新的评测方法 DrawBench)。

 

 

Imagen 的图像生成流程和 DALL-E2 非常像,首先将文本进行编码表征,之后使用扩散模型将表征映射成为完整图像,同时会通过两个扩散模型来进一步提高分辨率。与 DALL-E2 不同的是, Imagen 使用了 T5-XXL 模型直接编码文本信息,然后使用条件扩散模型,直接用文本编码生成图像。因此,在 Imagen 中,无需学习先验模型。

 

 

由于直接使用 T5-XXL 模型,其语义知识相对于 CLIP 要丰富很多(图文匹配数据集数量要远远少于纯文本数据集数量),因此 Imagen 相对于 DALL-E2 在语义保真度上做的更好。同时,作者也发现,增大语言模型,可以有效的提高样本的语义保真度。

 

 

Stable Diffusion

 

Stable Diffusion 是由 Stability.ai 于近期开放的文本生成图像模型,由于其 交互简单,生成速度快 ,极大的降低了使用门槛,而且同时还保持了令人惊讶的生成效果,从而掀起了一股 AI 创作热潮 [20] 。

 

 

©本文作者用Stable Diffusion 生成的图片

 

Stable Diffusion 是基于之前 Latent Diffusion 模型进行改进的,上文中提到的扩散模型的特点是反向去噪过程速度较慢,其扩散过程是在像素空间进行,当图片分辨率变大时,速度会变得非常慢。而 Latent Diffusion 模型则考虑在较低维度的潜在空间中,进行扩散过程,这样就极大的减轻了训练以及推理成本。

 

Stable Diffusion 由三个部分组成:

 

1. VAE

 

其作用是将图像转换为低维表示形式,从而使得扩散过程是在这个低维表征中进行的,扩散完成之后,在通过VAE 解码器,将其解码成图片。

 

2. U-Net 网络

 

U-Net 是扩散模型的主干网络,其作用是对噪音进行预测,从而实现反向去噪过程

 

3. 文本编码器CLIP

 

主要负责将文本转换为U-Net可以理解的表征形式,从而引导U-Net进行扩散。

 

Stable Diffusion 的具体推理过程如下图所示 [19] ,首先使用 CLIP 将文本转换为表征形式,然后引导扩散模型 U-Net 在低维表征(64×64)上进行扩散过程,之后将扩散之后的低维表征送入到 VAE 中的解码器部分,从而实现图像生成。

 

 

模型试玩

 

了解了文本生成图像背后的算法原理,也可以试玩一下开源模型,这里列举了一些当前比较流行且易于使用的模型链接,其中,效果最好且交互最便捷的则是 Stable Diffusion 和 MidJourney。

 

VQGAN-CLIP

 

https://nightcafe.studio/

 

DALL-E-Mini

 

https://huggingface.co/spaces/dalle-mini/dalle-mini

 

DALL-E2

 

https://github.com/openai/dall-e  ( 需要等 Waitlis t)

 

Stable Diffusion

 

https://beta.dreamstudio.ai/dream

 

Disco-Diffusion

 

https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb

 

MidJourney

 

https://www.midjourney.com/home/

 

NUWA

 

https://nuwa-infinity.microsoft.com/#/ (暂未开放,可以保持关注)

 

现有的文本生成图像模型主要基于三类基础算法:VQ-GAN,VQ-VAE 以及扩散模型,由于扩散模型能够生成丰富多样且质量高的图形,已经成为文本生成图像领域的核心方法。目前看来,扩散模型由于每次生成需要迭代,因此速度较慢,这是限制扩散模型广泛使用的一个主要问题之一。但是随着一些新的技术出现,例如 Stable Diffusion 使用 Latent Diffusion, 扩散模型的生成时间已经被逐渐缩短,相信在未来,扩散模型会给 AI 艺术生成领域带来一场新的变革。

 

参考文献

 

[1] An Introduction to Autoencoders

 

[2] https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73

 

[3] Neural Discrete Representation Learning

 

[4] https://openai.com/blog/dall-e/

 

[5] Zero-Shot Text-to-Image Generation

 

[6] Generative adversarial nets

 

[7] Taming Transformers for High-Resolution Image Synthesis

 

[8] VQGAN-CLIP: Open Domain Image Generation and Editing with Natural Language Guidance

 

[9] https://wandb.ai/dalle-mini/dalle-mini/reports/DALL-E-mini–Vmlldzo4NjIxODA

 

[10] Scaling Autoregressive Models for Content-Rich Text-to-Image Generation

 

[11] NUWA-Infinity: Autoregressive over Autoregressive Generation for Infinite Visual Synthesis

 

[12] Denoising Diffusion Probabilistic Models

 

[13] https://lilianweng.github.io/posts/2021-07-11-diffusion-models/#nice

 

[14] https://huggingface.co/blog/annotated-diffusion

 

[15] Classifier-Free Diffusion Guidance

 

[16] GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models

 

[17] Hierarchical Text-Conditional Image Generation with CLIP Latents

 

[18] https://openai.com/dall-e-2/

 

[19] Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding

 

[20] https://github.com/sd-webui/stable-diffusion-webui

 

[21] https://huggingface.co/blog/stable_diffusion

 

作者:胡鹏博

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。