在之前的四篇“Generative AI 新世界”中,咱们率领大家一起摸索了生成式 AI(Generative AI),以及大型语言模型(LLMs)的全新世界概览。并在文本生成(Text Generation)畛域做了一些概述、相干论文解读、以及在亚马逊云科技的落地实际和入手试验。
亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库! |
从本期文章开始,咱们将一起摸索生成式 AI(Generative AI)的另一个提高迅速的畛域:文生图(Text-to-Image)畛域。咱们将用三个系列文章的篇幅,来一起洞察在文生图(Text-to-Image)畛域的前世今生、相干论文解读、以及在亚马逊云科技的落地实际和理论代码实现展现等。
CLIP:基于比照文本 - 图像对的预训练
2021 年之前,在自然语言解决 (Natural Language Processing) 畛域有很多预训练方法都取得了胜利。例如,GPT-3 的 175B 从网上收集了近 5 亿 tokens 进行预训练,在很多上游工作上实现 SOTA (State-of-the-Art) 性能和 Zero-Shot Learning。这阐明从海量互联网数据 (web-scale) 中学习,是能够超过高质量的人工标注 NLP 数据集的。
然而在计算机视觉 (Computer Vision) 畛域的预训练模型还是次要基于人工标注的 ImageNet 数据进行训练。因为人工标注的工作量微小,许多科学家们开始构想:如何构建更为高效、便捷的形式用于训练视觉表征模型呢?
2021 年 OpenAI 发表的论文 《Learning Transferable Visual Models From Natural Language Supervision》 提出了 CLIP (Contrastive Language-Image Pre-training) 模型,并在论文中具体论述了如何通过自然语言解决监督信号,来训练可迁徙的视觉模型(其原理架构如下图所示)。
- 《Learning Transferable Visual Models From Natural Language Supervision》https://cdn.openai.com/papers/Learning_Transferable_Visual_Mo…
Source: https://github.com/openai/CLIP?trk=cndc-detail
对于 CLIP,OpenAI 是在 4 亿对图像 - 文本对上进行训练。对于 CLIP 论文,会在下一期和其它文生图(Text-to-Image)畛域的重要论文一起集中解读。以下先简略展现下论文的次要论断(如下图所示)。论文的试验通过 ImageNet 数据集的从新筛选,制作了几个变种的版本。基于 CLIP 训练进去的模型成果十分现实:
Source: https://github.com/openai/CLIP?trk=cndc-detail
在 ImageNet 数据集上训练进去的 ResNet 101 模型准确率是 76.2%,用 CLIP 训练进去的 VIT-Large 模型准确率同样是 76.2%。然而当咱们换成其它数据集,严格依照 1000 类的分类头再次训练,ResNet 101 得出的模型准确率却降落得很快。特地是应用上图中最初两行样本(素描画或者对抗性样本)时,ResNet 101 准确度仅为 25.2% 和 2.7%,根本属于随机猜想,迁徙成果惨不忍睹。比照应用 CLIP 训练进去的模型,准确率依然不错。
这阐明:因为和自然语言解决的联合,所以导致 CLIP 学进去的视觉特色,和用语言所形容的某个物体,曾经产生了某种强烈的分割。CLIP 这种基于文字 - 图像对的预训练模型对后续生成式 AI 的重要影响,论文的作者本人在过后都没有足够意识到,从此拉开了生成式 AI 文生图(Text-to-Image)畛域波澜壮阔的大幕。
那么 CLIP 是如何训练的呢?
CLIP 是依据图像及其题目的数据集进行训练的。设想一个有 4 亿对的“图像 - 题目”对的数据集:
图像及其题目的数据集 Source:https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
实际上,CLIP 是依据从网络上抓取的图像以及其“alt”标签进行训练的。
CLIP 是图像编码器和文本编码器的组合,咱们别离应用图像和文本编码器对图像自身、图像题目进行编码,如下图所示:
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
而后,咱们应用余弦类似度(cosine similarity)比拟生成的嵌入向量(embeddings)。当咱们最后启动训练过程时,类似度可能会很低,即便文本实际上曾经正确形容了图像的内容。
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
接下来,咱们将更新这两个模型,以便下次嵌入它们时,生成的嵌入是类似的。
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
通过在数据集中反复这一点并进行大批量解决,咱们最终使编码器可能生成狗的图像和“a picture of a dog”句子类似的嵌入向量。另外还须要思考的是,训练过程还须要包含不匹配的图片和文本的负面示例,并且模型须要为它们调配较低的类似度分数。
OpenCLIP:CLIP 的开源实现
CLIP 使计算图像和文本的示意模式以测量它们的类似水平成为可能。CLIP 模型以自我监督的形式在数亿或数十亿图像 - 文本对上进行训练。例如:LAION-5B 数据集,蕴含 58 亿个密切相关的图像 - 文本对。2022 年 9 月,LAION 利用这个数据集的 OpenCLIP 我的项目,对 CLIP 论文实现了开源实现。
-
OpenCLIP 的 GitHub 网址:
https://github.com/mlfoundations/open_clip?trk=cndc-detail
LAION 应用 OpenCLIP 训练了三个大型 CLIP 模型:ViT-L/14、ViT-H/14 和 ViT-g/14(与其余模型相比,ViT-g/14 的训练周期仅为三分之一左右),并在其官方网站上称它本人是当年开源 CLIP 模型之最佳,如下图所示:
Source: https://laion.ai/blog/large-openclip/?trk=cndc-detail
Stable Diffusion v2 版本的文本编码器就是用 OpenCLIP 训练的文生图(Text-to-Image)模型。该文本编码器由 LAION 在 Stability AI 的反对下开发,与之前的 V1 版本相比,它极大地提高了生成的图像的品质。此版本中的文生图(Text-to-Image)模型能够生成默认分辨率为 512 x 512 像素和 768 x 768 像素的图像,如下图所示:
Source: https://stability.ai/blog/stable-diffusion-v2-release?trk=cnd…
OpenCLIP 得以倒退起来的重要起因,我感觉离不开开源这个重要话题。只管 Open AI 的 CLIP 模型是开源的 (共享了模型权重),在其蕴含 4 亿对图像 - 文本对的外部数据集上训练了许多模型变体, 但没有共享用于训练的数据集。
而 OpenCLIP 这个开源实现,能够让钻研人员在钻研和优化模型时取得更大的透明度,这有利于生成式 AI 生态的长期衰弱倒退。
DALL-E-2 模型概述
还记得在 2022 年 4 月,第一次读完 DALL-E-2 论文《Hierarchical Text-Conditional Image Generation with CLIP Latents》,那时的感觉是:惊为天人。只不过没想到在之后的一年里,这个文生图(Text-to-Image)畛域倒退得如此之快。
DALL-E-2 论文咱们下集再开展剖析,这次先带大家看这篇论文里结构图外面的名词,是不是有些术语咱们有些相熟呢?是的,就是 CLIP。
- 《Hierarchical Text-Conditional Image Generation with CLIP Latents》https://arxiv.org/pdf/2204.06125.pdf?trk=cndc-detail
Source: https://arxiv.org/pdf/2204.06125.pdf?trk=cndc-detail
上图是 DALL-E-2 模型次要架构。
上部是一个 CLIP,输出为文本图像对,文本信息和图像信息别离通过文本编码器和图像编码器提取文本特色 C 和图像特色 C,文本特色 C 和图像特色 C 也是成对存在。
下方作为 DALL-E-2 主体局部,次要由 prior 和 decoder 两阶段。首先,文本信息通过文本编码器提取文本特色 D,而后 prior 依据文本信息 D 生成图像特色 D。训练过程中,图像特色 C 作为图像特色 D 的 ground truth 进行训练,也就是说训练时 DALLE2 生成的图像特色 D,会参考 CLIP 生成的对应文本的图像特色 C。最初通过一个解码器 decoder 依据图像特色 D 生成图像。
为了把 DALL-E-2 说得更加通俗易懂,我找到了这样的一张图:
Source:https://mp.weixin.qq.com/s/fkXxES4ikvOHMzmsXJwGzg?trk=cndc-de…
概括而言,DALL-E-2 训练了 3 个模型来实现文生图(Text-to-Image):
- CLIP 模型:负责将文本和视觉图像分割起来
- GLIDE 模型:负责从视觉的形容中产生图像
- PRIOR 模型:负责把文本形容映射到视觉形容
这里再次强调咱们在第一集中,就提及的 Transformer 模型的重要性。
Transformer 模型是下面提到的三个模型的常识底座。因为首先要找出图片和文字的重点,才可能搭建 CLIP 模型,而后才有之上的 PRIOR 先验模型和 GLIDE 扩散模型。
Stable Diffusion 模型概述
1.Stable Diffusion 的组件概览
来自 Stability AI 的 Stable Diffusion 是一个由多个组件和模型组成的零碎。它不是一个繁多的模型。其次要组件如下图所示:
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
咱们从高级视图开始,咱们将在本文前面具体介绍更多细节。首先,这个文本编码器其实是一种非凡的 Transformer 语言模型(技术上:CLIP 模型的文本编码器),它承受输出文本并输入代表文本中每个单词 / 标记的数字列表(每个标记的向量)。
而后,该信息将出现给图像生成器,图像生成器自身由几个组件组成。
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
图像生成器经验了两个阶段。
第一阶段:图像信息创建者(Image Information Creator)
这种组件是 Stable Diffusion 的秘诀。与以前的模型相比,它在性能上有很大晋升。此组件运行多个步骤以生成图像信息,这是 Stable Diffusion 接口和库中的步骤参数,通常默认为 50 或 100。
图像信息创建者齐全在图像信息空间中工作,这个空间还有一个更学术的词:潜在空间(latent space)。此个性使其比以前在像素空间中运行的扩散模型(Diffusion Models)更快。用技术术语来说,这个组件由一个 UNet 神经网络和一个调度算法(scheduling algorithm) 组成。
“扩散”(diffusion)一词形象地形容了该组件的作用,即对信息的分步解决。最终将由下一个组件图像解码器(image decoder),去生成高质量的图像。
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
第二阶段:图像解码器(Image Decoder)
图像解码器依据从信息创建者那里取得的信息来绘制图片,如下图所示:
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
接下来,咱们来看看形成稳固扩散的三个次要组成部分(每个组成部分都有本人的神经网络):
-
ClipText:用于文本编码
输出: 文字 / 文本
输入: 77 个 token 嵌入向量(embeddings vectors),每个向量的维度为 768
-
UNet + Scheduler:逐渐解决 / 扩散信息(潜在)空间的信息
输出: 文本嵌入(text embeddings)信息,和由噪声组成的起始多维数组(数字的结构化列表,也称为张量 tensor)
输入: 通过解决的信息数组
-
Autoencoder Decoder:应用解决后的信息数组绘制最终图像
输出: 解决后的信息数组(维度:(4,64,64))
输入: 生成的图像 (维度: (3, 512, 512) which are (红 / 绿 / 蓝, 宽 , 高)
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
2. 扩散(Diffusion)概览
写到这里,可能有读者会问:在 Stable Diffusion 中提及的扩散(Diffusion),到底是什么呢?
扩散是产生在粉红色“图像信息创立器”组件外部的过程,如下图所示:
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
通过应用示意输出文本的标记嵌入和随机的起始 图像信息数组 (image information array),也称为 潜在数组(latents)。该过程会生成一个信息数组,图像解码器应用该数组来绘制最终图像。
这个过程是分步进行的,每个步骤都会增加更多相干信息。为了直观地理解这个过程,咱们能够查看随机潜在数组(random latents array),看看它是否会转化为视觉噪声(visual noise)。在这种状况下,视觉查看是通过图像解码器(image decoder)进行的,如下图所示:
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
扩散分多个步骤进行,每个步骤都对一个输出潜在数组(latents array)进行操作,而后生成另一个潜在数组,该数组心愿更类似于输出文本和从模型训练的所有图像中取得的视觉信息,如下图所示:
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
咱们能够将其中一组潜在数组可视化,以查看在每个步骤中增加了哪些信息。
Source: https://jalammar.github.io/illustrated-stable-diffusion/?trk=…
对于 Diffusion Model 背地的工作原理,会波及到一系列的论文研究成果,比方:DDPM、DDIM、Stable Diffusion 的论文等,咱们会在下一篇的论文解读专题中做具体探讨。
本期文章,咱们开始探讨生成式 AI(Generative AI)的另一个提高迅速的畛域:文生图(Text-to-Image)畛域。本期简述了 CLIP、OpenCLIP、扩散模型、DALL-E-2 模型、Stable Diffusion 模型等根本内容,心愿读者对接下来对咱们具体解读相干论文,以及最初进行文生图(Text-to-Image)畛域的入手试验,有一个原理上的初步理解和基础知识储备。
下一期内容将进行文生图(Text-to-Image)方向的次要论文解读,敬请期待。
请继续关注 Build On Cloud 微信公众号,理解更多面向开发者的技术分享和云开发动静!
往期举荐
机器学习洞察
开发者生态
亚马逊的开源文化
作者
黄浩文
亚马逊云科技资深开发者布道师,专一于 AI/ML、Data Science 等。领有 20 多年电信、挪动互联网以及云计算等行业架构设计、技术及守业治理等丰盛教训,曾就任于 Microsoft、Sun Microsystems、中国电信等企业,专一为游戏、电商、媒体和广告等企业客户提供 AI/ML、数据分析和企业数字化转型等解决方案咨询服务。
文章起源:https://dev.amazoncloud.cn/column/article/645c5c3f4b2abb2a750…