当前位置:   article > 正文

[AIGC] Stable Diffusion 采样器:综合指南_dpm++ 2m karras

dpm++ 2m karras

英文原文:https://stable-diffusion-art.com/samplers/

先说建议:

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

AUTOMATIC1111 中提供了多种采样方法。 Euler a、Heun、DDIM……什么是采样器?它们如何工作?它们之间有什么区别?您应该使用哪一个?您将在本文中找到答案。

我们将讨论 AUTOMATIC1111 稳定扩散 GUI 中提供的采样器。您可以在 Windows、Mac 或 Google Colab 上使用此 GUI。

什么是采样?

在这里插入图片描述
采样器负责执行去噪步骤。

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

这个去噪过程称为采样,因为稳定扩散技术每一步都会生成一个新的样本图像。采样中使用的方法称为采样器或采样方法。

采样只是稳定扩散模型的一部分。阅读文章“稳定扩散如何工作?”如果你想了解整个模型。

下面是一个正在运行的采样过程。采样器逐渐产生越来越清晰的图像。

在这里插入图片描述
虽然框架是相同的,但有许多不同的方法可以执行此去噪过程。这通常是速度和准确性之间的权衡。

Noise schedule(噪音表)

您一定已经注意到,嘈杂的图像逐渐变成清晰的图像。噪声表控制每个采样步骤的噪声水平。噪声在第一步最高,在最后一步逐渐降至零。

在每个步骤中,采样器的工作是生成噪声水平与噪声表相匹配的图像。

在这里插入图片描述
15 个采样步骤的噪声表。

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

比较下面 15 步和 30 步的噪声表。

在这里插入图片描述

采样器概述

截至撰写本文时,AUTOMATIC1111 中有 19 个采样器可用。随着时间的推移,这个数字似乎在增长。有什么区别?
在这里插入图片描述
AUTOMATIC1111 中的采样器。

您将在本文的后面部分了解它们是什么。技术细节可能令人难以承受。所以我在本节中包含了鸟瞰图。这应该可以帮助您大致了解它们是什么。

老式 ODE 求解器

让我们先剔除简单的。列表中的一些采样器是一百多年前发明的。它们是常微分方程 ordinary differential equations (ODE) 的老式求解器。

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

祖传采样器

您是否注意到某些采样器的名字有一个字母“a”?

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

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

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

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

drawing

Euler 收敛

使用 Euler a 生成的图像在高采样步长时不会收敛。相比之下,欧拉的图像收敛得很好。

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

Karras 噪音表

带有“Karras”标签的采样器使用 Karras 文章中推荐的噪声表。如果仔细观察,您会发现噪声步长在接近末尾时较小。他们发现这提高了图像质量。
在这里插入图片描述
默认噪声表和 Karras 噪声表之间的比较。

DDIM 和 PLMS

DDIM(Denoising Diffusion Implicit Model 去噪扩散隐式模型)和 PLMS(Pseudo Linear Multi-Step伪线性多步方法)是原始稳定扩散 v1 附带的采样器。 DDIM 是最早为扩散模型设计的采样器之一。 PLMS 是 DDIM 更新、更快的替代方案。

它们通常被认为已经过时并且不再广泛使用。

DPM 和 DPM++

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

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

DPM++ 是对 DPM 的改进。

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

UniPC

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

k-diffusion

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

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

基本上,AUTOMATIC1111 中除 DDIM、PLMS 和 UniPC 之外的所有采样器都是从 k-diffusion 借用的。

评估采样器

如何选择采样器?您将在本节中看到一些客观的比较来帮助您做出决定。

图像收敛

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

Euler、DDIM、PLMS、LMS Karras 和 Heun

首先,让我们将 Euler、DDIM、PLMS、LMS Karras 和 Heun 作为一组来看看,因为它们代表了老式的 ODE 求解器或原始扩散求解器。 DDIM 收敛于欧拉的步长,但有更多变化。这是因为它在采样步骤中注入了随机噪声。
在这里插入图片描述
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++ 求解器

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

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

在这里插入图片描述
DPM++ 采样器的收敛性(越低越好)。

UniPC

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

在这里插入图片描述

速度

在这里插入图片描述
每种方法的相对渲染时间(越低越好)

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

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

品质

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

最终图像

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DPM++ fast 非常失败。祖先样本没有收敛到其他采样器收敛到的图像。

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

感知质量

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

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

DDIM 在这方面的表现出人意料地好,能够在短短 8 个步骤内生成组内最高质量的图像。

在这里插入图片描述
DDIM、PLMS、Heun 和 LMS Karras 的图像质量(越低越好)。

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

在这里插入图片描述
DPM2 采样器的表现优于 Euler。

在这里插入图片描述
DPM 采样器的图像质量(越低越好)。

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

在这里插入图片描述
DPM++ 采样器的图像质量(越低越好)。

UniPC 在低步长上比 Euler 稍差,但在高步长上与 Euler 相当。
在这里插入图片描述

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

以下是我的建议:

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

采样器解释

您可以在 AUTOMATIC1111 中找到有关可用采样器的信息。这些采样器的内部工作本质上是非常数学化的。我只详细解释一下欧拉(最简单的)。其中许多都具有欧拉的元素。

Euler

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

下面是逐步采样。

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

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

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

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

噪声表

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

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

在这里插入图片描述
15 个采样步骤的噪声表。

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

改变采样步数会改变噪声表。实际上,噪音时间表变得更加平滑。采样步数越多,任何两个步之间的噪声降低越小。这有助于减少截断错误。

从随机抽样到确定性抽样

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

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

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

采样示例

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

在这里插入图片描述
使用欧拉方法和 15 个采样步骤进行去噪。

Euler a

欧拉祖先(Euler a)采样器与欧拉采样器类似。但在每一步中,它都会减去比应有的更多的噪声,并添加一些随机噪声以匹配噪声计划。去噪图像取决于前面步骤中添加的特定噪声。因此,它是一个祖先采样器,从某种意义上说,图像去噪的路径取决于每个步骤中添加的特定随机噪声。如果再做一次,结果就会不一样。

DDIM

Denoising Diffusion Implicit Models 去噪扩散隐式模型 (DDIM) 是最早用于求解扩散模型的采样器之一。它基于这样的思想:每个步骤的图像可以通过添加以下三个分量来近似。

  • 最终图像
  • 图像方向指向当前步骤的图像
  • 随机噪声

在进行最后一步之前我们如何知道最终图像? DDIM 采样器使用去噪图像对其进行近似。类似地,图像方向由噪声预测器估计的噪声来近似。

LMS 和 LMS Karras

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

LMS Karras 使用 Karras 噪声表。

Heun

Heun 方法是对 Euler 方法更精确的改进。但它每一步需要预测噪声两次,因此比欧拉慢两倍。

DPM 采样器

Diffusion Probabilistic Model Solvers 扩散概率模型求解器 (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 除了使用 Karras 噪声调度程序外,与 DPM2 完全相同。

DPM2 a 几乎与 DPM2 相同,只是每个采样步骤都添加了噪声。这使其成为祖先采样器。

DPM2 a Karras 几乎与 DPM2 a 相同,只是使用了 Karras 噪声表。

DPM Fast 是具有统一噪声表的 DPM 求解器的变体。直到第一个订单为止都是准确的。因此它的速度是 DPM2 的两倍。

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

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

UniPC

UniPC(Unified Predictor Corrector方法)是2023年新开发的扩散采样器,由两部分组成

  • 统一预测器 (UniP)
  • 统一校正器 (UniC)

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/859814
推荐阅读
相关标签
  

闽ICP备14008679号