Stable Diffusion 采样器介绍(sampler)

时间:23-09-29 14:48:54

作者:

分类:AI软件教程

  在 Stable Diffusion 的 webUI 中,我们可以选择许多不同的采样器,如 Eular a、 Heun、 DDIM 等。那么这些采样器之间有什么区别呢?在操作时应该如何进行选择呢?本文将详细介绍采样器的工作原理,并对各种采样器进行优劣比较。

    0c6e2c8b1012871d4697e2e8cfbed9c8

  先来总结一下结论:

      如果只是想得到一些简单的结果,可以选择欧拉(Eular)或者 Heun 采样器,并可以适当减少 Heun 的步骤数以减少时间。

      对于追求速度、融合、新颖且质量不错的结果,建议选择 DPM++ 2M Karras,步骤范围为 20-30;UniPc,步骤范围为 20-30。

      如果期望得到高质量的图像,且不关心图像是否收敛,可以选择 DPM++ SDE Karras,步骤范围为 8-12;DDIM,步骤范围为 10-15。

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

  采样器的工作原理是什么呢?一个标准的 Stable Diffusion 分为两个步骤:前向扩散过程和后向的去噪、复原以及生成目标的过程。前向过程不断向输入数据中添加噪声,而采样器主要负责后向过程中的去噪。在图像生成之前,模型会首先在 Latent Space 中生成一个完全随机的图像,然后噪声预测器开始工作,从图像中减去预测的噪声。随着这个步骤的不断重复,最终我们得到了一个清晰的图像。整个去噪的过程就是采样,而采样器或采样方法就是用来实现这个过程的手段。

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

  Stable Diffusion 提供了一些经典的 ODE 求解器:

      欧拉采样器(Euler):欧拉采样方法。

      Heun 采样器:欧拉的一个更准确但较慢的版本。

      LMS 采样器:线性多步法,速度与欧拉采样器相近,但更准确。

  还有一类采样器被称为祖先采样器,其名称中带有 “a” 标识。这类采样器在每个采样步骤中都会向图像添加噪声,因此采样结果具有一定的随机性。例如,Euler a、DPM2 a、DPM++ 2S a、DPM++ 2S a Karras 等都属于祖先采样器。由于这类采样器的特性,图像不会收敛,因此在需要保证重现性的情况下(比如构建动画时),应尽量避免使用具有随机性的采样器。需要注意的是,虽然部分采样器的名称中没有明确标识为祖先采样器,但它们仍属于随机采样器。如果希望生成的图像具有微小的变化,可以使用 variation seed 进行调整。

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

  除了上述采样器外,还有一些已过时或不再广泛使用的采样器,如 DDIM(去噪扩散隐式模型)和 PLMS(伪线性多步方法)。当前较常用的采样器均来自于 Katherine Crowson 的 k-diffusion 项目。

  关于评估方法,可以采用图像收敛作为指标。通过使用不同的采样器生成相同的图像,并在最多 40 轮迭代的情况下评估采样的收敛速度。以欧拉采样器作为多组对比的参照,可以观察到不同采样器的收敛情况。从结果中可以看出,PLMS 的整体表现最差,LMS Karras 稍好,仅在最后几步迅速收敛。Heun 由于是二阶方法,整体收敛更快,但计算速度较慢。

  祖先采样器很难收敛,因此在期望获得稳定、可重现的结果时应避免使用它们。DPM 系列的采样器在速度方面可能较慢,但具有类似体系结构。DPM++ 是对 DPM 的改进,DPM2 采用二阶方法,结果更准确但相应速度较慢。UniPC 是一种可以在 5-10 个步骤中实现高质量图像生成的方法。

  最后,以欧拉为代表的一阶方法的整体速度大致相当,以 Heun 为代表的二阶方法的整体耗时也基本一致,约为一阶方法的两倍。这是因为二阶求解器虽然更准确,但需要对 U-Net 进行两次评估,因此整体耗时增加一倍。

  以上就是 Stable Diffusion 采样器的介绍,希望对大家有所帮助。根据不同的需求和要求,选择合适的采样器可以获得更好的结果。