Stable Diffusion-采样器篇

Stable Diffusion-采样器篇

采样器:

Stable Diffusion的webUI中,提供了大量的采样器供我们选择,例如Eular a, Heum,DDIM等,不同的采样器之间究竟有什么区别,在操作时又该如何进行选择,本文将会详细讲解采样器是如何工作的,以及各种采样器的优劣对比。

先放结论:

  1. 如果只是想得到一些较为简单的结果,选用欧拉(Eular)或者Heun,并可适当减少Heun的步骤数以减少时间
  2. 对于侧重于速度、融合、新颖且质量不错的结果,建议选择:
  • DPM++ 2M Karras, Step Range:20-30
  • UniPc, Step Range: 20-30

3. 期望得到高质量的图像,且不关心图像是否收敛:

  • DPM ++ SDE Karras, Step Range:8-12
  • DDIM, Step Range:10-15

4. 如果期望得到稳定、可重现的图像,避免采用任何祖先采样器

一个标准的Stable Diffusion分为两个步骤;前向扩散过程,和后向的去噪、复原以及生成目标的过程。前向过程不断向输入数据中添加噪声,而采样器主要在后向过程中负责去噪的过程。

采样器主要负责去噪的过程

在图像生成前,模型会首先在Latent Space中生成一个完全随机的图像,然后噪声预测器会开始工作,从图像中减去预测的噪声。随着这个步骤的不断重复,最终我们得到了一个清晰的图像。Stable Diffusion在每个步骤中都会生成一张新的采样后的图像,整个去噪的过程,即为采样,使用的采样手段,即为采样器或称为采样方法,

逐步去噪得到的清晰图像

Noise schedule

噪音计划表(Noise schedule)控制每个采样步骤的采样水平。整体噪声在第一步时最高,在最后一步逐步降低到零。在每一步中,采样器会生成噪音水平与噪音计划表匹配的图像。增加采样步数,会缩小每一步的降噪幅度,有助于减少采样的截断误差。

15步采样的噪声计划
30步采样的噪声计划

经典ODE求解器

  • Euler采样器:欧拉采样方法。
  • Heun采样器:欧拉的一个更准确但是较慢的版本。
  • LMS采样器:线性多步法,与欧拉采样器速度相仿,但是更准确。

祖先采样器

名称中带有a标识的采样器表示这一类采样器是祖先采样器。这一类采样器在每个采样步骤中都会向图像添加噪声,采样结果具有一定的随机性

  • Euler a
  • DPM2 a
  • DPM++ 2S a
  • DPM++ 2S a Karras

由于这一类采样器的特性,图像不会收敛。因此为了保证重现性,例如在通过多帧组合构建动画时,应当尽量避免采用具有随机性的采样器。需要注意的是,部分采样器的名字中虽然没有明确标识属于祖先采样器,但也属于随机采样器。如果希望生成的图像具有细微的变化,推荐使用variation seed进行调整。

Karras Noise Schedule

带有Karras字样的采样器,最大的特色是使用了Karras论文中建议的噪音计划表。主要的表现在于噪点步长在接近尾声时会更小,有助于图像的质量提升。

默认方法与Karras采样的对比

DDIM与PLMS(已过时,不再使用)

DDIM(去噪扩散隐式模型)和PLMS(伪线性多步方法)是伴随Stable Diffusion v1提出的采样方法,DDIM也是最早被用于扩散模型的采样器。PLMS是DDIM的一种更快的替代方案。当前这两种采样方法都不再广泛使用。

DPM与DPM++

DPM(扩散概率模型求解器)这一系列的采样器于2022年发布,代表了具有类似体系结构的求解器系列。

由于DPM会自适应调整步长,不能保证在约定的采样步骤内完成任务,整体速度可能会比较慢。对Tag的利用率较高,在使用时建议适当放大采样的步骤数以获得较好的效果。

DPM++是对DPM的改进,DPM2采用二阶方法,其结果更准确,但是相应的也会更慢一些。

UniPC

UniPC(统一预测校正器),一种可以在5-10个步骤中实现高质量图像生成的方法。

K-diffusion

用于指代Katherine Crowson's k-diffusion项目中实现的Karras 2022论文中提及的的相关采样器。当前常用的采样器中,除了DDIM、PLMS与UniPC之外的采样器均来自于k-diffusion。

评估方法

图像收敛

采用不同的采样器生成相同的图像,采样步骤迭代最多40轮。以40轮的结果评估采样收敛速度。采用Euler作为多组对比的参照。

Group A: Euler、DDIM、PLMS、LMS Karras和Heun采样器

从结果可以发现,PLMS整体表现最差,LMS Karras略好,仅在最后几步迅速收敛。Heun由于是二阶方法,整体收敛的更快,但是计算速度上较慢。

Group B: 各类祖先采样器

从图中可以发现,祖先采样器很难收敛,在期望获得稳定、可重现的结果的情况下,应当避免采用祖先采样器。

Group C:DPM Family

DMP fast收敛情况较差、DPM2和DPM2 Karras收敛情况优于Euler方法。但是代价是计算速度更慢。DPM Adapter方法的收敛表现最优,但是由于采用自适应的采样步骤,整体可能非常慢。

Group D: DPM++ Famliy

DPM++ SDE与DPM++ SDE Karras的收敛能力较差,图像的波动情况较为显著。

DPM++ 2M与DPM++ 2M Karras表现较好,当步数足够大时,Karras方法收敛的更快。

Group E: UniPC

UniPC的整体收敛速度慢于欧拉方法,在35步之后快速接近欧拉方法的表现。

速度

DPM Adaptive的收敛表现最优,但是整体的速度最慢。

以Euler为代表的多数一阶方法的整体速度大致相当,以Heun为代表的二阶方法的整体耗时也基本一致,约为一阶方法的两倍。这是由于二阶求解器虽然更准确,但是由于需要对U-Net进行2次评估,所以在整体耗时上也翻了一倍。

编辑于 2023-04-24 16:44・IP 属地上海