Stable Diffusion webui 提供了多达22种(截止发稿日期)的采样方法,Euler a、Euler、LMS、Heun、DPM2、DDIM…
如此多的选项,该怎么选?犯老难了
或者有的小伙伴看别人推荐用啥就用啥,或者习惯用哪个就用哪个。(反正抽卡,躺平就对了)
作为一个上进的大好青年,怎么能允许这“摆烂”?!
安排!
今天我们来聊聊,采样方法的基本介绍和分类,目的是让小伙伴们能在绘图时第一时间想到选择哪个类型的采样方法合适。细节就跳着来哈。
什么是采样方法?
Stable Diffusion 通过在潜在空间内生成一张完全随机的图像,噪声预测器估计图像的噪声,再减去。这个过程迭代N次后,得到一个没有噪声的精致图像。
去噪(降噪)过程被称为采样,需要通过Stable Diffusion在每一步生成新的样本图像。在此采样过程中采用的技术称为采样方法。
简单二分法:稳定性、随机性
看下图,这是一个15步的噪声添加时间表,从第一步的最大慢慢递减到最后一步的0,完成图像生成。

这是一个基本的噪声收敛过程。
稳定性:随着采样步数(steps)的增加,噪声量的添加有规律的减少,而后得到的图像不会有太明显的变化;
随机性:每一步采样器都会使用指定算法添加一定量的噪声,让其随着步数的完成,图像依然处于一个不稳定的状态,随着采样步数的变动而得到一张有明显区别于前一个步数的图像。
字太多?没关系!
栗子摆上:

CFG scale: 6, Seed: 1009286388, Size: 512×512
因为SD上的采样器绝大多数在30步之内都能得到清晰的图像,所以趣闻选择30,32,35这3个很接近的采样步数(steps)的图像效果对比,来直观的感受下哪些采样器是稳定的、哪些是不稳定的。
稳定:
Euler
LMS
Heun
DPM2
DDIM
PLMS
UniPC
LMS Karras
DPM adaptive
DPM2 Karras
DPM++ 2M
DPM++ 2M Karras
不稳定:
Euler a
DPM fast
DPM2 a
DPM2 a Karras
DPM++ 2S a
DPM++ SDE
DPM++ 2M SDE
DPM++ 2S a Karras
DPM++ SDE Karras
DPM++ 2M SDE Karras
眼睛犀利的小伙伴可能已经发现,不稳定的采样器后面基本都带a或者SDE!(真棒)
a 是英文 Ancestral 的缩写,译为“祖先”。基于 Katherine Crowson 的原始 k-diffusion实现。祖先采样器噪声不收敛。算法在每个采样步数时向图像添加随机噪声,因此每一步(steps)得到的图像都具有一定量的随机性,就会“不稳定”。
SDE,全称 Stochastic Differential Equation,随机微分方程,它被注入到数据预测模型里,提升采样器效率的同时也为采样器的每一个采样步添加随机噪声。
(非严肃解析)
论文地址如下,给想了解更多细节的小伙伴:
https://arxiv.org/abs/2011.13456
所以小伙伴们喜欢让AI发挥更多空间,就选择这些类型的采样器吧!
进阶细分:带2、S、M、Karras是啥东西?
2 代表采样求解器(sampler solvers)2阶,意是在稳定扩散的过程中对U-Net进行2次降噪,虽更为准确但多了2倍的耗时。
简单举例:
出图尺寸512*512,采样步数25,CFG:6,Batch size:4
耗时:
Euler 9秒
DDIM 9秒
Heun 17秒
DPM2 17秒
Heun 是 Euler 的2阶版本
S 代表单步(Singlestep)
M 代表多步(Multistep)
是预测模型的算法的一个近似导数。
他们啥区别呢?简答的说,单步(Singlestep)使用一个“固定值/随机值”,多步(Multistep)使用的是前一个步数(steps)的值,这样产生的影响就是,多步(Multistep)稳定定高于单步(Singlestep)。如图:

带有 Karras 的采样器,是使用了 Karras 论文中的噪声时间表:

蓝色是正常的噪声时间表,黄色是Karras噪声时间表。
论文:
https://arxiv.org/abs/2206.00364
Karras noise schedule 越接近尾部噪声噪声步长越小。Karras他们表示这可以提高图像效率和质量。
栗子:

可以看到:20步及以下,同一个采样器下,使用了Karras噪声图的图像质量优于不使用的得到的图像。
采样器细节
1.Euler、Euler a
Euler是最直接的采样器,与解常微分方程(Ordinary Differential Equations)的欧拉方法相同。
2.Heun
是Euler的2阶版本,精确性高,但采样速度慢2倍
3.LMS
LMS(Linear multi-step)采样器,与Euler类似,是一种被广泛认可的求解常微分方程 (ODE) 的技术。
4.DPM、DPM2、DPM++
DPM(Diffusion probabilistic model solver)扩散概率模型求解器,和DPM++是 2022 年发布的为Diffusion模型设计的新采样器。
DPM2 是 DPM 的2阶版本,DPM++是对 DPM 的优化改进。DPM离散化噪声预测模型的积分,而DPM ++则是离散化数据预测模型的积分。
论文地址:
https://arxiv.org/abs/2206.00927
5.DPM Fast、DPM Adaptive
DPM Fast 被标记为比其他方法更快的采样器,然而在测试中性能跟其他采样器差不多。DPM Fast要达到好的质量,需要比较高的步数。也是随机算法中的一种,噪声不收敛。
DPM Adaptive 自适应,如其名,DPM Adaptive 不被输入的steps限制,哪怕输入5步,也会生成有质量的图像,稳定。
如下:

6.DDIM、PLMS
DDIM (Denoising Diffusion Implicit Models)去噪扩散隐式模型,它的每一步都以最终图像、图像方向和随机噪声做引导,属于稳定性采样器。DDIM是首批为扩散模型设计的采样器之一,所以被认为是过时的。
PLMS (Pseudo Linear Multi-Step method) 伪线性多步方法,也是首批为扩散模型设计的采样器之一,PLMS 是 DDIM 的更新、更快的替代方案。
然而:

好像不是那么回事? 于是:

低步数下,DDIM 优于 PLMS,但35步之后,PLMS 略优于 DDIM。
7.UniPC
UniPC 是一个免训练的框架,专为扩散模型的快速采样而设计,它由一个校正器 (UniC) 和预测器 (UniP) 组成。可以在5-10内生成较高质量的图像。
最后
其实吧,SD里面更多的是模型选采样方法,并不是采样方法选模型。大家儿在下载模型的时候在主页那里都有提示选择哪些采样方法得到的图像质量更好。
但是吧,艺术要的就是不可复制性!敢于挑战未知!
所以,大胆的使用带s或者带a的采样方法吧!
最快的方法:

Euler
Euler a
DPM++ 2M
DPM++ 2M Karras
最具创意的方法:
DPM++ 2S a Karras
DPM++ SDE Karras
DPM++ 2S a
Euler a
最稳的方法,不带a,不带s,不带SDE的:
DPM adaptive 最稳,但速度最慢
Euler
LMS Karras
DPM2 Karras
Heun
DDIM