问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Stable Diffusion采样器:超详细入门指南

创作时间:
作者:
@小白创作中心

Stable Diffusion采样器:超详细入门指南

引用
CSDN
1.
https://blog.csdn.net/m0_56144365/article/details/145626711

在Stablediffusion中有多种采样方法可用,比如Euler a、Heun、DDIM等。什么是采样器?它们是如何工作的?它们之间有什么区别?应该使用哪一个?在这篇文章中,你将找到这些问题的答案。

什么是采样?

采样器负责执行去噪步骤。为了生成一张图片,Stable Diffusion首先在潜在空间(latent space)里生成一张完全随机的图像。接着,噪声预测器(noise predictor)会估算图像的噪声。预测出的噪声会从图像中减去。这个过程会重复十几次。最终,你会得到一张干净的图片。

这种去噪过程被称为采样,因为Stable Diffusion在每一步都生成一个新的样本图像。用于采样的方法被称为采样器或采样方法。

采样只是Stable Diffusion模型的一部分。如果你想了解整个模型,请阅读文章“Stable Diffusion是如何工作的?”。

以下是一个采样过程的实际应用。采样器逐渐生成越来越干净的图像。

每个去噪步骤后的图像

虽然框架是相同的,但执行这个去噪过程有很多不同的方法。这通常是速度和准确性之间的权衡。

噪声计划

你一定注意到了,嘈杂的图像逐渐变得清晰。噪声计划控制每个采样步骤中的噪声水平。噪声在第一步是最高的,然后逐渐减少到最后一步的零。

在每一步中,采样器的任务是生成一个与噪声计划相匹配的噪声水平的图像。

15个采样步骤的噪声计划

增加采样步骤数会有什么影响?每一步之间的噪声减少会更小。这有助于减少采样的截断误差。

请比较下面的15步和30步的噪声计划。

采样器概览

在撰写本文时,AUTOMATIC1111中有19种可用的采样器。这个数字似乎随着时间的推移在增加。它们之间有什么区别?

AUTOMATIC1111中的采样器

你将在本文后面的部分了解它们是什么。技术细节可能会让人觉得难以理解,所以我们在这一部分提供了一个鸟瞰式的概览。这应该能帮你大致了解它们是什么。

下面是所有采集算法在不同步骤下出的图效果

可以看到大部分在20-30步的时候就可以了。

2.1 老派的常微分方程求解器

我们先来解决一些简单的。列表上有些采样器是一百多年前就被发明出来的。它们是用于求解常微分方程(ODE)的老派求解器。

  • Euler - 最简单的求解器。
  • Heun - Euler的更准确但速度更慢的版本。
  • LMS(线性多步方法)- 与Euler速度相同,但(据称)更准确。

2.2 祖先采样器

你有没有注意到一些采样器的名字中有一个单独的字母“a”?

  • Euler a
  • DPM2 a
  • DPM++ 2S a
  • DPM++ 2S a Karras

它们是祖先采样器。祖先采样器在每个采样步骤中都会向图像添加噪声。因为采样结果有一定的随机性,所以它们是随机采样器。

需要注意的是,尽管他们的名字中没有字母“a”,但还有很多其他的也是随机采样器。

使用祖先采样器的缺点是图像不会收敛。比较使用Euler a和Euler生成的图像。

Euler a不收敛(样本步骤 2 - 40)

Euler收敛(采样步骤 2-40)

使用Euler a生成的图像在高采样步骤下不收敛。相反,使用Euler生成的图像收敛得很好。

为了可重复性,最好是让图像收敛。如果你想生成轻微的变化,你应该使用变分种子。

2.3 Karras噪声计划

带有“Karras”标签的采样器使用Karras文章中推荐的噪声计划。如果你仔细观察,你会看到接近结束时的噪声步长更小。他们发现这样可以提高图像的质量。

2.4 DDIM和PLMS

DDIM(去噪扩散隐式模型)和PLMS(伪线性多步法)是最初与Stable Diffusion v1一起发布的采样器。DDIM是为扩散模型设计的最早的采样器之一。PLMS是DDIM的一个更新、更快的替代方案。

通常来说,它们现在已经被认为是过时的,不再广泛使用。

2.5 DPM和DPM++

DPM(扩散概率模型求解器)和DPM++是在2022年发布的为扩散模型设计的新采样器。它们代表了一族具有类似架构的求解器。

DPM和DPM2类似,只是DPM2是二阶的(更准确但更慢)。

DPM++是DPM的改进版。

DPM adaptive能够自适应地调整步长。由于它不能保证在采样步数内完成,因此可能会比较慢。

2.6 UniPC

UniPC(统一预测-校正器)是在2023年发布的新采样器。受到ODE求解器中预测-校正方法的启发,它能在5-10步内实现高质量的图像生成。

2.7 k-diffusion

最后,你可能听说过k-diffusion这个术语,并想知道它是什么意思。它简单地指的是Katherine Crowson的k-diffusion GitHub仓库和与之相关的采样器。

该仓库实现了Karras 2022文章中研究的采样器。

基本上,除了DDIM、PLMS和UniPC之外,AUTOMATIC1111中的所有采样器都来自k-diffusion。

评估采样器

如何选择一个采样器?在这一部分,你将看到一些客观的比较,以帮助你做出决定。

3.1 图像收敛性

在这一节,我们将使用多达40个采样步骤的不同采样器生成相同的图像。用于评估采样速度如何收敛的参考是第40步的最后一张图像。Euler方法将用作参考。

3.1.1 Euler、DDIM、PLMS、LMS Karras和Heun

首先,让我们看一下Euler、DDIM、PLMS、LMS Karras和Heun这一组,因为它们代表了老派的ODE求解器或原始扩散求解器。DDIM大约在与Euler相同的步骤中收敛,但有更多的变化。这是因为它在其采样步骤中注入了随机噪声。

Euler、DDIM、PLMS、LMS Karras和Heun的图像收敛性(越低越好)

PLMS在这个测试中表现得不太好。

LMS Karras似乎难以收敛,并且在一个更高的基线上稳定下来。

Heun收敛得更快,但由于它是二阶方法,所以速度慢了两倍。因此,我们应该把Heun在30步的情况与Euler在15步的情况进行比较。

3.1.2 祖先采样器

如果你的目标是获得一个稳定、可重复的图像,那么你不应该使用祖先采样器。所有的祖先采样器都不收敛。

祖先采样器收敛性不佳(越低越好)

3.1.3 DPM和DPM2

DPM快速版收敛性不好。DPM2和DPM2 Karras的表现优于Euler,但代价是速度慢了两倍。

DPM自适应表现得出奇地好,因为它使用了自己的自适应采样步骤。但这可能会非常慢。

DPM采样器的收敛性(越低越好)

3.1.4 DPM++ 求解器

DPM++ SDE 和 DPM++ SDE Karras有着与祖先采样器相同的缺点。它们不仅不收敛,而且随着步数的改变,图像也会显著波动。

DPM++ 2M 和 DPM++ 2M Karras表现不错。当步数足够多时,Karras版本收敛得更快。

DPM++ 采样器的收敛性(越低越好)

3.1.5UniPC

UniPC的收敛速度比Euler稍慢,但还算可以接受。

3.2 速度

虽然DPM adaptive在收敛性方面表现不错,但它也是最慢的。你可能已经注意到,其余的渲染时间大致分为两组,第一组所需时间大致相同(大约1倍),另一组则需要大约两倍的时间(大约2倍)。这反映了解算器的阶数。虽然二阶解算器更精确,但需要两次评估去噪U-Net,因此它们的速度慢两倍。

3.3 质量

当然,如果图像看起来很糟糕,那么速度和收敛性就毫无意义了。

3.3.1 最终图像

让我们先来看看图像的样本。

DPM++ fast 的表现相当糟糕。祖先采样器没有收敛到其他采样器收敛到的图像。

祖先采样器倾向于收敛到一张小猫的图像,而确定性的采样器倾向于收敛到一只猫的图像。只要它们看起来对你来说很好,就没有正确的答案。

3.3.2 感知质量

即使图像尚未收敛,它仍然可以看起来很好。让我们看看每个采样器能多快地生成高质量的图像。

您将看到用BRISQUE(盲目/无参考图像空间质量评估器)测量的感知质量。它测量自然图像的质量。

在这里,DDIM表现出奇的好,能够在短短8步内生成该组中质量最高的图像。

DDIM, PLMS, Heun和LMS Karras的图像质量(数值越低越好)

除了一两个例外,所有的祖先采样器在生成高质量图像方面表现得与Euler相似。

祖先采样器的图像质量(越低越好)

DPM2采样器略微优于Euler。

DPM采样器的图像质量(越低越好)

DPM++ SDE和DPM++ SDE Karras在这个质量测试中表现最好。

DPM++采样器的图像质量(越低越好)

UniPC在较少的步骤中稍逊于Euler,但在较多的步骤中与其相当。

UniPC采样器的图像质量(越低越好)

3.4 所以…哪一个是最好的?

这里是我的推荐:

如果你想要使用一个快速、收敛、新颖、质量不错的选择,很好的选择是

  • DPM++ 2M Karras,20 – 30步
  • UniPC,20-30步。

如果你想要高质量的图像,而不在乎收敛性,好的选择是

  • DPM++ SDE Karras,10-15步(注意:这是一个较慢的采样器)
  • DDIM,10-15步。

如果你更喜欢稳定、可复制的图像,避免使用任何祖先采样器。

如果你更倾向于简单的东西,Euler和Heun是不错的选择。减少修恩的步数以节省时间。

采样器解释

你将在AUTOMATIC1111中找到关于采样器的信息。这些采样器的内部工作性质是相当数学化的。我只会详细解释欧拉(最简单的一个)。其中许多与欧拉有共同的元素。

4.1 Euler

Euler是最简单的可能的采样器。它在数学上与欧拉的方法解决常微分方程完全相同。它是完全确定性的,意味着在采样过程中没有添加随机噪声。

以下是逐步采样过程。

步骤1:噪声预测器从潜在图像中估算出噪声图像。

步骤2:根据噪声时间表计算需要减去的噪声量。也就是当前步骤和下一步之间的噪声差。

步骤3:通过标准化噪声图像(来自步骤1)乘以需要减少的噪声量(来自步骤2)来减去潜在图像。

重复步骤1至3,直到噪声时间表结束。

噪声时间表

但是你怎么知道每一步中的噪声量呢?实际上,这是你告诉采样器的。

一个噪声时间表告诉采样器在每一步应有多少噪声。为什么模型需要这个信息呢?噪声预测器根据应该存在的总噪声量来估算潜在图像中的噪声。(这就是它是如何被训练的。)

一个包含15个采样步骤的噪声时间表

在第一步中有最多的噪声。噪声逐渐减少,并在最后一步降至零。

改变采样步骤的数量会改变噪声时间表。实际上,噪声时间表变得更加平滑。更高数量的采样步骤在任何两个步骤之间具有更小的噪声减少,这有助于减少截断误差。

从随机到确定性采样

你是否想知道为什么可以用确定性的常微分方程(ODE)求解器来解决一个随机采样问题?这被称为概率流公式。你解决的不是样本如何演变,而是其概率分布如何演变。这与在随机过程中求解概率分布而非样本轨迹是一样的。

与漂移过程相比,这些ODE求解器使用以下映射。

  • 时间 → 噪声
  • 时间量化 → 噪声时间表
  • 位置 → 潜在图像
  • 速度 → 预测的噪声
  • 初始位置 → 初始随机潜在图像
  • 最终位置 → 最终清晰的潜在图像

采样示例

下面是一个使用 Euler 方法的文本到图像的例子。噪声时间表规定了每一步的噪声水平。采样器的任务是在每一步中减少刚好合适数量的噪声以匹配噪声时间表,直到在最后一步它降至零。

使用Euler15个采样步骤进行去噪

4.2 Euler a

Euler Ancestral(Euler a)采样器:这个和普通的Euler采样器很像。但是每一步都会减去比应该减去的更多的噪声,然后又加回一些随机噪声以匹配噪声计划。所以最后降噪后的图像取决于之前步骤添加的特定噪声。如果你重新来一遍,结果会不一样。

4.3 DDIM

(Denoising Diffusion Implicit Models):这是最早解决扩散模型的采样器之一。它基于这样的思路:每一步的图像可以通过添加以下三个部分来近似。

  1. 最终图像
  2. 指向当前步骤图像的图像方向
  3. 随机噪声

那我们在最后一步之前怎么知道最终的图像呢?DDIM采样器用降噪图像来近似它。同样地,图像方向是通过噪声预测器预测的噪声来近似的。

4.4 LMS和LMS Karras

与Euler方法非常相似,线性多步法 (LMS) 是求解常微分方程的标准方法。它的目的是通过巧妙地使用先前时间步骤的值来提高准确性。AUTOMATIC1111 默认使用最多 4 个最后值。

LMS Karras使用Karras的噪声计划。

4.5 Heun

这是Euler方法的一个更精确的改进。但是它每步需要预测两次噪声,所以比Euler慢两倍。

4.6 DPM采样器

这是一家族新开发的扩散模型解决方案。在AUTOMATIC1111中,有以下几种:

  1. DPM2
  2. DPM2 Karras
  3. DPM2 a
  4. DPM2 a Karras
  5. DPM Fast
  6. DPM adaptive
  7. DPM Karras

DPM2 是DPM-Solver文章中的DPM-Solver-2(算法1)。这个解算器精确到第二阶。

DPM2 Karras 与DPM2一样,只不过使用Karras的噪声调度。

DPM2 a 几乎与DPM2一样,只不过每个采样步骤都添加了噪声。这使得它成为一个祖先采样器。

DPM2 a Karras 几乎与DPM2 a一样,只是使用了Karras的噪声计划。

DPM Fast 是DPM解算器的一个变体,具有均匀的噪声计划。它精确到第一阶。所以它比DPM2快两倍。

DPM adaptive 是一个具有自适应噪声计划的一阶DPM解算器。它会忽略你设置的步骤数,并自适应地确定自己的。

DPM++采样器是DPM的改进版本。

4.7 UniPC

这是2023年新开发的扩散采样器,包括两个部分:

  1. 统一预测器(UniP)
  2. 统一校正器(UniC)

它支持任何解算器和噪声预测器。

总结

这篇文章详细介绍了Stable Diffusion中的各种采样器,包括它们的工作原理、区别以及如何选择合适的采样器。对于AI绘画和Stable Diffusion感兴趣的读者,这篇文章提供了丰富的图表和实例,有助于深入理解Stable Diffusion的采样过程。

对于实际应用,推荐使用DPM++ 2M Karras、Euler a、DDIM等采样器。在制作AI动画时,建议避免使用祖先采样器,因为它们的收敛性较差,会导致图片风格不稳定。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号