做网站读什么专业,北京网站建设乐云seo,招商网站建设需要什么,wordpress 分类seoStable Diffusion 1. Stable Diffusion能做什么#xff1f;2. 扩散模型2.1 正向扩散2.2 反向扩散 3. 训练如何进行3.1 反向扩散3.2 Stable Diffusion模型3.3 潜在扩散模型3.4 变分自动编码器3.5 图像分辨率3.6 图像放大 4. 为什么潜在空间是可能的#xff1f;4.1 在潜在空间中… Stable Diffusion 1. Stable Diffusion能做什么2. 扩散模型2.1 正向扩散2.2 反向扩散 3. 训练如何进行3.1 反向扩散3.2 Stable Diffusion模型3.3 潜在扩散模型3.4 变分自动编码器3.5 图像分辨率3.6 图像放大 4. 为什么潜在空间是可能的4.1 在潜在空间中的反向扩散4.2 什么是VAE文件 5. 条件设定5.1 文本条件从文本到图像5.2 分词器5.3 嵌入5.4 将嵌入馈送给噪声预测器5.5 交叉注意力5.6 其他条件设定 6. Stable Diffusion逐步解释6.1 从文本到图像6.2 噪声进度表6.3 从图像到图像6.4 补白6.5 深度到图像 7. 什么是CFG值7.1 分类器引导7.2 无分类器引导7.3 无分类器引导尺度 8.Stable Diffusion v1.5 vs v28.1 模型差异8.2 训练数据差异8.3 结果差异 9. SDXL模型 Stable Diffusion是一个生成AI图像的潜在扩散模型它能够从文本中生成图像。与在高维图像空间中操作不同它首先将图像压缩到潜在空间中。
我们将深入了解其内部运作机制。
为什么需要了解呢除了本身是一个迷人的主题外对内部机制的一些了解将使您成为一位更出色的艺术家。您可以正确使用这个工具以更高的精度实现结果。
文本到图像与图像到图像有什么不同什么是CFG尺度什么是去噪强度这些问题的答案将在本文中找到。
让我们深入了解。
1. Stable Diffusion能做什么
Stable Diffusion简单来说是一个文本到图像的模型。给它一个文本提示它会返回一张与文本匹配的人工智能图像。 2. 扩散模型
Stable Diffusion属于一类称为扩散模型的深度学习模型。它们是生成模型意味着它们被设计用于生成类似于训练数据的新数据。在Stable Diffusion的情况下这些数据是图像。
为什么它被称为扩散模型呢因为它的数学表现非常类似于物理学中的扩散。让我们了解一下这个概念。
假设我用两种图像训练了一个扩散模型猫和狗。在下图中左侧的两个峰代表了猫和狗图像的群体。
2.1 正向扩散 正向扩散过程向训练图像添加噪声逐渐将其转变为不具特征的噪声图像。正向过程将任何猫或狗图像转变为噪声图像。最终你将无法分辨它们最初是狗还是猫这很重要。
这就像一滴墨水落入玻璃杯中。墨滴在水中扩散。几分钟后它随机分布在整个水中。你无法再分辨它最初是在中心还是靠近边缘。
下面是图像经历正向扩散的示例。猫图像变成了随机噪声。 2.2 反向扩散
现在来看看令人兴奋的部分。如果我们能够反向扩散呢就像倒放视频一样。倒退时间。我们将看到墨滴最初是如何添加的。 从一个嘈杂而无意义的图像开始反向扩散将恢复出一个猫或狗的图像。这是主要的思想。
从技术上讲每个扩散过程都有两个部分1漂移和2随机运动。反向扩散向猫或狗图像漂移但在两者之间没有其他情况。这就是为什么结果可能是猫或狗的原因。
3. 训练如何进行
反向扩散的思想无疑是聪明而优雅的。但是百万美元的问题是“它怎么能做到呢”
要实现反向扩散我们需要知道向图像添加了多少噪声。答案是教一个神经网络模型来预测添加的噪声这就是Stable Diffusion中的噪声预测器。它是一个U-Net模型。训练过程如下
选择一张训练图像比如一张猫的照片。生成一个随机噪声图像。通过将这个嘈杂图像添加到一定数量的步骤来破坏训练图像。教会噪声预测器告诉我们添加了多少噪声。通过调整其权重并向其显示正确答案来完成这一过程。 噪声在每个步骤逐渐添加。噪声预测器估计了每个步骤累积添加的总噪声。
训练结束后我们有一个能够估计图像中添加的噪声的噪声预测器。
3.1 反向扩散
现在我们有了噪声预测器怎么使用它呢
我们首先生成一张完全随机的图像然后请噪声预测器告诉我们噪声是多少。然后我们从原始图像中减去这个估计的噪声。重复这个过程几次你将得到一张猫或狗的图像。 通过逐步从图像中减去预测的噪声来进行反向扩散。 你可能会注意到我们无法控制生成猫或狗的图像。在谈到条件时我们将解决这个问题。目前图像生成是无条件的。
你可以在这篇文章中阅读有关反向扩散抽样和抽样器的更多信息。
3.2 Stable Diffusion模型
现在我需要告诉你一些坏消息我们刚刚讨论的并不是Stable Diffusion的工作原理原因是上述扩散过程是在图像空间进行的。在计算上非常慢。你甚至无法在任何单个GPU上运行更不用说你笔记本电脑上的烂GPU了。
图像空间是巨大的。想想看一个512×512像素的图像有三个颜色通道红、绿和蓝是一个786,432维的空间你需要为一个图像指定那么多值。
像Google的Imagen和Open AI的DALL-E这样的扩散模型都在像素空间。它们使用了一些技巧来使模型更快但仍然不够。
3.3 潜在扩散模型
Stable Diffusion旨在解决速度问题。它是这样实现的。
Stable Diffusion是一个潜在扩散模型。它不是在高维图像空间中操作而是首先将图像压缩到潜在空间。潜在空间小了48倍因此它能够快速处理较少的数字。这就是为什么它更快的原因。
3.4 变分自动编码器
这是通过一种称为变分自动编码器VAE的技术完成的。是的那就是VAE文件的精确内容但我稍后会更清楚地解释。
变分自动编码器VAE神经网络有两个部分1编码器和2解码器。编码器将图像压缩到潜在空间中的较低维表示。解码器从潜在空间还原图像。 变分自动编码器在图像和潜在空间之间进行转换。
Stable Diffusion模型的潜在空间是4x64x64比图像像素空间小了48倍。我们讨论的所有正向和反向扩散实际上都是在潜在空间中完成的。
因此在训练过程中我们不是生成嘈杂的图像而是生成潜在空间中的随机张量潜在噪声。我们不是用噪声破坏图像而是用潜在噪声破坏图像在潜在空间中的表示。这样做的原因是它更快因为潜在空间较小。
3.5 图像分辨率
图像分辨率反映在潜在图像张量的大小上。对于512×512像素的图像潜在图像的大小为4x64x64。对于768×512的竖向图像潜在图像的大小为4x96x64。这就是为什么生成较大图像需要更长的时间和更多的显存的原因。
由于Stable Diffusion v1是在512×512像素的图像上进行微调的生成大于512×512的图像可能会导致重复的对象例如臭名昭著的双头现象。
3.6 图像放大
要生成大幅印刷品请保持图像的至少一侧为512像素。使用AI放大器或图像到图像函数进行图像放大。
或者使用SDXL模型。它具有较大的默认大小为1,024 x 1,024像素。
4. 为什么潜在空间是可能的
你可能会想知道为什么VAE可以将图像压缩到一个远远较小的潜在空间而不丢失信息。原因是毫不奇怪自然图像并不是随机的。它们具有很高的规律性一个脸遵循眼睛、鼻子、脸颊和嘴巴之间特定的空间关系。狗有4条腿有特定的形状。
换句话说图像的高维度是人为的。自然图像可以轻松地压缩到远远较小的潜在空间而不丢失任何信息。这被称为机器学习中的流形假设。
4.1 在潜在空间中的反向扩散
这是Stable Diffusion中潜在反向扩散的工作原理。
生成一个随机的潜在空间矩阵。噪声预测器估计潜在矩阵的噪声。然后从潜在矩阵中减去估计的噪声。重复步骤2和3直到特定的采样步骤。VAE的解码器将潜在矩阵转换为最终图像。
4.2 什么是VAE文件
在Stable Diffusion v1中VAE文件用于改善眼睛和面部的效果。它们是我们刚刚讨论的自动编码器的解码器。通过进一步微调解码器模型可以呈现更精细的细节。
你可能意识到我之前提到的并不完全正确。将图像压缩到潜在空间确实会丢失信息因为原始的VAE没有恢复出精细的细节。相反VAE解码器负责绘制精细的细节。
5. 条件设定
我们的理解还不完整文本提示从何处进入没有它Stable Diffusion不是一个文本到图像的模型。你将得到一张猫或狗的图像没有任何控制它的方式。
这就是条件设置发挥作用的地方。条件设置的目的是引导噪声预测器使得在从图像中减去预测的噪声之后能够得到我们想要的结果。
5.1 文本条件从文本到图像
下面是文本提示如何处理并输入到噪声预测器的概述。分词器首先将提示中的每个单词转换为称为标记的数字。然后每个标记转换为称为嵌入的768值向量。嵌入是由文本转换器生成的准备好被噪声预测器使用。 如何处理文本提示并将其输入到噪声预测器中以引导图像生成。 现在让我们更深入地了解每一部分。如果以上高级概述对您来说足够好您可以跳到下一节。
5.2 分词器 文本提示首先由CLIP分词器进行标记。CLIP是由OpenAI开发的深度学习模型用于生成任何图像的文本描述。Stable Diffusion v1使用CLIP的分词器。
标记化是计算机理解单词的方式。我们人类可以阅读单词但计算机只能读取数字。这就是为什么文本提示中的单词首先转换为数字的原因。
分词器只能对其在训练期间看到的单词进行标记。例如CLIP模型中有“dream”和“beach”但没有“dreambeach”。分词器将“dreambeach”分解为两个标记“dream”和“beach”。因此一个单词并不总是意味着一个标记
另一个细微之处是空格字符也是标记的一部分。在上述情况中“dream beach”短语产生两个标记“dream”和“[space]beach”。这些标记与“dreambeach”产生的标记“dream”和“beach”beach前面没有空格不同。
Stable Diffusion模型限制在提示中使用75个标记。现在你知道它不同于75个单词了
5.3 嵌入 Stable Diffusion v1使用OpenAI的ViT-L/14 Clip模型。嵌入是一个768值向量。每个标记都有自己独特的嵌入向量。嵌入由CLIP模型固定这在训练期间学到。
我们为什么需要嵌入这是因为一些单词与彼此密切相关。我们想利用这个信息。例如man、gentleman和guy的嵌入几乎相同因为它们可以互换使用。Monet、Manet和Degas都以印象主义风格绘画但以不同的方式。这些名称具有紧密但不完全相同的嵌入。
这就是我们之前讨论的使用关键词触发样式的嵌入。嵌入可以产生神奇的效果。科学家已经证明找到适当的嵌入可以触发任意的对象和样式这是一种称为文本反演的微调技术。
5.4 将嵌入馈送给噪声预测器 从嵌入到噪声预测器。
在馈送到噪声预测器之前嵌入需要被文本变换器进一步处理。变换器就像条件设置的通用适配器。在这种情况下它的输入是文本嵌入向量但它也可以是其他东西比如类标签、图像和深度图。变换器不仅进一步处理数据还提供包含不同条件模式的机制。
5.5 交叉注意力
文本变换器的输出在整个U-Net中被噪声预测器多次使用。U-Net通过交叉注意力机制使用它。这就是提示遇到图像的地方。
让我们以“一个有蓝眼睛的男人”为例。Stable Diffusion将“蓝”和“眼睛”两个词配对在一起在提示内部进行自注意以便生成一个有蓝眼睛的男人而不是穿蓝衬衫的男人。然后它使用这些信息来引导反向扩散生成包含蓝眼睛的图像在提示和图像之间进行交叉注意力。
一点说明Hypernetwork是微调Stable Diffusion模型的一种技术它劫持了交叉注意力网络以插入样式。LoRA模型修改交叉注意力模块的权重以更改样式。仅修改该模块就可以微调Stabe Diffusion模型的事实告诉你该模块有多重要。
5.6 其他条件设定
文本提示并不是Stable Diffusion模型进行条件设定的唯一方式。
文本提示和深度图像都用于在深度到图像模型中进行条件设定。
ControlNet使用检测到的轮廓、人体姿势等对噪声预测器进行条件设定并实现对图像生成的出色控制。
6. Stable Diffusion逐步解释
现在你知道了Stable Diffusion的所有内部机制让我们通过一些例子来看看在幕后发生了什么。
6.1 从文本到图像
在文本到图像中你给Stable Diffusion一个文本提示它返回一张图像。
步骤1Stable Diffusion在潜在空间生成一个随机张量。通过设置随机数生成器的种子你可以控制这个张量。如果将种子设置为某个值你将始终得到相同的随机张量。这是你在潜在空间中的图像。但现在它只是噪声。 步骤2噪声预测器U-Net以潜在嘈杂图像和文本提示作为输入并预测潜在空间中的噪声一个4x64x64张量。 步骤3从潜在图像中减去潜在噪声。这将成为新的潜在图像。 步骤4重复步骤2和3直到达到特定的采样步骤例如20次。
步骤5最后VAE的解码器将潜在图像转换回像素空间。这是运行Stable Diffusion后得到的图像。 以下是如何在每个采样步骤中对图像进行演变。 6.2 噪声进度表
图像从嘈杂到清晰。你是否想知道噪声预测器在初始步骤中是否工作不好实际上这只是部分正确。真正的原因是我们尝试在每个采样步骤中获得预期的噪声。这被称为噪声进度表。下面是一个例子。 噪声进度表是我们定义的。我们可以选择在每一步中减去相同数量的噪声。或者我们可以在开始时减去更多就像上面那样。采样器在每一步中刚好减去足够的噪声以在下一步中达到预期的噪声。这就是你在逐步图像中看到的。
6.3 从图像到图像
图像到图像使用Stable Diffusion将一幅图像转换为另一幅图像。这首次在SDEdit方法中提出。SDEdit可应用于任何扩散模型因此我们有了Stable Diffusion的图像到图像潜在扩散模型。
在图像到图像中输入包括输入图像和文本提示。生成的图像将受到输入图像和文本提示的条件影响。例如使用下图中的素描和提示“带茎的完美绿苹果照片水滴戏剧性光线”作为输入图像到图像可以将其转换为专业的图画 现在让我们逐步了解这个过程。
步骤1将输入图像编码到潜在空间。 步骤2在潜在图像中添加噪声。去噪强度控制添加多少噪声。如果为0则不添加噪声。如果为1则添加最大量的噪声使潜在图像成为完全随机的张量。 步骤3噪声预测器U-Net以潜在嘈杂图像和文本提示作为输入并预测潜在空间中的噪声一个4x64x64的张量。 步骤4从潜在图像中减去潜在噪声。这将成为新的潜在图像。 步骤3和4在一定数量的采样步骤中重复例如20次。
步骤5最后VAE的解码器将潜在图像转换回像素空间。这是运行图像到图像后得到的图像。 所以现在你知道图像到图像是什么了它只是在初始潜在图像中加入一些噪声和输入图像。将去噪强度设置为1等同于文本到图像因为初始潜在图像完全是随机的。
6.4 补白
修复图是图像到图像的一个特殊案例。在你想要修复图像的部分添加噪声。噪声的数量同样由去噪强度控制。
6.5 深度到图像
深度到图像是图像到图像的增强版本它使用深度图生成带有额外条件的新图像。
步骤1将输入图像编码成潜在状态。 步骤2MiDaS一种AI深度模型从输入图像估计深度图。 步骤3在潜在图像中添加噪声。去噪强度控制添加多少噪声。如果去噪强度为0则不添加噪声。如果去噪强度为1则添加最大噪声使潜在图像成为一个随机张量。 步骤4噪声预测器估计潜在空间的噪声由文本提示和深度图条件控制。 步骤5从潜在图像中减去潜在噪声。这将成为新的潜在图像。 步骤4和5在一定数量的采样步骤中重复。
步骤6VAE的解码器解码潜在图像。现在你从深度到图像得到了最终图像。
7. 什么是CFG值
这篇文章不完整没有解释分类器免费引导CFG这是AI艺术家每天都在调整的一个值。为了理解它是什么我们首先需要谈谈它的前身分类器引导…
7.1 分类器引导
分类器引导是将图像标签纳入扩散模型的一种方式。你可以使用标签来指导扩散过程。例如标签“cat”会引导反向扩散过程生成猫的照片。
分类器引导尺度是一个用于控制扩散过程应该多紧密地遵循标签的参数。
下面是我从这篇论文中偷来的一个例子。假设有三组图像分别带有标签“cat”、“dog”和“human”。如果扩散是未引导的模型将从每组总体中抽取样本但有时可能会抽取适合两个标签的图像例如一个男孩抚摸一只狗。 分类器引导。左未引导。中小引导尺度。右大引导尺度。
通过高分类器引导扩散模型生成的图像将偏向极端或明显的示例。如果你向模型询问一只猫它将返回一张明显是猫而没有其他东西的图像。
分类器引导尺度控制引导的密切程度。在上图中右侧的采样具有比中间的更高的分类器引导尺度。在实践中该尺度值简单地是朝着具有该标签数据的漂移术语的乘法器。
7.2 无分类器引导
尽管分类器引导取得了创纪录的性能但它需要额外的模型来提供引导。这在训练中带来了一些困难。
无分类器引导根据其作者的说法是一种实现“无分类器引导”的方式即“没有分类器的分类器引导”。与使用类标签和一个单独的模型进行引导不同他们建议使用图像标题并训练一个条件扩散模型就像我们在文本到图像中讨论的那样。
他们将分类器部分作为噪声预测器U-Net的条件实现了所谓的“无分类器”即没有单独的图像分类器引导图像生成。
文本提示在文本到图像中提供了这种引导。
7.3 无分类器引导尺度
现在我们有了使用条件的无分类器扩散过程。我们如何控制AI生成的图像应该多么遵循引导
无分类器引导尺度CFG尺度是一个值用于控制文本提示应该如何引导扩散过程。当CFG尺度设置为0时AI图像生成是无条件的即忽略了提示。较高的CFG尺度将扩散引导到提示。
8.Stable Diffusion v1.5 vs v2
这已经是一篇很长的文章了但如果不比较v1.5和v2模型之间的差异它将不完整。
8.1 模型差异
Stable Diffusion v2使用OpenClip进行文本嵌入。Stable Diffusion v1使用Open AI的CLIP ViT-L/14进行文本嵌入。更改的原因有
OpenClip是ViT-G/14型号的5倍大。更大的文本编码器模型提高了图像质量。尽管Open AI的CLIP模型是开源的但这些模型是使用专有数据训练的。切换到OpenClip模型使研究人员更容易研究和优化该模型。这对于长期发展更有利。
v2模型有两个版本
512版本生成512×512的图像。768版本生成768×768的图像。
8.2 训练数据差异
Stable Diffusion v1.4 is trained with
Stable Diffusion v1.4的训练数据为
237k步分辨率为256×256使用laion2B-en数据集。194k步分辨率为512×512使用laion-high-resolution数据集。225k步分辨率为512×512“laion-aesthetics v2 5”数据集文本条件下降10%。
Stable Diffusion v2的训练数据为
550k步分辨率为256×256使用LAION-5B的子集过滤掉显式色情材料使用LAION-NSFW分类器punsafe0.1美学评分4.5。850k步分辨率为512×512相同数据集图像分辨率512×512。150k步使用相同数据集的v目标。再次在768x768图像上进行140k步的继续训练。
Stable Diffusion v2.1在v2.0的基础上进行了微调
在相同数据集上额外进行了55k步punsafe0.1。使用punsafe0.98进行了额外的155k步。
实质上他们在最后的训练步骤中关闭了NSFW过滤器。
8.3 结果差异
用户普遍发现使用Stable Diffusion v2难以控制风格和生成名人。虽然Stability AI并未明确过滤掉艺术家和名人的名称但它的效果在v2中要弱得多。这可能是由于训练数据的差异造成的。Open AI的专有数据可能包含更多的艺术品和名人照片。他们的数据可能经过高度筛选使得一切都看起来美好漂亮。
v2和v2.1模型并不受欢迎。人们主要使用经过微调的v1.5和SDXL模型。
9. SDXL模型
SDXL模型是v1和v2模型的官方升级版。该模型以开源软件的形式发布。
这是一个更大的模型。在AI领域我们可以期望它更好。SDXL模型的总参数数量为66亿而v1.5模型为9.8亿。 SDXL管道包括一个基础模型和一个细化模型。
实际上SDXL模型是两个模型。您运行基础模型然后是细化模型。基础模型设置全局组成而细化模型添加更细的细节。
您可以仅运行基础模型而不使用细化模型。
SDXL基础模型的变化包括
文本编码器结合了最大的OpenClip模型ViT-G/14和OpenAI的专有CLIP ViT-L。这是一个明智的选择因为它使得SDXL易于提示同时保持了功能强大且可训练的OpenClip。新的图像大小调整旨在使用小于256×256的训练图像。这通过不丢弃39%的图像显著增加了训练数据。U-Net比v1.5大三倍。默认图像大小为1024×1024。这比v1.5模型的512×512大4倍。 查看与SDXL模型一起使用的图像尺寸
请注意由于篇幅原因上述内容已经进行了适度的压缩和调整以便更好地适应给定的文本段落。如果有其他具体的翻译需求或问题欢迎随时提出。