Sample采样器
00 分钟
2024-3-8
2024-8-7
Last edited time
Aug 7, 2024 08:22 AM
type
status
date
slug
summary
tags
category
icon
password
本文档基本是按照这篇文章翻译过来的,原文samplers,感谢。
本文中的所有数值对比图片中的指标均为越低越好。
在AUTOMATIC1111中有许多采样方法可供选择,包括Euler a、Heun方法、DDIM等等。什么是采样器?它们是如何工作的?它们之间有什么区别?应该使用哪一种?你将在本文中找到答案。

什么是采样器

notion image
为了生成一幅图像,Stable Diffusion首先在潜在空间中生成一个完全随机的图像。然后,噪声预测器估计图像的噪声。预测得到的噪声被从图像中减去。这个过程重复了数十次。最终,你得到了一幅清晰的图像。
这个去噪过程被称为采样,因为Stable Diffusion在每一步中生成一个新的样本图像。在采样中使用的方法称为采样器或采样方法。
以下是采样过程的实际应用。采样器逐渐生成越来越清晰的图像。
notion image
虽然框架是相同的,但进行这个去噪过程的方法有很多种。通常是在速度和准确性之间进行权衡。

Noise schedule

你一定注意到了开始的噪声图像逐渐变成清晰的图像。噪声计划控制每个采样步骤的噪声水平。噪声在第一步时最高,逐渐在最后一步减少到零。
在每一步中,采样器的任务是生成一个与噪声计划匹配噪声水平的图像。
notion image
增加采样步骤的效果是每一步之间的噪声减少得更少。这有助于减少采样的截断误差。
下面比较了15步和30步的噪声计划。
notion image

采样器概览

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

老式ODE采样解决方案

这些是几乎有百年多的历史了的采样器。它们是用于常微分方程 (ODE) 的。
采样器名称
效果
Eular
最简单的求解器。
Heun
比欧拉更精确但速度较慢的版本。
LMS(线性多步方法)
与欧拉相同的速度,但(据说)更精确。

Ancestral采样器

你有注意到吗,有些采样器带个a
  • Euler a
  • DPM2 a
  • DPM++ 2S a
  • DPM++ 2S a Karras
  • ...
这些采样器被称为Ancestral采样器,由于增加了一些随机性,他们采样的结果多数情况下是比较随机不可预测的。一定程度上会导致采样结果的无法收敛。当采样步数变多时更加严重。
有些采样器虽然没有a,但是也是随机采样器。
随机采样
notion image
非随机采样
notion image
为了可复现性,最好是让采样结果能够收敛。如果你在使用随机采样器的情况下希望只产生轻微的变化,那么建议使用variational seed。

Karras noise schedule

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

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步内实现高质量的图像生成。相关文章

k-diffusion

最后,你可能听说过 k-扩散 这个术语,不知道它是什么意思。它简单地指的是Katherine Crowson的k-diffusion GitHub 仓库及其相关的采样器。
该仓库实现了 Karras 2022 年文章中研究的采样器。
基本上,除了 DDIM、PLMS 和 UniPC 外,AUTOMATIC1111 中的所有采样器都是从 k-扩散 中借用的。

如何选择采样器

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

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

随机采样器对比

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

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的情况。
notion image

UniPC

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

所有采样器速度对比图

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

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

notion image
notion image
notion image
notion image
notion image
所以,该怎么选择采样器呢?
  1. 如果你想要使用速度快、收敛快、新颖且质量不错的东西,那么优秀的选择是:
      • DPM++ 2M Karras,使用20-30步
      • UniPC,使用20-30步
  1. 如果你想要高质量的图像,而不关心收敛性,那么良好的选择是:
      • DPM++ SDE Karras,使用10-15步(注意:这是一种较慢的采样器)
      • DDIM,使用10-15步
再次强调:如果你更喜欢稳定、可重现的图像,请避免使用任何祖先采样器。
Eular和Heun是简单选择,如果你更喜欢简单点。基于此,如果想要节省时间,可以减少Heun的步数。
上一篇
pytorch和coreml的流程以及一些注意点
下一篇
ComfyUI Tips

评论
Loading...