问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Stable Diffusion 原理与技巧:采样方法和采样步数详解

创作时间:
作者:
@小白创作中心

Stable Diffusion 原理与技巧:采样方法和采样步数详解

引用
1
来源
1.
https://www.cnblogs.com/chaosstuffai/p/18553202

本文将详细介绍Stable Diffusion中的采样方法和采样步数,包括其原理、分类、具体实现以及使用建议。通过阅读本文,你将对Stable Diffusion的采样过程有全面的了解。

1. 原理

Sampling method即采样方法或采样器。
Sampling steps即采样步数。

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

这个去噪过程称为采样,采样所采用的方法就称为采样方法或采样器。

在从嘈杂的图像逐渐变成清晰的图像时,每个采样步骤的噪声水平是由Noise schedule控制的。

在每个步骤中,采样方法的工作就是生成噪声水平与噪声表相匹配的图像。这时,什么是Sampling steps也就清楚了。增加采样步数能够使每个步骤之间的噪音幅度降低,有助于减少采样的截断误差。

采样方法可以大致分为四类:

1.1 Old-School ODE Solvers

该类是使用常微分方程的求解器。例如:

  • Euler——最简单的求解器。
  • Heun——Euler的更准确但速度较慢版本。
  • LMS——线性多步法,与Euler速度相同,但据说更准确。

1.2 Ancestral Samplers

这类采样器都带有一个字母a。例如:

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

祖先采样器在每个采样步骤向图像添加噪声。它们是随机采样器,因此采样结果具有一定的随机性。使用祖先采样器的缺点是图像不会收敛,下面两幅动图展示Euler aEuler生成的图像。

使用Euler a生成的图像在高采样步数时不会收敛。相比之下,Euler的图像收敛得很好。

1.3 DPM Solvers

DPM-Solvers(扩散概率模型求解器)是2022年发布,为扩散模型设计的新采样器系列。该系列也是个大家族,有许许多多变体,名字中有DPM的都是这一类。不过,这类中为啥有的带有S,有的带有M呢?

这是因为S代表单步(Singlestep),M代表多步(Multistep),是预测模型算法的一个近似导数。简答的说,单步使用一个固定值/随机值,多步使用的是前一Step的值,这样就造成多步稳定性高于单步

1.4 其他采样方法

  • DDIM(更准确但速度更慢)和PLMS(伪线性多步方法)是Stable Diffusion v1附带的采样器。
  • PLMSDDIM更新、更快的替代方案。
  • UniPC:Unified Predictor-Corrector,是2023年发布的新采样器。受到ODE求解器的启发,它可以在5-10步内实现高质量图像生成。另外,使用UniPC采样器,需要在设置->采样器参数中,将UniPc变体改为bh2

1.5 Karras Noise Schedule

使用过Web UI的读者会发现,很多都带有Karras,这是为啥呢?

原来带有Karras标签的采样器是使用了Karras论文中推荐的噪声表。

使用Karras noise schedule能够在采样接近尾声时,噪波阈值更小,更稳定。

基本上,Web UI中除DDIMPLMSUniPC之外的所有采样器都是从k-diffusion借用的。下图是这些采样器的速度对比。

2. 使用建议

  1. 如果想使用快速、融合、新颖且质量不错的东西,那么最好的选择是:
  • DPM++ 2M Karras,20–30 Steps
  • UniPC,20-30 Steps
  1. 如果想要高质量的图像并且不关心收敛,那么不错的选择是:
  • DPM++ SDE Karras,20-30 Steps
  • DDIM,15-30 Steps
  1. 如果想要稳定、可重复的图像,请避免使用任何祖先采样器。

  2. 如果就想要出图快,可以选择EulerHeun

  3. 当然并不是局限于这几种采样器,出图效果很看运气和随机数,对于其他采样器,也给出以下建议:

  • DPM++ SDE:收敛能力较差,图像的波动情况较为显著。通常使用采样步数20-30。
  • DPM++ 2M:步数建议30左右。
  • DPM++ 2M SDE Karras:采样步数尽量大于30。

对于新手,强烈推荐DPM Solver系列(尤其是DPM++ 2S a)。不推荐LMS、DPM fast、LMS Karras、PLMS。

2.1 其他资料

笔者觉得还有一个关于采样方法的探讨挺有意思的,这里也放上链接,供大家参考。

https://huke88.com/article/8087.html

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号