跳转到内容

WebUI到 Comyfui的过渡需要了解的

🎉

作者:CYCHENYUE

来源:开源的Ai知识库

ComfyUI Standalone Portable Windows Build (For NVIDIA or CPU only)

官方一键安装包地址: https://github.com/comfyanonymous/ComfyUI/releases (widow N卡) 整合了环境和需要的依赖文件.

项目页面: github.com/comfyanonymous/ComfyUI

ComfyUI Examples:https://comfyanonymous.github.io/ComfyUI_examples/

采样器与调度器

分别是什么?怎么配合工作的

📍

简单的理解:采样器负责生成图像,而调度器负责控制噪声减少的速度。

可以将Stable Diffusion模型中的采样器和调度器理解为一个加噪和去噪的过程。在这个过程中,采样器负责向图像添加噪声,而调度器则负责控制去噪的速度。

具体来说,采样器根据当前的噪声水平生成噪声图像,这可以看作是一个向图像添加噪声的过程。然后,调度器根据当前的噪声水平计算下一个噪声水平,这可以看作是一个控制去噪速度的过程。通过逐步降低噪声水平,生成的图像变得越来越清晰。

下面是详细的,如果需要深入点理解可以阅读。

在Stable Diffusion中,采样器和调度器是两个关键组成部分,它们协同工作以生成高质量的图像。

采样器(Sampler)负责从噪声分布中生成图像。它们通过逐步降低噪声水平,使得生成的图像越来越清晰。采样器通常使用特定的算法或优化方法来生成图像,例如马尔可夫链蒙特卡洛(MCMC)或变分推理(Variational Inference)。

调度器(Scheduler)负责控制噪声水平降低的速度。调度器通过定义一个噪声减少曲线来控制采样过程中的噪声水平。这个曲线决定了在每个时间步噪声应该如何减少。调度器可以根据不同的目标进行优化,例如生成高质量的图像、提高采样速度或减少计算成本。

采样器和调度器是相互依赖的,它们共同决定了图像生成的质量和速度。采样器负责生成图像,而调度器负责控制噪声减少的速度。在实际应用中,可以根据具体需求选择合适的采样器和调度器组合,以达到最佳的生成效果。例如,在需要高质量图像的场景中,可以选择具有高质量图像生成能力的采样器和能够控制噪声减少速度的调度器。

以下是Stable Diffusion模型中采样器和调度器协同工作的流程图:

  1. 初始化:设置噪声图像和模型参数。
  2. 采样器生成噪声图像:采样器根据当前的噪声水平生成一个噪声图像。
  3. 模型预测:将生成的噪声图像输入模型,模型预测噪声图像的潜在分布。
  4. 调度器计算噪声水平:调度器根据当前的噪声水平计算下一个噪声水平。
  5. 更新噪声图像:根据调度器计算的噪声水平,更新噪声图像。
  6. 模型预测:将更新的噪声图像输入模型,模型预测更新后的噪声图像的潜在分布。
  7. 调度器计算噪声水平:调度器根据当前的噪声水平计算下一个噪声水平。
  8. 更新噪声图像:根据调度器计算的噪声水平,更新噪声图像。
  9. 模型预测:将更新的噪声图像输入模型,模型预测更新后的噪声图像的潜在分布。
  10. 重复步骤6-9,直到达到所需的噪声水平。
  11. 输出最终图像:当噪声水平足够低时,采样器生成的图像即为最终图像。

一个简化的流程图

采样器

在Stable Diffusion中,采样器(Sampler)负责从噪声分布中生成图像。它们通过逐步降低噪声水平,使得生成的图像越来越清晰。不同的采样器有不同的算法和特性,这些特性影响生成图像的速度、质量和稳定性。以下是一个表格,概述了一些在Stable Diffusion中使用的常见采样器的不同之处:

在comfyui中,把采样器与调度器分开了。这点不同于在webui中的采样方法(sampier)是把两者合并在一起

sde是增加了图像的发挥性和创意,让图像生成更有创造力。

后缀gpu的事调用gpu来生成的。速度也会快一些

comfyui通过采样器+调度器组合的方式与webui中的一致

关于调度器,这边给一个总结,选择karras一般来说效果比较好,

调度器

在Stable Diffusion中,调度器是控制图像生成过程中噪声逐渐减少的关键组件。不同的调度器会影响图像生成的过程和最终的结果。以下是在Stable Diffusion中常见的一些调度器及其特点:

  1. Normal Scheduler:
    • 这是最基本的调度器,线性地减少噪声。
    • 它在每个时间步均匀地减少噪声,直到达到最终生成的图像。
  2. Karras Scheduler:
    • Karras调度器是由Stable Diffusion模型的作者提出的,它使用了一个预定义的噪声减少曲线。
    • 它在生成过程的早期阶段快速减少噪声,在后期逐渐减慢,以帮助模型生成更高质量的细节。
  3. Exponential Scheduler:
    • 指数调度器在每个时间步以指数方式减少噪声。
    • 这会导致在生成过程的早期阶段噪声减少得更快,而后期则减少得较慢。
  4. SGM Uniform Scheduler:
    • SGM(Stochastic Gradient MCMC)统一调度器是一种更高级的调度器,它旨在改善生成图像的多样性和质量。
    • 它在整个生成过程中均匀地减少噪声,并且通常用于改进采样效率。
  5. Simple Scheduler:
    • 简单调度器可能是一个简化的版本,它可能只使用几个参数来控制噪声减少的速率。
    • 这种调度器通常用于快速生成图像的初步草图。
  6. DDIM Uniform Scheduler:
    • DDIM(Denoising Diffusion Implicit Models)统一调度器是一种基于DDIM算法的调度器。
    • 它在整个生成过程中均匀地减少噪声,并且通常与DDIM采样方法一起使用,以生成高质量的图像。

每种调度器的选择都会影响生成图像的速度、质量和多样性。以下是一些关键区别:

  • 速度:不同的调度器可能会有不同的计算复杂度和生成速度。
  • 质量:一些调度器可能会生成更清晰、更详细的图像,而其他调度器可能会产生更多的噪声或伪影。
  • 多样性:某些调度器可能会鼓励模型生成更多样化的图像,而其他调度器可能会导致模型陷入局部最小值,生成重复性较高的图像。

不同采样模式(在WEBUI中的)

这边也列出在webui中的采样模式,方便大家做一个对比.

以下是对中不同采样模式的解释,以及它们适用的图像风格:

  1. DPM++ 2M Karras:结合了DPM++和Karras的采样技术,使用二阶动量校正。
    • 特点:生成高质量的图像,特别是在有ControlNet约束的情况下。
    • 用途:生成高质量的图像。
    • 作用:提供平滑的采样过程,减少图像伪影。
    • 适用风格:适用于高质量图像生成,尤其适用于具有详细结构和细节的图像。
  2. DPM++ SDE Karras:结合了DPM++和SDE(随机微分方程)以及Karras的采样技术。
    • 特点:生成具有较好细节和清晰度的图像。
    • 用途:生成具有较好细节和清晰度的图像。
    • 作用:通过SDE提高采样效率,Karras技术平滑过渡。
    • 适用风格:适用于生成具有高度细节和清晰度的图像,如摄影作品或真实场景的再现。
  3. DPM++ 2M SDE Exponential:使用指数时间步长和二阶动量校正的SDE。
    • 特点:使用指数时间步长加速采样过程,同时保持图像质量。
    • 用途:在保持图像质量的同时提高采样速度。
    • 作用:指数时间步长加速采样过程,同时保持图像质量。
    • 适用风格:适用于需要在保持图像质量的同时提高采样速度的场景,如实时应用或大规模图像生成。
  4. DPM++ 2M SDE Karras:结合了DPM++、SDE和Karras的采样技术。
    • 特点:生成高质量图像,同时保持较高的采样速度。
    • 用途:生成高质量图像。
    • 作用:通过SDE提高采样效率,Karras技术平滑过渡。
    • 适用风格:适用于高质量图像生成,尤其适用于具有详细结构和细节的图像。
  5. Euler a / Euler:基于欧拉方法的简单采样,"a"表示改进版本。
    • 特点:简单快速,但可能产生较明显的图像伪影。
    • 用途:快速生成图像的初步草图。
    • 作用:简单快速,但可能产生较明显的图像伪影。
    • 适用风格:适用于快速生成初步草图的场景,如快速原型设计或创意构思。
  6. LMS / LMS Karras:使用线性多步(LMS)方法,Karras版本进一步改进。
    • 特点:提供相对平衡的速度和质量。
    • 用途:生成中等质量的图像,适用于实时应用。
    • 作用:提供相对平衡的速度和质量。
    • 适用风格:适用于实时应用或中等质量图像生成的场景,如在线编辑或交互式应用。
  7. Heun / DPM++ 2M SDE Heun:使用Heun方法(一种改进的欧拉方法)进行采样。
    • 特点:比欧拉方法更平滑,减少伪影。
    • 用途:生成高质量的图像,同时保持较高的采样速度。
    • 作用:比欧拉方法更平滑,减少伪影。
    • 适用风格:适用于高质量图像生成,尤其适用于具有详细结构和细节的图像。
  8. DPM2 / DPM2 a / DPM2 Karras:DPM的第二版,"a"表示改进,Karras版本进一步优化。
    • 特点:提高采样质量和减少伪影。
    • 用途:生成高质量的图像,特别是在复杂场景中。
    • 作用:提高采样质量和减少伪影。
    • 适用风格:适用于高质量图像生成,尤其适用于具有详细结构和细节的图像。
  9. DPM++ 25 a Karras:DPM++的变体,使用25个时间步长的预定义序列,"a"表示改进,结合Karras技术。
    • 特点:通过特定的步长序列和Karras技术提高图像质量。
    • 用途:生成具有高度细节的图像。
    • 作用:通过特定的步长序列和Karras技术提高图像质量。
    • 适用风格:适用于生成具有高度细节和清晰度的图像,如摄影作品或真实场景的再现。
  10. PLMS / UniPC:PLMS(Piecewise Linear Multistep)和UniPC(Unified Piecewise Constant)是两种不同的多步采样方法。
    • 特点:通过分段线性或分段常数近似加速采样过程。
    • 用途:生成高质量图像,同时保持较高的采样效率。
    • 作用:通过分段线性或分段常数近似加速采样过程。
    • 适用风格:适用于高质量图像生成,尤其适用于具有详细结构和细节的图像。
  11. Restart:在采样过程中允许重新开始,以避免陷入局部最小值。
    • 特点:通过重启机制改善采样结果。
    • 用途:在图像生成过程中提高成功率。
    • 适用风格:适用于图像生成过程中容易出现局部最小值的问题,如具有复杂结构和细节的图像。
  12. DDIM:去噪扩散隐式模型(DDIM)的采样方法。
    • 特点:提供更快的采样速度,同时保持图像质量。
    • 用途:生成高质量的图像。
    • 作用:提供更快的采样速度,同时保持图像质量。
    • 适用风格:适用于高质量图像生成,尤其适用于具有详细结构和细节的图像。
  13. LCM:局部时钟模型(LCM)的采样方法。
    • 特点:通过局部时钟机制加速采样过程。
    • 用途:生成高质量的图像,同时保持较高的采样效率。
    • 作用:通过局部时钟机制加速采样过程。

这些采样模式的主要区别在于其采样方法、采样速度、图像质量和适用场景。以下是它们之间的主要区别:

  1. 采样方法:不同采样模式采用不同的方法来从预训练的扩散模型中生成图像。例如,Euler、Heun、LMS、DPM++、DPM2、DDIM、LCM等分别采用不同的数学方法进行采样。
  2. 采样速度:不同采样模式在生成图像时的速度有所不同。例如,Euler、Heun、LMS等采样模式相对较快,而DPM++、DPM2、DDIM等采样模式则相对较慢。
  3. 图像质量:不同采样模式生成的图像质量有所差异。例如,DPM++、DPM2、DDIM等采样模式通常能够生成更高质量的图像,而Euler、Heun、LMS等采样模式生成的图像质量相对较低。
  4. 适用场景:不同采样模式适用于不同的应用场景。例如,Euler、Heun、LMS等采样模式适用于快速生成初步草图的场景,而DPM++、DPM2、DDIM等采样模式则适用于高质量图像生成的场景。同时,采样模式的选择还需要考虑计算资源和实时性要求等因素。

Latent潜在空间

潜在空间(Latent Space)

在Stable Diffusion模型中,Latent(潜在)通常指的是图像的潜在分布。这个分布包含了与图像相关的所有信息,可以用于生成新的图像。在Stable Diffusion中,模型通过学习图像的潜在分布来捕捉图像的结构和特征,从而实现高质量的图像生成。

在Stable Diffusion模型中,图像的潜在分布是通过一个编码器-解码器结构来学习的。编码器将图像映射到潜在空间,而解码器则将潜在空间中的向量映射回图像空间。通过这种方式,模型可以学习到图像的潜在分布,从而实现图像生成、编辑和操作。

在采样过程中,Stable Diffusion模型通过逐步降低噪声水平来生成图像。在这个过程中,模型根据当前的噪声水平预测图像的潜在分布,然后根据这个分布生成一个新的图像。这个过程重复进行,直到生成一个高质量的图像。

总之,在Stable Diffusion模型中,Latent(潜在)指的是图像的潜在分布,它包含了与图像相关的所有信息。通过学习图像的潜在分布,模型可以实现高质量的图像生成、编辑和操作。

与之对应的是Pixel Space(像素空间)

像素空间(Pixel Space)

像素空间(Pixel Space)指的是图像中每个像素的原始颜色或强度值所组成的空间。图像可以看作是一个二维或三维的矩阵,其中每个元素代表一个像素。在像素空间中,图像的表示是密集的,且包含了大量的细节信息。

像素空间(Pixel Space)和潜在空间(Latent Space)的关系

像素空间(Pixel Space)和潜在空间(Latent Space)是图像表示的两个不同层次。它们之间的关系主要体现在它们之间的映射以及这种映射如何影响图像处理任务。

  1. 映射关系:在深度学习模型中,尤其是生成模型(如变分自编码器(Variational Autoencoder, VAE)和生成对抗网络(Generative Adversarial Network, GAN)),模型通过编码器和解码器结构将像素空间中的图像映射到潜在空间,并从潜在空间映射回像素空间。编码器将图像从像素空间映射到潜在空间,生成一个紧凑的向量表示。解码器则将潜在空间中的向量映射回像素空间,重构图像。这种映射关系使得模型可以在潜在空间中执行各种任务,如生成新的图像、编辑图像或实现数据降维等。
  2. 互操作关系:通过在像素空间和潜在空间之间进行映射,模型可以在两个空间中实现互操作。例如,在潜在空间中执行生成任务,生成新的图像;在像素空间中执行编辑任务,如改变图像的颜色或形状。这种互操作关系使得模型可以灵活地处理图像,同时利用两个空间的优点。
  3. 对图像处理任务的影响:像素空间和潜在空间之间的映射关系以及互操作关系对图像处理任务有着重要的影响。在像素空间中,图像表示是密集的,包含了大量的细节信息,但往往难以处理。通过将图像从像素空间映射到潜在空间,模型可以学习到更高级别的抽象特征,从而提高生成质量。此外,通过在潜在空间中进行操作,模型还可以实现诸如数据降维、缺失数据填充和类别转换等任务,从而提高图像处理的效果。

总之,像素空间和潜在空间之间的关系主要体现在它们之间的映射以及这种映射如何影响图像处理任务。通过在像素空间和潜在空间之间进行映射和互操作,模型可以灵活地处理图像,同时利用两个空间的优点,提高图像处理的效果。

创建一个简单的工作流

基于上面的一些基础,我们在comfyui里面创建一个简单的工作流。

以为采样器为起点,分别拉出来模型、正面条件(正向提示词)、负面条件(负向提示词)、Latent(潜在空间)

这里我们注意一下,正面条件(正向提示词)、负面条件(负向提示词)对应的CLIP文本提示词,要回流到模型(CheckPoint加载器上)

在潜在空间中编码,然后VAE解码,输出图像。

另外,我们输入给潜在空间的信息,都应该是编码过后的,不然是链接不起来的

基于上面的,我们可以创建图生图的工作流,在里面,就需要把上面的空Latent换成载入图片的,之后,图片也需要编码后给到采样器。

然后注意下降噪,在图生图里面,comfyui的降噪就是webui中的重绘幅度

然后,我们放慢点,看下工作流的顺序,希望对大家的理解有帮助

另外:

题词汉化插件:https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet 集合了许多实用的功能

自定义脚本:https://github.com/pythongosssss/ComfyUI-Custom-Scripts 用于界面的一些调整,舒适用户界面自定义脚本。

宏观的理解

采样器,上面为什么需要这么大篇幅的说采样器和调度器,是因为后续我们加载的所有【管道】都是需要挂载到采样器里面的

CLIP Set Last Layer(Clip设置停止层)

CLIP Set Last Layer是一个用于调整CLIP模型输出的节点,它允许用户设置CLIP模型的最后一层。通过设置最后一层,可以从特定的层开始获取文本嵌入,这一过程涉及到将文本编码成文本嵌入的过程。]这种设置方式对于生成具有特定特征或细节的图像非常有用,因为它允许模型在生成过程中选择性地忽略某些层的信息。

此外,CLIP模型是由OpenAI开发的深度学习模型,结合了视觉和语言理解,能够以多模态方式理解和生成文本和图像。模型的结构由多个层级组成,每个层级都比前一个层级更具体。

因此,通过设置最后一层,用户可以根据需要选择从哪个层级开始提取文本嵌入,从而影响生成的图像质量和细节。

总的来说,CLIP Set Last Layer节点是CLIP模型中的一个重要设置,它能够帮助用户根据需要控制模型输出的细节层次,以达到更好的图像生成效果。

工作流

ComfyUI官方示范

https://comfyanonymous.github.io/ComfyUI_examples/

别人的基础工作流示范

https://github.com/cubiq/ComfyUI_Workflows

https://github.com/wyrde/wyrde-comfyui-workflows

工作流分享网站

https://comfyworkflows.com/

Civitai也有不少工作流分享