本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。
大家好,我是水滴~~
本文将深入探讨Stable Diffusion WebUI生成参数中的采样器和采样步数,旨在为读者呈现一个全面而细致的解析。我们将从采样器和采样步数的概念出发,逐步深入到采样器的不同类别,以及如何根据自身需求选择适合的采样器。此外,我们还将对采样器相关的名词进行详细的解释,以帮助读者更好地理解这一概念。通过本文,您将能够更深入地了解Stable Diffusion WebUI生成参数中的采样器和采样步数,为您在实际应用中提供有力的指导。
文章目录
- 什么是采样器
- 什么是采样步数
- 采样器的类别
- 如何选择采样器
- 采样器名词解释
- **Euler**
- Euler a
- DDIM
- PLMS
- LMS 和 LMS Karras
- Heun
- DPM
- UniPC
- Restart
- LCM
在 Stable Diffusion WebUI 中有很多种采样器,那么它们都有什么区别呢?我们该如何选择?采样步数又是什么?本篇文章将为你详细讲述这些内容。
什么是采样器
为了生成图像,Stable Diffusion 首先在潜在空间中生成一个完全随机的图像。然后,噪声预测器估计图像的噪声。将预测的噪声从图像中减去。这个过程重复十几次。最后,你得到一个干净的图像。
这种去噪过程(denoising process)被称为采样(sampling),因为 Stable Diffusion 在每一步都会生成一个新的样本图像。采样中使用的方法被称为采样器或采样方法(sampling method)。
采样器在 Stable Diffusion 中扮演着关键角色,它决定了如何从潜在空间中的随机噪声开始,通过逐步去除噪声,最终生成符合文本描述的图像。不同的采样器可能采用不同的算法和策略来实现这一过程。
下图是一个采样器的运行过程,可以看出产生图像越来越清晰:
什么是采样步数
采样迭代步数(Sampling Steps)是指在生成图像的过程中,Stable Diffusion 模型为了从初始的随机噪声逐步优化到最终清晰图像所进行的迭代次数。在每次迭代中,模型都会根据当前的图像状态以及预设的噪声预测器来调整图像内容,逐渐去除噪声,增加图像的清晰度和细节。
迭代步数是一个重要的超参数,它影响着生成图像的质量和计算成本。增加迭代步数通常可以提高图像的清晰度和细节,但也会增加计算时间和资源消耗。因此,在实际应用中,需要根据具体需求和计算资源来选择合适的迭代步数。
下图为采样器的去噪步骤:
采样器的类别
截止到目前,Stable Diffusion WebUI 中有 31 个采样器(以后可能还会增加)。关于这些采样器的源码信息,可以在 stable-diffusion-webui\modules
目录下的 sd_samplers_kdiffusion.py
、sd_samplers_timesteps.py
和 sd_samplers_lcm.py
文件中找到。
下面是这 31 个采样器的列表:
DPM++ 2M Karras
DPM++ SDE Karras
DPM++ 2M SDE Exponential
DPM++ 2M SDE Karras
Euler a
Euler
LMS
Heun
DPM2
DPM2 a
DPM++ 2S a
DPM++ 2M
DPM++ SDE
DPM++ 2M SDE
DPM++ 2M SDE Heun
DPM++ 2M SDE Heun Karras
DPM++ 2M SDE Heun Exponential
DPM++ 3M SDE
DPM++ 3M SDE Karras
DPM++ 3M SDE Exponential
DPM fast
DPM adaptive
LMS Karras
DPM2 Karras
DPM2 a Karras
DPM++ 2S a Karras
Restart
DDIM
PLMS
UniPC
LCM
尽管采样器种类繁多,但并非每一种都适用于我们的需求。下面是对采样器的一个分类:
图片来自B站:CG迷李辰
如何选择采样器
以下是我的建议:
- 如果您想要使用快速、收敛、新颖且质量不错的方法,优秀的选择包括:
- DPM++ 2M Karras,20 – 30 个步骤
- UniPC 有 20-30 个步骤。
- 如果您追求图像质量而不关心收敛性,可以考虑以下选择:
- DPM++ SDE Karras具有 10-15 个步骤(注意:这是一个较慢的采样器)
- DDIM有 10-15 个步骤。
-
如果您希望获得稳定、可复现的图像,请避免使用任何祖先采样器。
-
如果您偏向于简单的方法,Euler 和 Heun 是不错的选择。对于 Heun 方法,可以减少步骤数以节省时间。
采样器名词解释
Euler
Euler(欧拉)是最简单的采样器,它在数学上与欧拉方法用于求解常微分方程的方法完全相同。它完全是确定性的,意味着在采样过程中不会添加任何随机噪声。
Euler a
Euler a(Euler ancestral,欧拉祖先采样器)采样器类似于 Euler 采样器。但在每个步骤中,它会减去比应该减少的更多的噪声,并添加一些随机噪声以匹配噪声计划。去噪后的图像取决于先前步骤中添加的具体噪声。因此,从某种意义上说,它是一种祖先采样器,也就是图像去噪的路径取决于每个步骤中添加的具体随机噪声。如果您再次进行相同操作,结果将会不同。
DDIM
DDIM(Denoising Diffusion Implicit Models,去噪扩散隐式模型)是用于解决扩散模型的最早的采样器之一。它基于这样一个思想,即每个步骤的图像可以通过添加以下三个组成部分来近似表示。
- 最终图像
- 图像方向指向当前步骤的图像
- 随机噪声
PLMS
PLMS(Pseudo Linear Multi-Step method,伪线性多步方法)是 DDIM 更快的替代方案。它们通常被认为已经过时并且不再广泛使用。
LMS 和 LMS Karras
LMS(linear multistep method,线性多步法)与欧拉方法类似,是求解常微分方程的一种标准方法。它通过巧妙地利用先前时间步长的值来提高精确度。
LMS Karras 使用 Karras 噪声表。
Heun
Heun 方法是对欧拉方法的更准确改进。但是它在每个步骤中需要两次预测噪声,因此比欧拉方法慢两倍。
DPM
DPM(Diffusion Probabilistic Model,扩散概率模型)是为 2022 年发布的扩散模型设计的新采样器。它代表了一系列具有相似架构的求解器:
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
UniPC(Unified Predictor Corrector,统一预测校正)是2023年新开发的扩散采样器,由两部分组成:
-
Unified predictor (UniP) 统一预测器
-
Unified corrector (UniC) 统一校正器
它支持任何求解器和噪声预测器。
论文:https://arxiv.org/abs/2302.04867
Restart
Restart 是2003年发布的新的扩散采样器,它能更好地平衡离散化误差和收缩。
Restart 采样器在速度和精度方面都超过了之前的扩散 SDE 和 ODE 采样器。Restart 不仅超越了之前最好的SDE结果,还在 CIFAR-10/ImageNet 上将采样速度加快了10倍/2倍。此外,在相当的采样时间内,它比 ODE 采样器获得了明显更好的样本质量。此外,在 LAION 上预训练的大规模文本到图像稳定扩散模型中,与之前的采样器相比,Restart 更好地平衡了文本图像对齐/视觉质量与多样性。
GitHub:https://github.com/newbeeer/diffusion_restart_sampling
论文:https://arxiv.org/abs/2306.14878
LCM
LCM(Latent Consistency Models,潜在一致性模型) 是一种新的采样方法,它可以使迭代步数减少一半(或更多)。也就是说,使用该采样器,可以几步出高分辨率图像。
论文:https://arxiv.org/abs/2310.04378