转载自:知乎:救老命了!Stable Diffusion 入门之30 采样方法 (Sampler)详解
1 采样方法是什么
Stable Diffusion 在生成图像前,会先生成一张完全随机的图像,然后噪声预测器会在图像中减去预测的噪声,随着这个步骤的不断重复最终会生成一张清晰的图像。整个去噪过程叫做采样,使用到的方法叫做采样方法或采样器。
采样过程中噪声计划控制每个采样步骤的噪声水平。第一步噪声最高,最后一步逐渐降低到零。更高的采样步数导致每个步骤之间的降噪幅较小。这有助于减少采样的截断误差。
在Stable Diffusion 中的采样方法多达30余种,让人眼花缭乱,尤其是刚接触的的新手小白,可以说根本不知道怎么选好吧。
此外,在这些采样方法中有很多是已经过时了,或者效果不怎么好的,那么到底该如何选择采样方法呢?
Stable Diffusion 中的采样方法目前可以分为老式采样器
、DPM采样器
、新式采样器
。
后续的跑图测试 CFG 默认为 7。
2 老式采样器
DDIM | 最早的采样器,已过时 |
PLMS | 最早的采样器,已过时 |
Euler | 经典ODE算法,欧拉采样方法,用于得到一些简单的结果 |
Euler a | Euler的祖先采样器 |
Heun | Euler 的改进版本,更准确但速度慢了一倍左右 |
LMS | 线性多步法,与 Euler 速度相仿,但(据说)更准确。 |
LMS Karras | LMS 的 Karras 算法 |
3 DPM采样器
DPM fast | DPM快速算法,速度和 Euler 相仿,但是生成的效果极差 |
DPM adaptive | 不考虑采样步数,使用自己的自适应采样步骤,且生成时间极长 |
DPM2
DPM2 | DPM的二代算法,但是速度比 Euler 慢了一倍左右 |
DPM2 a | DPM2的祖先采样器 |
DPM2 Karras | DPM2 的 Karras 算法 |
DPM2 a Karras | DPM2 a 的 Karras 算法 |
2S
DPM 2S a | DPM单步算法,速度比 DPM2 快一点 |
DPM 2S a Karras | 2S a 的 Karras 算法 |
2M
DPM 2M | DPM二阶多步算法,相当于 2S 的升级,速度和Euler差不多 |
DPM 2M Karras | DPM 2M 的 Karras 算法 |
SDE
DPM SDE | 使用了祖先采样,速度比 Euler 慢了一倍左右,图像不会收敛且随着迭代步数的变化而波动 |
DPM SDE Karras | SDE 的 Karras 算法 |
2M SDE
DPM 2M SDE | 2M 和 SDE 的结合,速度和 2M 一致 |
DPM 2M SDE Karras | 2M SDE 的 Karras 算法 |
DPM 2M SDE Exponential | 2M SDE 的 Exponential 算法,画面柔和,背景更干净,但是细节会少些 |
2M SDE Heun
DPM 2M SDE Heun | 2M SDE Heun 算法,速度慢 |
DPM 2M SDE Heun Karras | 2M SDE Heun 的 Karras 算法 |
DPM 2M SDE Heun Exponential | 2M SDE Heun 的 Exponential 算法,画面柔和,背景更干净,但是细节会少些 |
3M SDE
DPM 3M SDE | 3M SDE 算法,速度和2M一致,但需要更多的迭代步数 (>30),CFG小一些效果更好 |
DPM 3M SDE Karras | 3M SDE 的 Karras 算法 |
DPM 3M SDE Exponential | 3M SDE 的 Exponential 算法,画面柔和,背景更干净,但是细节会少些 |
3 新式采样器
UniPC | 2023 年发布的新采样器,可以在 5-10 个步骤内实现高质量的图像生成 |
Restart | Stable Diffusion WebUI 1.6 新增的采样器,可以用比UniPC更少的步数生成图像 |
LCM | Stable Diffusion WebUI 1.8.0 新增的采样器,需要配合专门的 LCM 大模型,可以在 6-10 个步骤内实现质量不错的图像生成,CFG 一般在 1~2 之间 |
4 总结
4.1 祖先采样器
名字中带 a 的采样器表示这类采样器为祖先采样器。这一类采样器会在每一个采样步骤中向图像添加噪声,因此采样结果具有随机性。
使用祖先采样器的缺点是图像不会收敛,因此为了保证可重复性,例如在通过多帧图像实现动画时,避免使用随机采样器。
需要注意,部分采样器的名字中虽然没有 a,但也属于随机采样器。比如名称中带有 SDE 的采样器,也使用了祖先采样,生成图像也是不收敛的。
下面是 Euler 和 Euler a 生成的比较
4.2 Karras采样器
名字中带有 Karras 的采样器使用 Karras 文章中推荐的噪声计划。主要表现在噪声步长接近尾声时会更小,有助于提高图像的质量。
4.3 最终结论
Euler、Euler
快速获得简单的结果
DPM 2M Karras
推荐的算法,速度快,质量好,推荐步数 20~30 步
DPM SDE Karras
图像质量好但是不收敛,速度慢,推荐步数 10~15 步
DPM 2M SDE Karras
2M和SDE的结合算法,速度和2M相仿,推荐步数 20~30 步
DPM 2M SDE Exponential
画面柔和,细节更少一些,推荐步数 20~30 步
DPM 3M SDE Karras、DPM 3M SDE Exponential
3M 系列。步数需要 30 步以上,且 CFG 要低一些。
UniPC、Restart
更少的步数就能获得好的结果
LCM
配合专门的大模型使用,步数 6 ~10 步就可以有好的结果,CGF 1~2 之间