列表

详情


sein @ 2024-10-20 15:07:32

SD学习笔记:关于采样器


备注
我自己开始用默认,后来用模型建议的DPM++ 2MSDE,调度 Karras,最近改用Euler A,调度 auto,感觉是又快又好
找了一堆参考,这篇文章解析的最为详细

参考:https://quail.ink/op7418/p/science-popularization-stable-diffusion-sampler-operation-guide


采样器可归纳为两种主要方法
1. 概率模型,例如 DDPM、DDIM、PLMS 以及 DPM 系列模型。这类生成模型根据模型估计的概率分布来生成结果,就像用相机捕捉风景照片一样,通过捕捉概率中的可能性来形成图像。
2. 数值方法,例如 Euler、Heun和 LMS。这些方法在每一步中都致力于解决一个具体的数学问题,逐渐构建出解决方案,就像画家在画布上一步步绘制风景,每一步都在细致地添加新的细节。


DDPM:去噪扩散概率模型,最早期的采样器之一,需要执行大量的处理步骤才能获得满意的结果。
DDIM:去噪扩散隐式模型,与 DDPM 相比,DDIM 通过更少的处理步骤就能取得更佳的效果。
PLMS:伪线性多步骤,代表了对 DDIM 的显著改进。PLMS 只需50步处理过程,就能实现比 DDIM 在1000步中所达到的更高图像质量。
Euler:基于普通微分方程,最简单直接的采样器之一。在精确度上可能有所欠缺,因其处理速度快而被广泛应用。
Heun:Euler方法的一个更精细的改进版。Heun在每个处理步骤中执行两项任务,因此被称为二阶采样器。它先用线性近似做出预测,然后通过非线性近似来进行校正。这种方法在提高精确度的同时,也确保了更高的图像质量。然而,这种精确度的提升也有一个小代价:处理时间大约是Euler方法的两倍。
LMS:可以被视为 PLMS 的一个变种,区别在于 LMS 使用的是数值方法,而非 PLMS 中的概率方法。这样的处理方式虽然提高了图像的精度,但相应地也增加了计算需求,导致处理速度较慢。
DPM:扩散概率模型,它在 DDPM 的基础上进行了一系列改进。
DPM2 :DPM 的升级版,用10个步骤,您已经可以获得令人印象深刻的质量。
DPM++:DPM 的另一个改进版本,采用了一种混合方法,它结合了确定性和概率方法进行采样以及后续的噪声减少。
DPM++ 2S/DPM++ 2M:这些模型结合了预测器和校正器两种机制,以更精确地逼近最终结果。其中,“S”代表单步骤(Single step)。这种模式在每个步骤中只执行一次计算,因此处理速度更快。相比之下,“M”代表多步骤(Multi step)。这种方法在每一步进行多次计算,并且会考虑到之前步骤中获取的信息,从而实现更精确、更高质量的收敛,但相应地也需要更长的时间。

初始采样器的变体

当一个采样器包含字母“A”,它通常表示该采样器属于“祖先”变体类别。这类变体的特点是,在每一个新的处理步骤中,它们会添加之前步骤中产生的随机变量。可以想象成,在每个步骤清除噪声之后,又会有一部分先前的噪声被重新引入。由于每一步都会增加新的随机噪声,带有这一特性的采样器永远不会达到收敛状态。如果总有新噪声需要处理,就总能继续进行下一步。

这使得这些采样器具有更高的创造性。增加额外的处理步骤并不一定会提高图像质量,而是可能产生另一种类似的结果。

Euler A、DPM2 A 或 DPM++ 2S A 等都是祖先采样器的例子。

Euler A在25-30步内给出了一个很好的结果,而且速度也非常快。

Karras 变体

采用了这些改进的采样器包括:LMS Karras、DPM2 Karras、DPM2 A Karras、DPM++ 2S A Karras、DPM++ 2M Karras 和 DPM++ SDE Karras 等。这些采样器利用了 Karras 的创新技术,以提升其整体性能和效率。

Stochastic 变体

SDE变体采用了随机微分方程。采用了随机方法,SDE 变体永远不会达到收敛状态。因此,增加处理步骤的数量并不会提高图像质量,而是会产生更多样化的结果,这一点类似于祖先采样器。

几种 SDE 变体,包括 DPM++ SDE、DPM++ 2M SDE、DPM++ SDE Karras 和 DPM++ 2M SDE Karras。

随机采样器虽然速度较慢,但即使在10个步骤下也能提供令人难以置信的结果。它们的结果也更加多样化和富有创意。由于它们永远不会收敛,因此是祖先采样器的一种替代方法。

最好的采样器是什么?

图像质量:
虽然 Heun 和 LMS Karras 提供了不错的结果,但使用 DPM++ 2M 或其 Karras 版本会更佳。
如果你不急于获得结果,可以尝试 DPM 自适应,或者如果你有足够时间,UniPC 也是个不错的选择。
使用上述提到的采样器,你可以在20-30步内获得良好的结果,尽管尝试更多步骤也无妨。

生成速度:
只是想快速测试变化,那么推荐使用 DPM++ 2M 或 UniPC,步骤数较少。仅用10-15步,你就能得到非常体面的图像。

如果你不介意可重复性,还可以选择 Euler A,这是一个快速且质量不错的祖先采样器。

创造力和灵活性:
在这里 Euler A 和 DPM++ SDE Karras 特别值得一提。尝试在15步、20步、25步等不同步骤下生成图像,并观察结果如何变化。

OO [0] XX [0] 吐槽 [5]

暂无回帖