1. Stable Diffusion 稳固扩散模型简介
Stable Diffusion 是 Diffusion 扩散模型中开始进的模式( Diffusion 有一些早期版本,比如: 原始Diffusion、Latent Diffusion)。它接纳了更加稳固、可控和高效的方法来生成高质量图像。在生成图像的质量、速率和成本上都有显著的进步,因此该模型可以直接在消费级显卡上实现图像生成,可达至少 512*512 像素的图像。最新的 XL 版本可以在 1024*1024 像素的级别上生成可控的图像,生成效率也比以往的 Diffusion 扩散模型进步了30倍。现在 Stable Diffusion 的应用已经不局限于图像生成范畴,它还被广泛应用于自然语言处理惩罚、音频视频等生成范畴。
1.1 Stable Diffusion 发展的历史
Stable Diffusion 这个模型架构是由 Stability AI 公司推于2022年8月由 CompVis、Stability AI 和 LAION 的研究职员在 Latent Diffusion Model 的基础上创建并推出的。其焦点技能泉源于 AI 视频剪辑技能创业公司 Runway 的首席研究科学家 Patrick Esser,以及慕尼黑大学机器视觉学习组的 Robin Rombach 这两位开辟者在盘算机视觉大会 CVPR22 上合作发表的潜扩散模型(Latent Diffusion Model)的研究(论文:https://arxiv.org/abs/2112.10752 )。
Patrick Esser(左)、Robin Rombach(右)
而,Latent Diffusion Model 是对早在2015年就提出的原始 Diffusion Model 的革命性升级改造。有关 Diffusion 模型的原始框架可以在这篇文章中具体了解《Diffusion 扩散模型》。
虽然,坊间最近大面积流传着 Stable diffusion 其实是抄袭 Runway 的 Latent diffusion 的代码,并且 Stability AI 的老板 Emad Mostaque 被福布斯扒皮说他学历造假等丑闻,但这一点也没有延长 Stable diffusion 的一连火爆,并且继承获得大部头的融资。
Stability AI 的老板 Emad Mostaque
至于 Stable diffusion 是否真的抄袭 Latent diffusion 现在尚没有明白的结论,但一个不争的事实是,Stable diffusion 相对于 Latent diffusion 来说进步确实不多,可以说基本都集中在了算力基础大大提升、训练数据大大增加、数据质量大大改善等“鼎力大举出奇迹”上,而并非什么架构本质的升级换代。
但,到现在为止,我们使用的 Stable diffusion WebUI 仍然是基于 Stability AI 公司发布的 Stable diffusion 架构。以是,让我们仍然相沿这一称呼“Stable diffusion”来进行解说。
1.2 “浅空间 Latent Space”的重要性!
Stable diffusion 相比 Latent diffusion 主要有以下几点改进:
- 训练数据:Latent Diffusion 是接纳 Laion-400M 数据训练的,而 Stable Diffusion 是在 Laion-2B-en数据集上训练出来的。 “2B-en”是 20 亿个图像及英文对照文本的意思,确切的说是包罗 23.2 亿个。明显后者用了更多的训练数据,而且后者还接纳了数据筛选来提升样本数据质量,即接纳了 Laion-Aesthetic,一个 120M 的训练子集,以专门选择美学评分较高的图像用于文生图任务。
- Text Encoder:Latent Diffusion 接纳一个随机初始化的 Transformer 来编码 text(这个 Transformer 就是 GPT 用的那个 Transformer,“GPT”的末了一个字母“T”,我单独写过一篇文章来具体先容它:《“GPT”到底是什么,三个字母应该怎样翻译!》)。而 Stable Diffusion 接纳一个预训练好的 Clip text encoder 来编码 text,预训练的 text model 往往要优于从零开始训练的模型。
- 训练尺寸: Latent Diffusion 是在 256x256 分辨率数据集上训练,而 Stable Diffusion 是先在256x256分辨率上预训练,然后再在 512x512 分辨率上微调优化的,而现在 XL 版本则接纳了 Laion-High-Resolution 训练集,一个规模为 170M,图像分辨率大于 1024 的高分辨率训练子集,用于超分辨率任务。
可以看出来,改进确实不是特别大。其中一个最重要的焦点“Latent”并没有被改变,还不停被 Stable Diffusion 所相沿着,那么这个“Latent”到底是什么意思呢。可以说 Latent Diffusion 是 Stable Diffusion 的鼻祖,由于它首次接纳了“浅空间 Latent Space”中高效处理惩罚数据的方法,解决了原始 Diffusion 模型效率低下的题目。它内部的 U-Net 网络是在“潜空间”的低维度中进行运算的,这极大地降低了内存消耗和盘算的复杂度。比方,一个 512*512 像素的照片图像,数据表达为(3,512,512),即 RGB 三通道 *512*512 像素的图像数据规模,数据体积在 786432 之上。而在潜空间中则会被压缩成(4,64,64),数据体积为 16384,内存消耗将会减少到原来的 64 分之 1。这个给模型的运行带来了极大的高效性与普及性。Stable Diffusion 自然也继承了 Latent Diffusion 的这个焦点优势。(有关“浅空间 Latent Space”的具体解说,请参考此篇:《到底什么是“Latent Space 潜空间”?》)
接下来,我们将部分参考几位技能大牛对 Stable Diffusion 的文章内容,尤其是 Jay Alammar 在其博客上针对 Stable Diffusion 解构所配的非常简明扼要的拓扑图来解说。
Jay Alammar 的博客账户
2. Stable Diffusion 稳固扩散模型具体结构
Stable Diffusion 稳固扩散模型可以被应用在很多范畴,但在 AIGC 计划范畴,我们仅关注它的两个主要方面:
第一个是文生图(text2img)。下图展示了一套文本和对应生成的图像。这套文本就是 Prompt 提示词: paradise cosmic beach。
提示词“paradise cosmic beach”通过Stable Diffusion 模型生成对应图像
第二个是改变图片。很明显,改变图片须要的是输入一张图片,还有用来改变图片的提示词。对应的例子是在原有图像上+提示词:Pirate ship,生成一张变化的图。
在原有图像上+提示词:“Pirate ship”,生成一张变化的图
其实 Stable Diffusion 自己并不是一个模型,而是一个由多个模块和模型组成的系统架构,它由三大焦点部件组成,每个组件都是一个神经网络系统,也称为三大基础模型:
1. CLIPText 用于文本编码,使文本数字化:
- Input:输入文本(提示词 Prompt);
- Output:77 token embeddings vectors,每个 token 向量有 768 个维度;
2. U-Net + Scheduler 用于逐步处理惩罚/扩散被转化到潜空间中的信息:
- Input:文本嵌入和由噪点组成的起始多维矩阵(是一种结构化的数字列表,也称为张量 Tensor);
- Output:处理惩罚后的信息矩阵;
3. AutoEncoder Decoder (主要是一个VAE:Variational AutoEncoder )使用处理惩罚后的信息矩阵解码绘制出终极图像,把潜空间的运算结果解码成实际图片维度:
- Input:处理惩罚后的信息矩阵,维度:4, 64, 64;
- Output:生成的图像,维度:3, 512, 512 即 RGB三个通道、和两维像素尺寸。
2.1 CLIPText 文本编码器
起首,让我们看一下 CLIPText,它是一个内在编码器的文本理解组件( Text Understander 图中蓝色模块),它将文本信息转换为用数字表达的信息,以便让机器可以或许理解提示词文本的语义。
文本理解组件 Text Understander (蓝色模块)本质上是一个编码器 Encoder
这个文本理解组件如果按照技能结构组成来说,可以理解为一个文本编码器(Encoder),它是一个特殊的 Transformer 语言模型(技能术语: CLIP 模型的 Text Encoder 文本编码器)。它的输入是文本,输出则为数字表达的矩阵,即用 Embedding 的方式来表达提示词中的一连串文本中的每个 token,每个 token 对
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |