天天看点

彻底搞定ComfyUI中的采样器和调度器

作者:闪念基因

什么是采样器

众所周知,当我们使用Stable Diffusion时,它首先会创建一张充满噪声的原始图像,之后逐渐去除图像中的噪声。这个过程就像是雕刻:原始噪声图就像是雕刻的原料,去噪的过程就像是用雕刻刀去除废料,最后生成的图片就像是雕刻成型的作品。这个去噪的过程,就被称为采样。

选择何种采样器进行去噪,就好比是选择何种雕刻刀进行雕刻。采样器就是用来负责控制去噪的具体操作。

采样器的一个重要指标是收敛性。当采样器达到一个阶段,继续进行更多步骤不会再改善结果时,我们就认为图像已经达到了收敛状态。

有些采样器能够迅速收敛,非常适用于快速验证创意和想法。而其他一些采样器可能需要更长的时间或更多的步骤才能收敛,但它们通常能够提供更高质量的结果。还有一些采样器由于没有设定极限,因此永远不会收敛,这样就为创新和创造性提供了更多空间。

什么是调度器

如果说采样器是用来负责控制去噪的具体操作,那么调度器则是负责调控去噪的程度,决定每一步去除多少噪声,以确保整个过程既高效又精准。

继续沿用雕刻的比喻,在雕刻的初期,使用较大的力度快速敲掉大块的部分是有益的,这样可以加快雕刻的整体进展。而在雕刻的最后阶段,我们需要极其细致和谨慎地处理,以便精确雕琢出细节,防止雕塑出现破损。所以选择合适的调度器也很重要。

采样器详解

接下来我们根据ComfyUI中采样器的顺序,对常用的采样器进行详细介绍:

euler

最简单的采样器,在采样过程中不添加随机噪声,通过噪声计划告诉采样器,每个步骤中应该有多少噪声。并使用欧拉方法减少恰当数量的噪声。以匹配噪声计划,直到最后一步为0 为止。

euler_ancestral (简写成euler a)

祖先采样器的一种,类似于euler。其特点是在每一个新的处理步骤中,它们会添加之前步骤中产生的随机变量。可以想象成在每个步骤清除噪声之后,又会有一部分先前的噪声被重新引入。由于每一步都会增加新的随机噪声,带有这一特性的采样器永远不会达到收敛状态。

heum

heum是对euler更精确的改进,但是需要在每个步骤中预测两次噪声,因此速度比euler慢2倍。

dpm_2

dpm_2可以被视为dpm的升级版,相当于“版本2”。它在原有模型的基础上做了进一步的改良和优化。

dpm_2_ancestral (简写成dpm_2 a)

祖先采样器的一种,使用dpm_2方法,此采样器永远不会达到收敛状态。

lms

lms采样速度与euler相同。

dpmpp_2s_ancestral(简写成dpm++ 2s a)

dpm++是dpm的另一个升级版。dpm++使用结合确定性和概率方法的混合方法进行采样和后续的降噪。“2”表示它们是二阶模型,“s”代表单步骤,“a”表示是祖先采样器的一种,此采样器永远不会收敛。

dpmpp_sde(简写成dpm++ sde)

dpm++的SDE变体,它永远不会收敛,因此即便步数增高,它也不能提供更高的质量,而是提供更多的变化,就像祖先的采样器一样。

dpmpp_2m(简写成dpm++ 2m)

类似于dpm++ 2s,"m"代表多步骤(Multi step)。这种方法在每一步进行多次计算,并且会考虑到之前步骤中获取的信息,从而实现更精确、更高质量的收敛,但相应地也需要更长的时间。

dpmpp_2m_sde(简写成dpm++ 2m sde)

dpmpp_2m的SDE变体,它永远不会收敛,因此即便步数增高,它也不能提供更高的质量,而是提供更多的变化,就像祖先的采样器一样。

ddim

ddim是最先被提出的扩散模型采样器之一。它的核心想法是每一步的图片可以通过添加以下三个东西来近似:最终的图片,图像方向指向当前步骤的图像和随机噪声。可是在抵达最后一步之前我们怎么知道最终的图片呢?ddim采样器是使用去噪图片来对最终图片进行估计。

uni_pc

最新添加的采样器,应该是目前最快最新的采样方法,10步内实现高质量图像。

如何选择采样器

没有最好的采样器,只有最适合的采样器。

  • • 如果想要稳定可重现的图像,请避免选择任何祖先采样器(名字以a或sde结尾的)
  • • 如果想要简单的图,建议选择euler,heun(可以减少步骤以节省时间)
  • • 如果想快速生成质量不错的图片,建议选择dpmpp_2m (20 -30步) 、uni_pc(15-25步)
  • • 如果想要每次生成不一样的图像,可以选择不收敛的祖先采样器(名字里面带a或sde)

对比测试

建立一个XY图表,横坐标是步数,从第5步开始,间隔四步,总共8个数值;纵坐标是上面介绍的各种采样器。

彻底搞定ComfyUI中的采样器和调度器

从上图中不难发现如下规律:

  • • 名字以a或sde结尾的,确实不会收敛,每一步迭代图像都会发生变化
  • • euler,heun和ddim采样器在第9步就已经出图,对于简单图来说,确实是又好又快。
  • • dpmpp_2m和uni_pc采样器在第14步出图,其中dpmpp_2m在第18步开始收敛,效果很好。
  • • 不要被dpm_adaptive采样器骗了,虽然第5步就已经收敛,但是该采样器速度特别慢。后续我又单独进行了测试,实际第2步就已经收敛,但是速度很慢。
  • • lms采样器表现最差。

作者:码人老高

来源-微信公众号:AI全栈之路

出处:https://mp.weixin.qq.com/s/MhErwK2ReRkRBWg733U6tw