图片相关
Sample采样器

Sample采样器

本文档基本是按照这篇文章翻译过来的,原文samplers (opens in a new tab),感谢。

💡
本文中的所有数值对比图片中的指标均为越低越好。

在AUTOMATIC1111中有许多采样方法可供选择,包括Euler a、Heun方法、DDIM等等。什么是采样器?它们是如何工作的?它们之间有什么区别?应该使用哪一种?你将在本文中找到答案。

什么是采样器

为了生成一幅图像,Stable Diffusion首先在潜在空间中生成一个完全随机的图像。然后,噪声预测器估计图像的噪声。预测得到的噪声被从图像中减去。这个过程重复了数十次。最终,你得到了一幅清晰的图像。

这个去噪过程被称为采样,因为Stable Diffusion在每一步中生成一个新的样本图像。在采样中使用的方法称为采样器或采样方法。

以下是采样过程的实际应用。采样器逐渐生成越来越清晰的图像。

虽然框架是相同的,但进行这个去噪过程的方法有很多种。通常是在速度和准确性之间进行权衡。

Noise schedule

你一定注意到了开始的噪声图像逐渐变成清晰的图像。噪声计划控制每个采样步骤的噪声水平。噪声在第一步时最高,逐渐在最后一步减少到零。

在每一步中,采样器的任务是生成一个与噪声计划匹配噪声水平的图像。

增加采样步骤的效果是每一步之间的噪声减少得更少。这有助于减少采样的截断误差。

下面比较了15步和30步的噪声计划。

采样器概览

当前已经有一大堆各种各样的采样器了,并且数量还在不断增加,那么不同的采样器有什么区别呢?

老式ODE采样解决方案

这些是几乎有百年多的历史了的采样器。它们是用于常微分方程 (ODE) 的。

采样器名称效果
Eular最简单的求解器。
Heun比欧拉更精确但速度较慢的版本。
LMS(线性多步方法)与欧拉相同的速度,但(据说)更精确。

Ancestral采样器

你有注意到吗,有些采样器带个a

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

这些采样器被称为Ancestral采样器,由于增加了一些随机性,他们采样的结果多数情况下是比较随机不可预测的。一定程度上会导致采样结果的无法收敛。当采样步数变多时更加严重。

⚠️

有些采样器虽然没有a,但是也是随机采样器。

随机采样

非随机采样

为了可复现性,最好是让采样结果能够收敛。如果你在使用随机采样器的情况下希望只产生轻微的变化,那么建议使用variational seed。

Karras noise schedule

带有“Karras”标签的采样器使用了Karras文章 (opens in a new tab)推荐的噪声计划。如果你仔细观察,你会发现接近结尾的噪声步长更小。他们发现这样可以提高图像的质量。

DDIM and PLMS

DDIM(去噪扩散隐式模型)和PLMS(伪线性多步方法)是原始的sd模型v1中附带的采样器。DDIM是为扩散模型设计的最早的采样器之一。PLMS是DDIM的一种更新更快的替代方法。

这两个已经被视为过期了,不再建议使用。

DPM and DPM++

DPM(扩散概率模型求解器)和DPM++是为2022年发布的扩散模型设计的新采样器。它们代表了一系列具有相似结构的求解器。

DPM和DPM2类似,除了DPM2是二阶的(更准确但速度较慢)。

DPM++是对DPM的改进。

DPM adaptive会自动调整步长。由于它不能保证在采样步骤内完成,因此可能速度较慢。

UniPC

UniPC(统一预测-校正器)是在2023年发布的新采样器。受到常微分方程求解器中的预测-校正方法的启发,它可以在5-10步内实现高质量的图像生成。相关文章 (opens in a new tab)

k-diffusion

最后,你可能听说过 k-扩散 这个术语,不知道它是什么意思。它简单地指的是Katherine Crowson的k-diffusion GitHub 仓库 (opens in a new tab)及其相关的采样器。

该仓库实现了 Karras 2022 年文章中研究的采样器。

基本上,除了 DDIM、PLMS 和 UniPC 外,AUTOMATIC1111 中的所有采样器都是从 k-扩散 中借用的。

如何选择采样器

Euler, DDIM, PLMS, LMS Karras和Heun的收敛情况

采样器收敛情况
Eular标准
DDIM接近于Eular,不过因为注入了一些随机数,具有更大的随机性,在采样前期不够稳定
PLMS效果很差
LMS Karras效果较差,并且稳定在一个比较高的值
Heun每一步的采样收敛情况更快,但由于每一步采样需要的时间更多,一般不考虑,如果真的要对比的话应该拿30步的Eular对比15步的Heun

随机采样器对比

⚠️

如果你需要的是一个稳定、可复现的结果,那么请不要考虑这类采样器,所有的随机采样器都是不可收敛的。

DPM and DPM2

DPM Fast 收敛效果不佳。DPM2 和 DPM2 Karras 的性能比Eular好,但代价是需要的时间是Eular的两倍。

DPM 自适应的表现看似不错,因为它使用自适应采样步骤。但它可能非常慢。

DPM++ solvers

DPM++ SDE 和 DPM++ SDE Karras 遇到了与随机采样器相同的缺点。它们不仅不收敛,而且随着步数的增加,图像波动显著。

DPM++ 2M 和 DPM++ 2M Karras 的性能良好。当步数足够多时,Karras 变体收敛速度更快,甚至有超越Eular的情况。

UniPC

这个采样器速度上相比Eular稍慢一些,但是每一步的采样结果都会收敛的更好,不失为一种好的选择。

所有采样器速度对比图

可以看到,虽然DPM adaptive收敛的很好,但是速度却是最慢的。

第二阶梯的采样器由于需要对去噪 U-Net 进行两次评估,所以速度会是第一阶梯的两倍。如果你的设备足够优秀,那么尽可能选取第二阶梯的采样器,因为这个两倍几乎无法被感知到。

采样器生成的图片质量对比

所以,该怎么选择采样器呢?

  1. 如果你想要使用速度快、收敛快、新颖且质量不错的东西,那么优秀的选择是:
    • DPM++ 2M Karras,使用20-30步
    • UniPC,使用20-30步
  2. 如果你想要高质量的图像,而不关心收敛性,那么良好的选择是:
    • DPM++ SDE Karras,使用10-15步(注意:这是一种较慢的采样器)
    • DDIM,使用10-15步
⚠️

再次强调:如果你更喜欢稳定、可重现的图像,请避免使用任何祖先采样器。

Eular和Heun是简单选择,如果你更喜欢简单点。基于此,如果想要节省时间,可以减少Heun的步数。