Stable Diffusion Samplers:综合指南

AUTOMATIC111中提供了许多采样方法,例如,Euler a,Heun,DDIM…

什么是采样器?它们是如何工作的?它们之间有什么区别?你应该用哪一个?你会在这篇文章中找到答案。

我们将讨论AUTOMATIC1111  Stable Diffusion GUI中可用的采样器。您可以在WindowsMac, 或 Google Colab 上使用此GUI

什么是采样?

采样器负责执行去噪步骤

为了生成图像, Stable Diffusion首先在潜在空间中生成一个完全随机的图像。然后噪声预测器(noise predictor)估计图像的噪声,从图像中减去预测的噪声(predicted noise)。这个过程重复了十几次。最后,你会得到一个干净的图像。

这种去噪过程被称为采样(sampling),因为Stable Diffusion在每个步骤中都会生成一个新的样本图像。采样中使用的方法称为采样器采样方法

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

以下是正在进行的采样过程。采样器逐渐产生越来越清晰的图像。

每个去噪步骤后的图像

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

噪声计划

 

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

在每一步中,采样器的工作都是产生一幅噪声水平与噪声时间表相匹配的图像

15个采样步骤的噪声一览表

增加采样步骤的数量有什么影响?每一步之间的噪音降低较小,这有助于减少采样的截断误差。

我们来比较以下15个步骤和30个步骤的噪音计划。

30个采样步骤的噪声一览表

采样器概述

在撰写本文时,AUTOMATIC111中有19个采样器可用。这个数字似乎随着时间的推移而增长。你看看有什么不同?


AUTOMATIC111中的采样器

技术细节可能会让人应接不暇,但您将在本文的后面部分了解它们是什么,并且我在这一节中包含了一个鸟瞰图。这应该有助于你了解它们是什么。

Old-School ODE solvers

让我们先把容易的敲出来,名单上的一些采样器是一百多年前发明的,他们是老式的常微分方程求解器(ODE)。

  • Euler–最简单的解算器。
  • Heun–更精确但速度较慢的版本。
  • LMS(线性多步法)速度与Euler相同,但(据说)更准确。

原始采样器

你注意到一些采样器的名字只有一个字母“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的图像收敛良好。

为了再现性,希望图像收敛。如果你想产生轻微的变化,你应该使用 variational seed.。

Karras噪声计划

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


默认和Karras噪声计划之间的比较

DDIM和PLMS

DDIM(Denoising Diffusion Implicit Model))和PLMS(Pseudo Linear Multi-Step method)是最初的 Stable Diffusion v1附带的采样器。DDIM是为扩散模型设计的首批采样器之一,PLMS是DDIM的一种更新、更快的替代方案。

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

DPM和DPM++

DPM(Diffusion probabilistic model solver)DPM++是为2022年发布的扩散模型设计的新采样器。它们代表了一系列具有类似架构的解算器。

DPMDPM2相似,但DPM2是二阶(更准确但更慢)。

DPM++是对DPM的改进。

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

UniPC

UniPC(Unified Predictor Corrector)是2023年发布的一款新采样器,受ODE解算器中预测校正方法的启发,它可以在5-10个步骤中实现高质量的图像生成。

k-diffusion

最后,你可能听说过k-diffusion这个术语,并想知道它的含义。它只是指Katherine Crowson的k-diffusion GitHub存储库以及与之相关的采样器。

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

实际上,AUTOMATIC111中除了DDIM、PLMS和UniPC之外的所有采样器都是从k-diffusion中借来的。

评估采样器(Evaluating samplers)

我们如何挑选采样器呢?您将在本节中看到一些客观的比较,以帮助您做出决定。

图像收敛(Image Convergence)

在本节中,我将使用多达40个采样步骤的不同采样器生成相同的图像。第40步的最后一幅图像,使用Euler method ,将它用作评估采样收敛速度的参考。

Euler, DDIM, PLMS, LMS Karras 和 Heun

首先,让我们将Euler、DDIM、PLMS、LMS Karras和Heun视为一个组,因为它们代表老式的ODE解算器(old-school ODE solvers )或原始扩散解算器(original diffusion solver)。DDIM收敛的步长约为Euler的步长,但变化较大,这是因为它在采样步骤中注入了随机噪声。


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

PLMS在这次测试中表现不佳。

LMS Karras似乎很难收敛,并且已经稳定在更高的基线上。

Heun收敛更快,但由于它是一种二阶方法,收敛速度慢了两倍。例如,我们应该比较30步的Heun和15步的Euler。

原始采样器(Ancestral samplers)

如果你的目标是一个稳定、可复制的图像,你不应该使用原始采样器,因为所有原始采样器都不收敛。

原始采样器不能很好地收敛(越低越好)

DPM 和 DPM2

DPM fast收敛不好,DPM2DPM2 Karras的性能比Euler好,但同样以慢两倍为代价。

DPM adaptive执行得很好,因为它使用了自己的自适应采样步骤。但它可能非常慢。

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

DPM++ solvers

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

DPM++2MDPM++2M Karras表现良好。当步数足够高时,Karras变体收敛得更快。


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

UniPC

UniPC的收敛速度比Euler慢一点,但也不算太差。


速度

每种方法的相对呈现时间(越低越好)

尽管DPM adaptive在收敛方面表现良好,但它也是最慢的。

您可能已经注意到,其余的渲染时间分为两组,第一组的渲染时间大约相同(约1x),另一组的渲染时长大约两倍(约2x)。这反映了解算器的顺序。二阶解算器虽然更准确,但需要对去噪U-Net进行两次评估。所以它们慢了2倍。

质量

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

最终图像

让我们首先看一下图像的示例:

Euler
Heun
DDIM
PLMS
LMS Karras
Euler a
DPM2
DPM2 a
DPM2 a Karras
DPM2 Karras
DPM ++2M Karras
DPM++ 2S a Karras
DPM++ 2S a
DPM++ adaptive
DPM++ fast
DPM++ SDE Karras
DPM++ SDE
UniPC

DPM++ fast容易失败,原始样本没有收敛到其他采样器收敛到的图像。

原始采样器倾向于收敛到小猫的图像,而确定性采样器倾向于聚合到猫的图像。其实没有正确的答案,只要它们在你看来是好的。

感知质量

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

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

DDIM在这里做得出奇地好,能够在短短8个步骤内生成组内最高质量的图像。

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

除了一两个例外,所有原始采样器在生成高质量图像方面的性能与Euler类似。

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

DPM2采样器略优于Euler


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

DPM++SDEDPM++SDE Karras在该质量测试中表现最好

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

UniPC在低阶上比Euler稍差,但在高阶上与之相当

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

那么…哪一个是最好的?

以下是我的建议:

  1. 如果你想使用快速、融合、新的、质量上乘的东西,那么优秀的选择是 :    DPM++2M Karras,20–30步  ;UniPC,20-30步。
  2. 如果你想要高质量的图像,而不关心收敛,那么好的选择是:                              DPM++SDE Karras,10-15步(注意:这是一个较慢的采样器);DDIM,10-15步。
  3. .如果您喜欢稳定、可复制的图像,请避免使用任何原始采样器。
  4. 如果你喜欢简单的东西,Euler和Heun是不错的选择。减少Heun的步骤数量以节省 时间。

示例说明

您可以在AUTOMATIC111中找到有关采样器的信息。这些采样器的内部工作本质上是数学性质的。我只会详细解释Euler(最简单的一个),其中许多共享的Euler元素。

Euler

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

以下是逐步采样。

步骤1:噪声预测器根据潜像估计噪声图像。

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

步骤3:将潜像减去归一化噪声图像(来自步骤1)乘以要减少的噪声量(来自步骤2)。

重复步骤1到3,直到噪波明细表结束。

噪声一览表

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

噪声一览表告诉采样器每一步应该有多少噪声。为什么模型需要这些信息?噪声预测器基于假定存在的噪声总量来估计潜像中的噪声。(这就是它的训练方式。)

Noise schedule of stable diffusion samplers

15个采样步骤的噪声计划

第一步的噪音最大,噪声逐渐减小,并在最后一步降至零。

更改采样步长会更改噪波明细表。实际上,噪音时间表会变得更顺畅,采样步骤的数目越高,任何两个步骤之间的噪声降低越小。这有助于减少截断错误。

从随机抽样到确定性抽样

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

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

  • 时间→ 噪音
  • 时间量化→ 噪声计划
  • 位置→ 潜像
  • 速度→ 预测噪声
  • 初始位置→ 初始随机潜像
  • 最终位置→ 最终清晰潜像

采样示例

下面是使用欧拉方法的文本到图像的示例。噪音计划规定了每一步的噪音水平。采样器的工作是在每一步中将噪声减少适量,以匹配噪声调度,直到最后一步为零。

采用欧拉方法和15个采样步骤进行去噪

Euler a

Euler原始((Euler a)采样器类似于Euler采样器。但在每一步中,它都会减去比应该减去的更多的噪声,并添加一些随机噪声以匹配噪声调度。去噪图像取决于在前面步骤中添加的特定噪声。因此,它是一个原始采样器,因为图像去噪的路径取决于每一步中添加的特定随机噪声。如果你再做一次,结果会不一样。

DDIM

Denoising Diffusion Implicit Models (DDIM)是求解扩散模型的首批采样器之一。它基于这样的想法,即可以通过添加以下三个分量来近似每一步的图像。

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

在我们进入最同样类似地,通过由噪声预测器估计的噪声来近似图像方向。

LMS 和 LMS Karras

与欧拉方法非常相似, linear multistep method(LMS)是求解常微分方程的标准方法。它旨在通过巧妙地使用前面时间步长的值来提高准确性。AUTOMATIC111默认情况下最多使用最后4个值。

LMS Karras使用Karras噪声调度。

Heun

Heun’s method是对Euler方法更精确的改进。但它需要在每一步中预测两次噪声,因此它的速度是欧拉的两倍。

DPM samplers

Diffusion Probabilistic Model Solvers(DPM Solvers)属于一个新开发的扩散模型求解器家族。它们是AUTOMATIC111中的以下解算器。

  • DPM2
  • DPM2 Karras
  • DPM2 a
  • DPM2 a Karras
  • DPM Fast
  • DPM adaptive
  • DPM Karras

DPM2DPM-Solver文章的DPM-Solver-2(算法1),精确到二阶。

除了使用Karras噪声调度器之外,DPM2 KarrasDPM2相同。

DPM2 a几乎与DPM2相同,不同之处在于每个采样步骤都添加了噪声,这使它成为一个原始采样器。

除了使用Karras噪声调度之外,DPM2 a Karras几乎与DPM2 a相同。

DPM Fast是具有统一噪声调度的DPM解算器的变体。它精确到一阶。因此它的速度是DPM2的两倍。

DPM自适应是一种具有自适应噪声调度的一阶DPM求解器。它忽略您设置的步数,并自适应地确定自己的步数。

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

UniPC

UniPC(Unified Predictor Corrector method)是2023年新开发的一种扩散采样器。它由两部分组成

  • Unified predictor (UniP)
  • Unified corrector (UniC)

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

《Stable Diffusion Samplers:综合指南》有2条评论

发表评论