从 DALL·E 到 Stable Diffusion:文本到图像生成模型是如何工作的?

技术

点击下方 卡片 ,关注“ 慢慢学AIGC ”

引言

当 OpenAI 在 2021 年初发布 DALL·E 时,机器学习社区为之疯狂。在此之前的几年里,已经见证了能够根据书面说明生成越来越好(和更逼真)图像的模型取得了很多进展,但是 DALL·E 以前所未有的范围和灵活性在内容和风格上生成图像,达到了人们对于文本到图像生成模型的极致预期…… 一年后,DALL·E 已经成为了遥远的记忆,而一种全新的生成模型已经彻底颠覆了图像生成的最新技术水平。

picture.image

那么,发生了什么变化呢?在机器学习研究中,一年的时间相当于其他领域约十年的时间 —— 但是,即使对我们来说,这样短时间内的性能飞跃也是巨大的。当分析最新模型之间的相似之处时,答案不难找到:通过扩散模型完全新颖的方法已经浮出水面 —— 并且将会一直存在。

如果你在过去几个月里没有生活在石头下,那么 DALL·E 2、Imagen 和 Stable Diffusion 这些名字应该听起来耳熟。每一个都引发了一波新的几周长的 Twitter 讨论,讨论架构细节并展示了超越了 AI 社区界限的结果。

在这篇博客文章中,我们将一窥扩散用于生成图像的工作原理,准确地解释这三种模型之间的差异,并分析这些模型可能在长期内如何帮助公司和个人完成真实世界的任务。如果你不擅长数学,不要犹豫跟着阅读 —— 我们会尽量将其减少!

DALL·E 的实现方式

为了更好地理解发生了什么变化,让我们首先深入了解一下 OpenAI 最初的 DALL·E 是如何工作的。

DALL·E 于 2021 年 1 月发布,紧随几个月前发布的 GPT-3 之后, DALL·E 利用了一个 Transformer(文本编码和处理序列输入的事实标准选择)以及一个变分自动编码器(VAE,一个被训练为将图像编码为低维概率分布然后解码的模型),可以通过从中间分布中采样来通过解码器生成新图像。

Transformer 在一系列文本标记和图像标记的连接上被自回归地训练(即使它试图基于过去的值来预测未来的值),其中第二个是在之前训练的 VAE 获得的。在采样期间,Transformer 被给予完整的文本提示,并逐个生成图像中的每个标记,稍后由 VAE 解码以获取完整的输出图像。

在发布时,DALL·E 在卡通/艺术风格图像生成方面展示了真正令人惊叹的结果,但生成照片级真实图像时效果差强人意。

picture.image

2021 年在图像生成领域并没有太多新闻,除了 OpenAI 发表的名为 GLIDE 的一篇论文。GLIDE,诚然,当时在我们的雷达下飞过,提出了使用 扩散模型 来解决文本条件图像合成问题,将扩散过程引导到研究人员希望最终图像看起来像的内容。然后, DALL·E 2、Imagen 和 Stable Diffusion 在各自的模型中使用了这种方法或其变体 。在深入研究这种引导方式的工作原理之前,让我们快速回顾一下扩散模型是什么。

扩散是如何工作的?

扩散模型是一种生成模型,能够从潜在变量合成高质量的图像。 等等,这不是 GANs 做的吗?GANs 和扩散模型(以及 VAEs 和基于流的模型,我们也是如此)在假装从随机性中产生图像方面是相似的 —— 但在其他方面完全不同。

GAN 方法长期以来一直是生成图像的标准方法,特别是在需要生成属于紧密分布的图像时,比如人脸或狗的品种。我们之前写过关于 GANs 的文章,但简而言之,它们的训练包括生成两个模型,称为生成器和判别器,并让生成器尝试生成可以欺骗判别器,使其认为这些图像来自正在训练的真实数据分布的图像样本。尽管让两个模型相互训练的范式非常有趣,但 GANs 也以特别难以训练而闻名,生成器直接不学习或者陷入模式崩溃(即每次都学习生成相同的图像)非常常见 。对于感兴趣的读者,在这个 Twitter 线程(https://twitter.com/tomgoldsteincs/status/1560334207578161152)中提到了一些原因。

另一方面,扩散模型包括通过逐渐向图像添加高斯噪声来生成一系列越来越嘈杂的图像,然后训练模型以预测从一个步骤到下一个步骤的图像中添加的噪声。如果步骤足够小,我们可以确保在序列结束时获得的图像可以由与噪声采样相同的高斯近似 —— 这使我们能够通过从相同分布中采样然后将其通过训练好的模型传递 N 次来生成全新的图像。我们不会在这里详细讨论其中的数学,但我们建议查看 Lilian Weng 的博客文章(https://lilianweng.github.io/posts/2021-07-11-diffusion-models/),如果你对此感兴趣的话!

picture.image

不仅我们在这篇文章中将要探讨的所有方法都使用扩散,而且它们还都使用相同模型的变体来预测链中每个步骤中添加到图像中的噪声:U-Net。2015 年出现,最初被提出作为解决生物医学图像分割问题的一种新方法,U-Net 具有相同的输入和输出形状的特征,这使它们非常适合输入图像并获取每个像素添加了多少噪声。它们由一堆残差层和下采样卷积组成,后面跟着一堆上采样卷积的残差层,这些层之间通过跳跃连接链接,连接了网络的两个对称半部分的空间大小相同的层。收缩路径允许捕获输入图像的一般上下文,而跳跃连接则为上采样层提供了在每个步骤中所需的详细信息。

picture.image

我们如何引导扩散过程?

我们已经了解了扩散如何帮助我们从随机噪声生成图像,但如果只有这些还远远不够,我们最终会得到一个只能生成随机图像的模型。我们如何利用这个模型来合成与我们训练数据中的类名称、一段文本或另一幅图像相对应的图像呢?这就是之前提到的 GLIDE 论文提出的两个重要概念的作用:

  • 条件扩散,它包括通过输入层和内部层的注意力向扩散模型提供条件数据(如类标签或文本嵌入),以帮助其生成与该数据相对应的样本。
  • 分类器引导,它包括将由分类器预测的目标类别的梯度添加到扩散模型预测的噪声中,从而在整个过程中将扩散过程引导到预期类别。

GLIDE提出了两种新颖的引导扩散模型朝着我们喜欢的标题方向发展的方法:

  • CLIP 引导的工作方式与分类器引导类似,只是它将部分生成的图像与标题之间的 CLIP 损失的梯度相加(该损失度量两者之间的相似度 —— 如果你不了解 CLIP 的工作原理,我们强烈推荐在 OpenAI 的博客 https://openai.com/index/clip/ 中了解!)
  • 无分类器引导是通过在训练期间随机丢弃标题(从而获得既能够在有条件的情况下工作,又能够在无条件的情况下工作的模型),在推断期间将图像通过模型同时进行有条件和无条件的传递标题,取两者之间的差异并将最终预测推向有条件预测的方向。

值得注意的是,扩散模型可以同时使用条件和引导,作者发现在他们的实验中,文本条件加上无分类器引导的组合在逼真性和标题相似性方面表现最佳。

DALL·E 2

好消息 —— 如果你迄今为止一直跟随并理解了引导扩散的工作原理,那么你已经了解了 DALL·E 2、Imagen 和 Stable Diffusion 是如何工作的!这些模型都使用条件扩散模型来达到我们已经习以为常的惊人结果。但是,魔鬼在于细节,所以让我们深入探讨一下每种方法的独特之处。

由 OpenAI 于 2022 年 4 月发布,比前任晚了一年多,从外观上来看,这个模型应该被称为 GLIDE 2 —— 但这听起来不够吸引人,不是吗?DALL·E 2 建立在 GLIDE 奠定的基础之上,通过使用 CLIP 图像嵌入来对扩散过程进行条件约束,而不是像 GLIDE 中提出的原始文本嵌入。

picture.image

为了获得这个图像嵌入,CLIP 模型在 CLIP 和 DALL·E 的结合数据集上进行了训练,并且一个称为先验的辅助模型(尝试了自回归和扩散变体)被训练以根据编码的标题和它们的 CLIP 嵌入来生成图像嵌入。然后,这个图像嵌入(以及可选的编码标题)被用来对生成最终图像的扩散模型进行条件约束,称为解码器。同时,同样的条件信息也启用了无分类器引导,根据论文,“大大改善了样本质量”。

使用生成的 CLIP 图像嵌入作为条件不仅提高了样本多样性,与 GLIDE 相比还能够实现一些很酷的副产品,比如通过编码和解码创建输入图像的变化或通过插值它们的嵌入生成一对图像或标题之间的变化。

picture.image

picture.image

picture.image

尽管 DALL·E 2 明显解决了其前身在生成逼真图片方面的问题,但它也有一些局限性。它在一些多模态学习中的常见问题中遇到了困难,比如 组合性和可变绑定 —— 令人惊讶的是,它在 生成书面文本 方面也存在问题。

picture.image

Imagen

如果你觉得 DALL·E 2 的方法似乎过于复杂,谷歌在此方面同意。Imange 仅在其竞争对手发布的一个月后于 2022 年 5 月发布,并声称具有“前所未有的逼真度和深层次的语言理解”,Imange 通过简单地将其 定制的文本编码器替换为在纯文本语料库上预训练的通用大型语言模型 来改进 GLIDE。

picture.image

与 GLIDE 的作者在其训练计划中将一个 1.2B 参数的 Transformer 在 DALL·E 的数据集上训练相比,Imagen 决定使用一个冻结的 T5-XXL 模型,这是一个巨大的 4.6B 参数的 Transformer,它是在一个更大的数据集上进行训练的。在发表的论文中,他们表示发现 通用大型语言模型对于文本到图像生成的文本编码器来说效果出奇的好 ,而且将 冻结的文本编码器的规模放大比将图像扩散模型的规模放大更显著地提高了样本质量 。除了核心文本编码器和文本到图像模型之外,还使用了另外两个扩散模型将输出图像从 64x64 缩放到令人惊叹的 1024x1024 像素 —— 这是常见的做法,其他方法也是这样做的。

picture.image

Imagen另外还引入了:

  • 动态阈值,一种巧妙的技巧,允许在采样过程中进行更强的引导,以提高逼真度和文本对齐性,而不会生成过度饱和的图像。
  • 高效的 U-Net,一个新的 U-Net,更简单,更节省内存,收敛速度更快。
  • DrawBench,一个建议的一组提示,用于标准化文本到图像模型的评估,根据这些提示,Imagen 在当时超越了所有其他现有的选择。

虽然图像生成的领域本身已经足够竞争激烈,但 Google 研究部门的另一个团队与 Imagen 的团队同时进行了工作,通过发布 Parti 来给这个领域火上添柴。Parti 采用了原始 DALL·E 所采用的自回归方法(但将其扩展到了令人惊叹的 20B 参数!)而不是扩散方法,因此我们在这篇文章中不会详细探讨它,但在生成来自更长输入描述的图像方面,它和基于扩散的同行一样出色,甚至更出色!

picture.image

Stable Diffusion

尽管 DALL·E 2、Imagen 和 Parti 产生了惊人的结果,但前者目前只针对少数选择用户提供了 有限的免费访问权限 ,而后者根本 没有对外发布 。虽然看到这些领域取得了巨大进步本身就是一个壮举,但目前外部组织或个人不可能对其进行后续研究,也不可能构建利用这种技术的人工智能产品。嗯,直到几天前,Stability AI 开源了 Stable Diffusion。

Stable Diffusion 的模型不仅是公开的 (而且公开确实意味着公开 —— 代码和权重都已发布,通过 HuggingFace 的 diffusers 库可以在几分钟内设置好该模型!) ,而且它还足够小,可以放入消费级 GPU 中 —— 这绝对不适用于前两种方法使用的庞大模型。我们显然不会错过在我们自己的硬件上尝试并生成一些酷炫的恐龙的机会,它们可能最终会装饰我们办公室的墙壁。

picture.image

你对以这种方式以开源的方式发布数月的研究有多重要还不满意吗?自发布以来,用户显然已经使用该模型创建了真正的杰作 —— 甚至是以视频格式,从而产生了可以称之为新艺术形式的产物。但 Stability 对其模型的许可不仅允许将其免费用于个人目的:它可以被整合到新的或现有的产品中,以向不那么精通技术的用户展示其全部功能!本文提供了一个全面的清单,其中列出了基于 Stable Diffusion 已经出现并且在未来几个月内肯定会不断涌现和发展的各种服务、用户界面和集成。

那么 Stable Diffusion 究竟如何将与 DALL·E 2 相媲美的模型压缩到如此小的尺寸呢?秘密在于 潜在扩散模型 ,今年早些时候发表的一篇论文发现, 直接在图像的像素空间上运行扩散不仅超级缓慢且计算成本高昂,而且是不必要的 。相反,他们建议在强大的预训练自动编码器的较低维潜在空间上应用扩散模型,然后使用自动编码器本身从中解码最终图像。这样做的好处在于 将压缩学习与生成学习分离开来 ——即让扩散模型在与图像空间相等但具有大大降低的计算复杂度的空间上生成样本,并让经过验证的自动编码器来完成获取全尺寸最终图像的繁重工作。

picture.image

商业应用

我们明白 —— 我们已经非常擅长根据简短的描述生成酷炫的图像了……但是为了什么呢?这项技术有什么真正的应用吗?还是仅仅是为了炫耀?

根据 TechCrunch 上最近的一篇文章,一些企业已经开始尝试使用 DALL·E 2 的 beta 版本,测试它稳定到足以融入他们的产品中的可能用途。StitchFix 已经尝试使用该模型根据顾客的描述生成服装图像,然后让设计师将其与库存中的商品进行匹配。Klaviyo、Cosmopolitan 和 Heinz都尝试过 DALL·E 2 进行营销目的,让其生成产品可视化、杂志封面和品牌艺术,结果参差不齐。顺便说一句,我们已经与零售行业的公司合作了一段时间,并且我们整理了一个充满超越文本到图像生成模型的用例的指南。

这些公司之间的普遍共识似乎是,该模型为使用它的人提供了价值,但当用作创意过程中生成最终图像的工具时,而不是用于直接生成最终图像时。能够为同一个提示生成几种不同的变体可以提高创造力,或者为最终产品应该如何看起来提供一个原始的想法 —— 即使它们中没有一个足够好以至于不经过修改就可以在商业上使用。值得一提的是, 提示工程,即制定正确提示的艺术,以使生成模型输出您想要的东西几乎与模型本身的能力一样重要 ,甚至有人写了书来帮助用户充分利用它们!

扩散模型在游戏世界中可能有未来,一些设计师正在尝试使用它们生成视频游戏资产,然后对其进行动画处理。尽管这引发了一个古老的问题,即这些系统是否可以用来取代他们的人类同行,但看起来双方都朝着合作的方向发展。看起来,如果有人因为这一领域的进步而感到恐慌,那应该是运营库存照片网站的人,而不是平面设计师和数字艺术家。

这些模型的另一个可能应用来自它们的修补能力,它允许根据文本提示和蒙版对图像进行修改。这不仅可以实现自动照片编辑,还可以逐步从头开始创建复杂的场景。人们不禁想象这样一个工具被商业化的方式与 DALL·E 相同 —— 甚至成为您最喜欢的照片编辑软件中的一个新功能。

最后的思考

今年对生成式人工智能来说是一次非常有意义的旅程。这些模型在短时间内的能力提高真是令人难以置信 —— 而且你现在甚至能够在消费级 GPU 上免费运行其中一个。有几家组织和数百名才华横溢的个人竞相竞争,以求超越彼此,这完美地证明了竞争推动创新。

多年来,人们认为人工智能可能是解决一些具有挑战性的问题的工具,但在需要人类技能或创造力的软问题方面,它可能帮不上什么忙。现在看来,人工智能的进步又一次让我们感到惊讶,提醒我们事物的发展方向很难预测 —— 即使对于领域专家来说也是如此。

我们希望这种新型强大的人工智能模型可以赋予更多的个人创造力,为他们提供工具 —— 即使在几个月前,这些只是一个梦。


点击下方 卡片 ,关注“ 慢慢学AIGC ”

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
如何利用云原生构建 AIGC 业务基石
AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC、PGC之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。而 AIGC 业务的部署也面临着异构资源管理、机器学习流程管理等问题,本次分享将和大家分享如何使用云原生技术构建 AIGC 业务。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论