系列文章链接:

AI艺术的背后:详解文本生成图像模型【基于 VQ-VAE】
AI艺术的背后:详解文本生成图像模型【基于GAN】
AI艺术的背后:详解文本生成图像模型【基于Diffusion Model】

导言

AI 艺术生成已经开始走进大众的视野中。在过去一年里,出现了大量的文本生成图像模型,尤其是随着 Stable Diffusion 以及 Midjourney 的出现,带起了一股 AI 艺术创作热潮,甚至很多艺术家也开始尝试用 AI 来辅助艺术创作。在本文中,将会系统梳理近几年出现的文本生成图像算法,帮助大家深入了解其背后的原理。

基于 VQ-VAE

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

AE

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

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

VAE

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

VAE 假设中间表征 zzz 是一个正态分布,因此,编码器部分需要将原图 xxx 映射为正态分布 N(μx,σx)N(\mu_x, \sigma_x)N(μx​,σx​) ,通过重参数技巧,得到采样后的中间表征 z=μx+σx∗ϵz = \mu_x+\sigma_x * \epsilonz=μx​+σx​∗ϵ , 其中 ϵ\epsilonϵ 采样于标准整体分布 N(0,I)N(0, I)N(0,I) 。紧接着,解码器通过中间表征 z 进行解码操作,得到原图的重建。VAE 的损失函数定义为:
loss=∣∣x−x′∣∣2+KL[N(μx,σx),N(0,I)]loss = ||x-x'||^2 + KL[N(\mu_x, \sigma_x), N(0, I)]loss=∣∣x−x′∣∣2+KL[N(μx​,σx​),N(0,I)]

其中,KL[N(μx,σx),N(0,I)]=log⁡1σ+σ2+μ22−12KL[N(\mu_x, \sigma_x), N(0, I)] = \log \frac1\sigma + \frac{\sigma^2+\mu^2}2 - \frac12 KL[N(μx​,σx​),N(0,I)]=logσ1​+2σ2+μ2​−21​

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

VQ-VAE

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

VQ-VAE 的算法流程为:

  1. 首先设置 K 个向量作为可查询的 Codebook。
  2. 输入图片通过编码器 CNN 来得到 N 个中间表征 ze(x)z_e(x)ze​(x) ,然后通过最邻近算法,在Codebook 中查询与这个 N 个中间表征最相似的向量。
  3. 将 Codebook 中查询的相似向量放到对应 ze(x)z_e(x)ze​(x) 的位置上,得到 zq(x)z_q(x)zq​(x) 。
  4. 解码器通过得到的中间表征 zq(x)z_q(x)zq​(x) 重建图片。

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

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

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

在 VAE 中,由于中间表征 zzz 服从标准正态分布,因此在生成的时候,只需要在标准正态分布中随机采样即可。而在 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 第一代最大的特色是对语义的理解非常出色,以及可以生成各种非常规但是又符合语义信息的图像45

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

  1. 训练一个 dVAE(文章里面称为 dVAE,实际上是一个 VQ-VAE,这里不再赘述),其中,Codebook 的数量为 8192
  2. 训练一个自回归模型,这里文章中使用的是Transformer,通过输入文本,来预测中间表征 zzz

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


  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 ↩︎

AI艺术的背后:详解文本生成图像模型【基于 VQ-VAE】相关推荐

  1. AI艺术的背后:详解文本生成图像模型【基于 Diffusion Model】

    系列文章链接: AI艺术的背后:详解文本生成图像模型[基于 VQ-VAE] AI艺术的背后:详解文本生成图像模型[基于GAN] AI艺术的背后:详解文本生成图像模型[基于Diffusion Model ...

  2. AI艺术的背后:详解文本生成图像模型【基于GAN】

    系列文章链接: AI艺术的背后:详解文本生成图像模型[基于 VQ-VAE] AI艺术的背后:详解文本生成图像模型[基于GAN] AI艺术的背后:详解文本生成图像模型[基于Diffusion Model ...

  3. 重磅!2022年剑桥AI全景报告出炉,文本生成图像掀起新风暴!

    作者 | Nathan Benaich.Ian Hogarth 编译 | 杨阳 出品 | AI科技大本营(ID:rgznai100) 日前,2022年<State of AI Report> ...

  4. 大象在飞吗?如何解决AI作画中的歧义问题 文本生成图像的消歧方法 Resolving Ambiguities in Text-to-Image Generative Models

    自然语言天生包含固有的歧义.不同类型的歧义可归因于语法.词义.结构等等,这对文本生成图像的过程也会带来较大的歧义. 最近看到一篇文章研究如何解决文本到图像生成模型中的歧义问题,名为<Is the ...

  5. 苹果的「AI 建筑师」GAUDI:根据文本生成 3D 场景

    作者:李梅  |  编辑:陈彩娴  |  转载自:AI科技评论(aitechtalk) 如今,每隔一段时间就有新的文本生成图像模型释出,个个效果都很强大,每每惊艳众人,这个领域已经是卷上天了. 不过, ...

  6. 缩小规模,OpenAI文本生成图像新模型GLIDE用35亿参数媲美DALL-E

    视学算法报道 编辑:陈萍.小舟 模型的参数规模并不需要那么大. 从年初 OpenAI 刷屏社区的 DALL-E 到英伟达生成逼真摄影的 GauGAN2,文本生成图像可谓是今年大火的一个研究方向.现在 ...

  7. 引燃AI社区,不用跨界也能从文本生成图像,OpenAI新模型打破自然语言与视觉次元壁...

    视学算法报道 作者:魔王.杜伟.蛋酱 艺术创作的事,以后人类只要动手打几个字,其他的交给 AI 就行了. 自然语言与视觉的次元壁正在被打破.这不,OpenAI 最近连发大招,提出两个连接文本与图像的神 ...

  8. AI画师技术又精进了? AI画师三维版试玩——Dreamfields和DreamFusion向文本生成3D模型领域进发

    0.AI画师二维版的出圈 最近AI画师的杰出表现让人惊讶无比,2022虽然不是ai绘图这项技术诞生的时间,但却是到目前为止最爆火出圈的绘图元年,现在市场上也已经有了很多成熟的AI绘画APP:用户仅需打 ...

  9. Windows下文本生成图像AI画图尝鲜体验

    工具库 transformers 的开源方 Hugging Face 发布了一个专注于 diffuser 模型的开源库,我们可以基于它,仅仅通过几行代码就开始生成自己的艺术作画.不过这个 diffus ...

最新文章

  1. warpPerspective函数
  2. Centos memcached的php拓展 管理界面
  3. 主题切换时如何主动去刷新一些资源?
  4. 如何应用大数据分析平台
  5. JAVA入门[14]-Spring MVC AOP
  6. 在matlab中实现PCA算法
  7. MCS:连续随机变量——Beta分布
  8. winmail邮件服务器的搭建,搭建Winmail邮件系统
  9. 关于 HenCoder
  10. C# RSA2048 公钥加密,私钥解密
  11. 电视浏览器Emotn V1.0.0.2+悟空跨屏电视输入法
  12. 【C++】多态之组合与聚合
  13. 树莓派 teamviewer 使用代理服务器上网
  14. 用MATLAB画nyquist图时,怎样只花出一半的图?
  15. Android——下载apk文件,并在通知栏显示下载进度
  16. java blackjack card game_Java BlackJack Game Ace值
  17. Win10连接投影仪画面不是全屏怎么办
  18. 对发了offer,而没有来入职的应聘者,现在再次来应聘,如果你是面试官,你会录用吗?...
  19. 百度之星2015资格赛 列变位法解密
  20. json转换格式错误

热门文章

  1. 公众帐号被系统冻结后,如何解绑管理员?
  2. linux下I2C驱动
  3. linux下i2c驱动架构全面分析,linux I2C驱动 :整体架构(1)
  4. 催款锁机程序信捷12轴设备程序一共十级密码到时间锁机 含一屏多机和到时间锁机程序
  5. php影视源码支持西瓜视频,Ctcms关于增加西瓜影音以及其他P2P播放器的方法
  6. 神经网络给图片生成标题,神经网络提取图片特征
  7. Linux驱动学习之:WDT(watchdog)驱动
  8. DaDianNao: A Machine-Learning Supercomputer
  9. 细数YOLOv5在使用过程中自己改动的部分
  10. 计算机专业的人的优势