什么是采样?

Stable Diffusion生成图像的过程是:

采样器负责执行去噪步骤

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

这个逐步减噪的过程称为采样,因为Stable Diffusion在每一步中生成一个新的样本图像。采样中使用的方法称为采样器或采样方法。

采样只是Stable Diffusion模型的一部分。如果要理解整个模型,可以阅读“稳定扩散的工作原理是什么”这篇文章。

下面是一个采样过程的示例。采样器逐步生成更干净的图像。

每个去噪步骤后的图像

尽管框架相同,但是执行这一减噪过程的方法有很多种。它们之间通常需要在速度和准确性之间做权衡。

噪声概览

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

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

15 个采样步骤的噪声表

增加采样步数的效果是什么呢?每个步骤之间的噪声减少会更小,这有助于减少采样的截断误差。

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

30 个采样步骤的噪声表

采样器概述

老式 ODE 求解器

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

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

祖先采样器

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

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

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

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

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

Euler a (Step 2 – 40)

Euler (Step 2 – 40)

使用Euler a生成的图像在高采样步数下不会收敛。相比之下,Euler生成的图像收敛性良好。

为了重现性,使图像收敛是可取的。如果想生成细微变化,应该使用变分种子。

Karras噪声概览

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

默认噪声表和 Karras 噪声表之间的比较

DDIM 和 PLMS

DDIM(消噪扩散隐式模型)和 PLMS(伪线性多步法)是与原始的 Stable Diffusion v1 一起发布的采样器。

DDIM 是最早为扩散模型设计的采样器之一。PLMS 是 DDIM 的一个新的、更快的替代方案。

它们现在普遍被视为过时的,不再被广泛使用。

DPM 和 DPM++

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

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

DPM++ 是 DPM 的改进版本。

DPM adaptive 自适应地调整步长。它可能会比较慢,因为它不保证在采样步数内结束。

UniPC

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

k-diffusion

最后,你可能听说过 k-diffusion 这个词,并且困惑它的含义。它仅仅指 Katherine Crowson 的 k-diffusion GitHub 仓库以及相关的采样器。

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

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

选择采样器?

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

图像融合

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

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 进行比较。

祖先采样器

如果稳定、可重复的图像是您的目标,则不应使用祖先采样器。所有祖先采样器并不收敛。

祖先采样器不能很好地收敛(越低越好)

DPM 和 DPM2

DPM fast收敛得不好。DPM2和DPM2 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 进行两次评估。所以它们的速度慢两倍。

质量

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

最终图像

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

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

DPM++ fast 非常失败。祖先样本没有收敛到其他采样器收敛到的图像。

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

感知质量

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

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

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

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

DPM2 采样器的性能略优于 Euler。

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

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

总结

Euler采样法:

  • 优点:简单、快速,容易实现。图像收敛性好。
  • 缺点:质量略差,需要更多采样步骤才能达到较好的图像质量。

Heun采样法:

  • 优点:相比Euler法更准确,图像质量较好。
  • 缺点:需要两次预测噪声,速度较Euler法慢一倍。

DDIM采样法:

  • 优点:可以快速生成质量较高的图像。
  • 缺点:图像不稳定,多次采样结果不同。

DPM系列采样法:

  • 优点:质量整体优于Euler法,收敛性良好。
  • 缺点:速度比Euler法慢,DPM自适应版较慢。

DPM++系列采样法:

  • 优点:质量很高,尤其是DPM++ SDE。
  • 缺点:部分方法图像不稳定,多次采样结果波动大。

UniPC采样法:

  • 优点:速度快,20-30步可达较好质量。
  • 缺点:低采样步数下质量略差,收敛性较差。

关于DPM系列采样器

DPM2采样法:

  • 优点:相比Euler法更准确,可以达到二阶的准确度。图像质量好,收敛性强。
  • 缺点:需要两次预测噪声,速度较Euler法慢一倍。

DPM2 Karras采样法:

  • 优点:同DPM2,使用Karras噪声计划可以提高高采样步数下的收敛性。
  • 缺点:同DPM2,速度较慢。

DPM Fast采样法:

  • 优点:速度快,采用统一噪声计划。
  • 缺点:只有一阶准确度,质量略差,收敛性较差。

DPM自适应采样法:

  • 优点:可以自适应确定采样步数,图像质量好。
  • 缺点:速度非常慢,无法控制总采样步数。

DPM++ 2M采样法:

  • 优点:质量显著优于DPM,收敛性良好。
  • 缺点:速度较DPM系列略慢。

DPM++ 2M Karras采样法:

  • 优点:在高采样步数下,收敛性超过DPM++ 2M,质量也略优。
  • 缺点:速度较慢。

我该选择哪一个采样器?

以下是我的建议:

  1. 如果你想使用快速、融合、新颖且质量不错的东西,那么最好的选择是

    • DPM++ 2M Karras,20 – 30 个步骤
    • UniPC有 20-30 个步骤。
  2. 如果您想要高质量的图像并且不关心收敛,那么不错的选择是

    • DPM++ SDE Karras具有 10-15 个步骤(注意:这是一个较慢的采样器)
    • DDIM有 10-15 个步骤。
  3. 如果您喜欢稳定、可重复的图像,请避免使用任何祖先采样器。
  4. 如果您喜欢简单的东西,Euler和Heun是不错的选择。减少 Heun 的步骤以节省时间。
文章内容引用自Stable Diffusion Samplers: A Comprehensive Guide