好的,我们来探讨一下 ComfyUI 的基本原理,理解这些原理将有助于用户更灵活地配置节点,并了解节点间的连接规则。
首先,我们来看 Stable Diffusion 生成图像的过程。这是一个从完全的噪声逐步迭代,最终生成清晰图像的扩散模型过程。理解其运作方式与有效使用 ComfyUI 密切相关。
要理解 ComfyUI,首先需要了解扩散模型。下图展示了一个经典的扩散模型流程。初看可能有些复杂,但我们逐步分析。简而言之,这是一个包含编码器和解码器的过程,数据流向是从输入到输出。中间层是潜在空间 (latent space)。输入端还会接收条件信息,例如提示词 (prompt)、图生图的参考图像、语义分割图或 ControlNet 等约束条件。模型在潜在空间中进行扩散(diffusion)和去噪(denoise)处理,逐步生成清晰的图像,最后通过解码器输出为最终图片。
我们可以将这个过程抽象为:输入(例如潜在图像或像素空间的图像)经过编码,进入一个“黑盒”处理阶段。在 SD Web UI 中,我们通常无法直接干预这个“黑盒”内的过程。但在 ComfyUI 中,我们可以添加条件控制,例如 ControlNet、prompt 或图生图等,来影响数据在“黑盒”内的处理。数据经过条件控制后,继续在“黑盒”中处理,最终通过解码器生成图像。
因此,在 SD Web UI 中,我们主要控制像素空间和条件这两个部分,而潜在空间的处理通常是不可见的。然而,图像生成过程中的大部分操作实际上发生在潜在空间内。理解潜在空间的概念对于使用 ComfyUI 进行更精细的控制至关重要,这也是 ComfyUI 的核心优势之一。
这种架构设计非常巧妙。像素数据包含 RGB 三个通道,每个通道有 255 个数值,定义了图像的细节。直接在像素空间进行生成或训练,处理的数据量非常庞大。通过编码过程,可以将高维度的像素数据压缩到低维度的潜在空间,在压缩后的数据上进行控制、去噪等操作,然后再解码回像素空间。这类似于将大文件压缩后再进行传输或存储,下载后再解压缩进行操作。图像先被压缩,然后在潜在空间进行处理,最后再解压缩得到最终图像。
对比 SD Web UI 和 ComfyUI,SD Web UI 无法直接操作压缩后的潜在空间数据。而 ComfyUI 允许用户直接操控潜在空间。例如,可以放大潜在空间的像素,或者将不同潜在空间的信息叠加,这正是图像融合 (image merging) 的原理。ComfyUI 还能实现复杂的区域组合 (area composition),将不同潜在空间的信息在 XY 坐标轴上组合,类似于图像图层的操作。总而言之,ComfyUI 允许用户对压缩后的信息进行组合、微调等操作,然后再进行解压缩。ComfyUI 最大的特点在于能够直接操作潜在空间。
将上述原理与 ComfyUI 的界面进行对照,可以发现 ComfyUI 的工作流程可以分解为以下几个关键步骤:
- 提供空白图像 (Latent Image): 尽管 SD Web UI 也会在后台提供,但在 ComfyUI 中需要显式地添加此节点,并设定图像尺寸。
- 编码器 (Encoder) 和解码器 (Decoder): 编码和解码是对应的操作,如同压缩和解压缩,两者需要匹配。
- 模型加载 (Model Loading): 加载基础模型 (Checkpoint) 或 LoRA 模型。
- 条件控制 (Conditioning): 通过 prompt、ControlNet 或图生图等方式施加约束。
- 采样器 (Sampler): 选择采样算法,例如 DDIM、Euler 等,这与 SD Web UI 中的概念相同。
- VAE 选择: 通常使用模型自带的 VAE。
- 解码输出 (Decoding Output): 将潜在空间的图像解码为最终的像素图像。
在 ComfyUI 的界面中,这些步骤对应着不同的节点。
- Load Checkpoint: 加载模型。
- Empty Latent Image: 生成初始的空白潜在图像,并设置尺寸。
- CLIP Text Encode (Prompt/Negative Prompt): 提示词和反向提示词的编码器。
- KSampler: 采样器节点,可以选择不同的采样算法。
- VAE Decode: 解码器节点,将潜在图像解码为像素图像。
理解了这些基本模块后,就可以通过修改 prompt 或模型,点击输出按钮来生成图像。这种模块化的方式也方便了团队协作,可以方便地共享和复用工作流。ComfyUI 的工作流程与 SD Web UI 的基本原理一致,例如 SD Web UI 中的模型加载器、VAE、CLIP 编码器、采样器以及潜在图像和条件控制等模块,只是 ComfyUI 将这些步骤以可视化的节点方式呈现。
总结而言,ComfyUI 是一个基于节点的可视化 AI 生成平台,具有高度的自由度。其平台特性在于支持丰富的自定义节点,吸引了众多开发者为其贡献代码。ComfyUI 是一款非常值得学习和掌握的 AI 生成工具。
图片来源见水印