亦束的头像

Stable Diffusion 采样器:综合指南

单集封面

Stable Diffusion 采样器:综合指南

2023-04-09
424 次观看
亦束的头像
亦束
粉丝:180
主题:12
描述:20
例子:12
其他:4
字数:5533

Stable Diffusion 采样器:综合指南

2023-04-09
424 次观看
亦束的头像
亦束
粉丝:180
亦束的头像
亦束
粉丝:180
主题:12
描述:20
例子:12
其他:4
字数:5533

采样器综合指南

在本文中,我们将讨论AUTOMATIC1111 稳定扩散图形用户界面中可用的采样器。您可以在WindowsMacGoogle Colab上使用此图形用户界面。本文将解释采样器是什么,它们如何工作,它们之间的区别,以及您应该使用哪一个。

什么是采样器?

1

采样器

为了生成一幅图像,稳定扩散首先在潜在空间中生成一个完全随机的图像。接着,噪声预测器估计图像的噪声。预测出的噪声从图像中减去。这个过程重复十几次。最后,您将得到一幅干净的图像。 这个去噪过程被称为“采样”,因为稳定扩散在每个步骤中都会生成一个新的采样图像。用于采样的方法被称为“采样器或采样方法”。 采样仅仅是稳定扩散模型的一部分。如果您想了解整个模型,请阅读文章“稳定扩散如何工作?”本站链接)。 下面是一个采样过程的实际操作,采样器逐渐产生越来越清晰的图像。

step

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

噪声调度器

您一定注意到了嘈杂的图像逐渐变得清晰。噪声计划控制每个采样步骤中的噪声水平。噪声在第一步最高,然后逐渐降低到最后一步的零。 在每个步骤中,采样器的任务是生成具有与噪声计划相匹配的噪声水平的图像。

2

增加采样步数会产生什么效果呢?每一步之间的噪声减少会变得更小。这有助于减少采样的截断误差。 比较下面15步和30步的噪声计划: 增加采样步数的效果是每个步骤之间的噪声减小量较小。这有助于减少采样的截断误差。

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

3

30步采样的噪声计划。

采样器概览

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

4

AUTOMATIC1111中的采样器。 在本文后面的部分,您将了解它们是什么,但技术细节可能会让人摸不着头脑,所以我在这一部分包括了一个鸟瞰图,这会有助于您大致了解它们是什么。

老式ODE解析器

让我们先解决容易的问题,列表上的一些采样器是在一百多年前发明的,它们是解决常微分方程(ODE)的老派方法。

  • Euler - 最简单的求解器。

  • Heun - 比欧拉更准确但速度较慢的版本。

  • LMS(线性多步方法)- 速度与欧拉相同,但(据称)更准确。

Ancestral采样器

您有没有注意到一些采样器的名字中有一个字母 "a"?

  • Euler a

  • DPM2 a

  • DPM++ 2S a

  • DPM++ 2S a Karras

它们是Ancestral采样器。Ancestral采样器在每个采样步骤中为图像添加噪声。它们是随机采样器,因为采样结果具有一定的随机性。

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

使用Ancestral采样器的缺点是图像不会收敛,比较使用Euler a 和Euler生成的图像。(第一个Euler a,第二个Euler,sample steps 2-40)

cat cat2

使用Euler a生成的图像在高采样步骤下不收敛。相比之下,Euler生成的图像收敛良好。 为了重现性,最好让图像收敛。如果您想生成轻微的变化,您应该使用variational seed

Karras噪声调度

带有“Karras”标签的采样器使用Karras文章中推荐的噪声调度。如果你仔细观察,你会发现靠近结尾的噪声步长较小,他们发现这可以提高图像的质量。

5

默认和Karras噪声调度之间的比较。

DDIM和PLMS

DDIM(去噪扩散隐式模型)和 PLMS(伪线性多步方法)是原始Stable Diffusion v1附带的采样器。DDIM 是为扩散模型设计的第一批采样器之一。PLMS 是 DDIM 的更新和更快的替代品。

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

DPM和DPM++

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

DPM 和 DPM2 除了 DPM2 是二阶的(更准确但速度更慢)之外,其他方面都很相似。

DPM++ 是 DPM 的改进。

DPM 自适应会自适应地调整步长。它可能会很慢,因为它不能保证在采样步数内完成。

UniPC

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

k-扩散

最后,你可能听过k-扩散(k-diffusion)这个术语,想知道它是什么意思。它仅仅是指Katherine Crowson的k-扩散GitHub仓库以及与之相关的采样器。 该仓库实现了Karras 2022文章中研究的采样器。 基本上,除了DDIM、PLMS和UniPC外,AUTOMATIC1111中的所有采样器都来自k-扩散。

评估采样器

如何选择采样器?本节将提供一些客观的比较,以帮助您做出决定。

图像收敛性

在这一部分,我将使用不同的采样器生成相同的图像,最多采样40步。第40步时的最后一张图像用作评估采样收敛速度的参考。Euler 算法将作为参考。

原始扩散求解器

首先,让我们看一下Euler、DDIM、PLMS、LMS Karras和Heun这组采样器,因为它们代表了老派的常微分方程求解器或原始扩散求解器。DDIM的收敛速度与Euler算法相当,但变化更多。这是因为在采样步骤中注入了随机噪声。

6

在这个测试中,PLMS的表现并不是很好。 LMS Karras似乎很难收敛,并在较高的基线上稳定。 Heun 收敛速度更快,但由于它是二阶方法,所以速度慢了两倍。因此,我们应该比较修恩在30步时与欧拉在15步时的表现,例如。

Ancestral采样器评估 图像收敛性

如果稳定、可重现的图像是您的目标,那么您不应该使用Ancestral samplers。所有Ancestral samplers都不收敛。

7

DPM和DPM2 图像收敛性

DPM fast 收敛性不佳。DPM2 和 DPM2 Karras 的表现优于Euler,但代价是速度慢了两倍。 DPM 自适应表现得出奇的好,因为它使用了自己的自适应采样步骤。但它可能会非常慢。

8

DPM++解析器 图像收敛性

DPM++ SDE 和 DPM++ SDE Karras 遭受与Ancestral samplers相同的缺陷。它们不仅不收敛,而且随着步数的变化,图像波动也相当大。 DPM++ 2M 和 DPM++ 2M Karras 表现良好。当步数足够高时,Karras 变体收敛速度更快。

9

UniPC评估 图像收敛性

UniPC 的收敛速度比 Euler 慢一点,但还不错。

10

Speed

11

Speed 评估2

尽管DPM自适应在收敛方面表现出色,但它也是最慢的。

你可能已经注意到,其余的渲染时间分为两组,第一组花费的时间大致相同(约1倍),另一组花费大约两倍的时间(约2倍)。这反映了解算器的顺序。尽管二阶解算器更精确,但它需要对去噪U-Net进行两次评估,因此速度慢2倍。

质量

质量 评估3

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

最终图像

最终图像 评估4

首先让我们看一下图像的一些样本。

12

13

DPM++快速版表现相当糟糕。Ancestral samplers未收敛至其他采样器收敛的图像。

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

感知质量

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

BRISQUE

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

DDIM BRISQUE

在这里,DDIM表现得出奇地好,能够在仅仅8步内产生整组中质量最高的图像。

14

Ancestral BRISQUE

除了一两个例外,所有ancestral samplers在生成高质量图像方面的表现都与 Euler 相似。

15

DPM2和Euler BRISQUE

DPM2 采样器略胜 Euler。

16

DS和DSK BRISQUE

DPM++ SDE 和 DPM++ SDE Karras 在该质量测试中表现最佳。

17

UniPC1 BRISQUE

UniPC 在低步数上比 Euler 稍差,但在高步数上与它相当。

18

那么……哪一个是最好的呢?

建议 采样器1

以下是我的建议: 如果你想使用速度快、收敛、新颖且质量不错的方法,很好的选择是:

  • DPM++ 2M Karras,使用20-30步

  • UniPC,使用20-30步。

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

  • DPM++ SDE Karras,使用8-12步(注意:这是一个较慢的采样器)

  • DDIM,使用10-15步。

如果你更喜欢稳定、可重复的图像,请避免使用任何ancestral samplers。

如果你更喜欢简单的方法,Euler和Heun是不错的选择。可以减少Heun步数以节省时间。

采样器解释

你将在AUTOMATIC1111中找到关于采样器的信息。这些采样器的内部工作在本质上是数学性的。我将详细解释Euler(最简单的一个)。它们中的许多都包含Euler的元素。

欧拉(Euler)

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

以下是逐步采样:

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

步骤2:根据噪声计划计算需要减去的噪声量。即当前步骤和下一步骤之间的噪声差异。

步骤3:用归一化的噪声图像(来自步骤1)乘以需要减少的噪声量(来自步骤2),然后从潜在图像中减去这个值。

重复步骤1至3,直到噪声计划结束。

噪声计划

但是,如何知道每个步骤中的噪声量呢?实际上,这是你告诉采样器的内容。

噪声计划

噪声计划告诉采样器每个步骤应该有多少噪声。为什么模型需要这个信息呢?噪声预测器根据应该存在的总噪声量来估计潜在图像中的噪声。(这就是它的训练方式。)

训练方式 噪声计划

2

第一步中的噪声量最大。噪声逐渐减小,到最后一步降为零。

改变采样步骤的数量会改变噪声计划。实际上,噪声计划变得更加平滑。采样步骤数量较高的情况下,任意两个步骤之间的噪声减少较小。这有助于减少截断误差。

从随机到确定性采样

你是否想知道为什么可以用确定性ODE求解器解决随机采样问题?这被称为“概率流公式”。与其求解样本的演化方式,不如求解其概率分布的演化方式。这与求解随机过程中概率分布而非样本轨迹相同。

ODE求解器映射

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

  • 时间→噪声

  • 时间量化→噪声计划

  • 位置→潜在图像

  • 速度→预测噪声

  • 初始位置→初始随机潜在图像

  • 最终位置→最终清晰的潜在图像

采样示例

文生图 欧拉(Euler)

以下是使用欧拉法进行文本到图像的示例。噪声计划决定每个步骤中的噪声级别。采样器的任务是在每个步骤中减少适当的噪声量以匹配噪声计划,直到最后一步噪声为零。

step

欧拉a

Euler ancestral(Euler a)采样器与欧拉采样器类似。但在每个步骤中,它比应该减去的噪声多减去一些噪声,并添加一些随机噪声以匹配噪声计划。去噪后的图像取决于前几个步骤中添加的特定噪声。因此,它是一种Ancestral采样器,因为图像去噪的路径取决于每个步骤中添加的特定随机噪声。如果再次进行,结果将会不同。

去噪扩散隐式模型

去噪扩散隐式模型(DDIM)是解决扩散模型的第一批采样器之一。它基于这样一个想法:每个步骤中的图像可以通过添加以下三个组件来近似表示。

  • 1.最终图像

  • 2.指向当前步骤图像的图像方向

  • 3.随机噪声 在到达最后一步之前,我们如何知道最终图像呢?DDIM采样器用去噪图像近似表示。类似地,图像方向由噪声预测器估计的噪声近似表示。

LMS和LMSK

LMS and LMS Karras与欧拉法类似,线性多步法(LMS)是求解常微分方程的标准方法。它通过巧妙地利用前几个时间步的值来提高精度。AUTOMATIC1111默认使用最多4个最后的值。

LMS Karras使用Karras噪声计划。

Heun

Heun算法是对欧拉法的更精确改进。但是它需要在每个步骤中预测两次噪声,所以它的速度是欧拉的两倍。

DPM采样器

扩散概率模型求解器(DPM-Solvers)属于为扩散模型新开发的求解器家族。它们是AUTOMATIC1111中的以下求解器。

  • DPM2

  • DPM2 Karras

  • DPM2 a

  • DPM2 a Karras

  • DPM Fast

  • DPM adaptive

  • 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 自适应是具有自适应噪声计划的一阶 DPM 求解器。它忽略了你设置的步数,并自适应地确定自己的步数。

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

统一预测修正方法

UniPC(统一预测修正方法)是 2023 年新开发的扩散采样器。它包括两部分:

  • 统一预测器(UniP)

  • 统一校正器(UniC)

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

原文章

作者:Andrew,翻译:亦束

讨论
随记