Sample采样器
本文档基本是按照这篇文章翻译过来的,原文samplers (opens in a new tab),感谢。
在AUTOMATIC1111中有许多采样方法可供选择,包括Euler a、Heun方法、DDIM等等。什么是采样器?它们是如何工作的?它们之间有什么区别?应该使用哪一种?你将在本文中找到答案。
什么是采样器
为了生成一幅图像,Stable Diffusion首先在潜在空间中生成一个完全随机的图像。然后,噪声预测器估计图像的噪声。预测得到的噪声被从图像中减去。这个过程重复了数十次。最终,你得到了一幅清晰的图像。
这个去噪过程被称为采样,因为Stable Diffusion在每一步中生成一个新的样本图像。在采样中使用的方法称为采样器或采样方法。
以下是采样过程的实际应用。采样器逐渐生成越来越清晰的图像。
虽然框架是相同的,但进行这个去噪过程的方法有很多种。通常是在速度和准确性之间进行权衡。
Noise schedule
你一定注意到了开始的噪声图像逐渐变成清晰的图像。噪声计划控制每个采样步骤的噪声水平。噪声在第一步时最高,逐渐在最后一步减少到零。
在每一步中,采样器的任务是生成一个与噪声计划匹配噪声水平的图像。
增加采样步骤的效果是每一步之间的噪声减少得更少。这有助于减少采样的截断误差。
下面比较了15步和30步的噪声计划。
采样器概览
当前已经有一大堆各种各样的采样器了,并且数量还在不断增加,那么不同的采样器有什么区别呢?
老式ODE采样解决方案
这些是几乎有百年多的历史了的采样器。它们是用于常微分方程 (ODE) 的。
采样器名称 | 效果 |
---|---|
Eular | 最简单的求解器。 |
Heun | 比欧拉更精确但速度较慢的版本。 |
LMS(线性多步方法) | 与欧拉相同的速度,但(据说)更精确。 |
Ancestral采样器
你有注意到吗,有些采样器带个a
。
- Euler a
- DPM2 a
- DPM++ 2S a
- DPM++ 2S a Karras
- ...
这些采样器被称为Ancestral采样器,由于增加了一些随机性,他们采样的结果多数情况下是比较随机不可预测的。一定程度上会导致采样结果的无法收敛。当采样步数变多时更加严重。
有些采样器虽然没有a
,但是也是随机采样器。
随机采样
非随机采样
为了可复现性,最好是让采样结果能够收敛。如果你在使用随机采样器的情况下希望只产生轻微的变化,那么建议使用variational seed。
Karras noise schedule
带有“Karras”标签的采样器使用了Karras文章 (opens in a new tab)推荐的噪声计划。如果你仔细观察,你会发现接近结尾的噪声步长更小。他们发现这样可以提高图像的质量。
DDIM and PLMS
DDIM(去噪扩散隐式模型)和PLMS(伪线性多步方法)是原始的sd模型v1中附带的采样器。DDIM是为扩散模型设计的最早的采样器之一。PLMS是DDIM的一种更新更快的替代方法。
这两个已经被视为过期了,不再建议使用。
DPM and DPM++
DPM(扩散概率模型求解器)和DPM++是为2022年发布的扩散模型设计的新采样器。它们代表了一系列具有相似结构的求解器。
DPM和DPM2类似,除了DPM2是二阶的(更准确但速度较慢)。
DPM++是对DPM的改进。
DPM adaptive会自动调整步长。由于它不能保证在采样步骤内完成,因此可能速度较慢。
UniPC
UniPC(统一预测-校正器)是在2023年发布的新采样器。受到常微分方程求解器中的预测-校正方法的启发,它可以在5-10步内实现高质量的图像生成。相关文章 (opens in a new tab)
k-diffusion
最后,你可能听说过 k-扩散 这个术语,不知道它是什么意思。它简单地指的是Katherine Crowson的k-diffusion GitHub 仓库 (opens in a new tab)及其相关的采样器。
该仓库实现了 Karras 2022 年文章中研究的采样器。
基本上,除了 DDIM、PLMS 和 UniPC 外,AUTOMATIC1111 中的所有采样器都是从 k-扩散 中借用的。
如何选择采样器
Euler, DDIM, PLMS, LMS Karras和Heun的收敛情况
采样器 | 收敛情况 |
---|---|
Eular | 标准 |
DDIM | 接近于Eular,不过因为注入了一些随机数,具有更大的随机性,在采样前期不够稳定 |
PLMS | 效果很差 |
LMS Karras | 效果较差,并且稳定在一个比较高的值 |
Heun | 每一步的采样收敛情况更快,但由于每一步采样需要的时间更多,一般不考虑,如果真的要对比的话应该拿30步的Eular对比15步的Heun |
随机采样器对比
如果你需要的是一个稳定、可复现的结果,那么请不要考虑这类采样器,所有的随机采样器都是不可收敛的。
DPM and DPM2
DPM Fast 收敛效果不佳。DPM2 和 DPM2 Karras 的性能比Eular好,但代价是需要的时间是Eular的两倍。
DPM 自适应的表现看似不错,因为它使用自适应采样步骤。但它可能非常慢。
DPM++ solvers
DPM++ SDE 和 DPM++ SDE Karras 遇到了与随机采样器相同的缺点。它们不仅不收敛,而且随着步数的增加,图像波动显著。
DPM++ 2M 和 DPM++ 2M Karras 的性能良好。当步数足够多时,Karras 变体收敛速度更快,甚至有超越Eular的情况。
UniPC
这个采样器速度上相比Eular稍慢一些,但是每一步的采样结果都会收敛的更好,不失为一种好的选择。
所有采样器速度对比图
可以看到,虽然DPM adaptive收敛的很好,但是速度却是最慢的。
第二阶梯的采样器由于需要对去噪 U-Net 进行两次评估,所以速度会是第一阶梯的两倍。如果你的设备足够优秀,那么尽可能选取第二阶梯的采样器,因为这个两倍几乎无法被感知到。
采样器生成的图片质量对比
所以,该怎么选择采样器呢?
- 如果你想要使用速度快、收敛快、新颖且质量不错的东西,那么优秀的选择是:
- DPM++ 2M Karras,使用20-30步
- UniPC,使用20-30步
- 如果你想要高质量的图像,而不关心收敛性,那么良好的选择是:
- DPM++ SDE Karras,使用10-15步(注意:这是一种较慢的采样器)
- DDIM,使用10-15步
再次强调:如果你更喜欢稳定、可重现的图像,请避免使用任何祖先采样器。
Eular和Heun是简单选择,如果你更喜欢简单点。基于此,如果想要节省时间,可以减少Heun的步数。