菜单

核心节点

相关源文件

本文档涵盖了构成 ComfyUI 工作流程基础的核心节点,包括文本编码、VAE 操作、潜在空间操作和基本图像处理节点。这些节点为大多数扩散模型工作流程提供了基本构建块。

有关高级模型特定节点和采样配置的信息,请参阅 高级模型节点。有关图像处理和蒙版操作的信息,请参阅 图像和蒙版节点

概述

ComfyUI 中的核心节点实现了扩散模型工作流程所需的基本操作。它们负责在不同数据表示之间进行转换(文本到嵌入、图像到潜在表示)、模型加载和基本条件操作。这些节点继承自 ComfyNodeABC 基类,并遵循框架中定义的标准输入/输出类型系统。

节点类别

文本编码节点

文本编码节点将自然语言提示转换为扩散模型可以理解的数学表示。

核心文本编码架构

来源:nodes.py49-70 nodes.py72-83 nodes.py84-121 nodes.py122-149 nodes.py150-170

CLIPTextEncode 节点是主要的文本编码接口,它接收原始文本和 CLIP 模型以生成条件张量。编码过程利用 CLIP 模型的 tokenizeencode_from_tokens_scheduled 方法,将文本转换为引导扩散过程的嵌入。

VAE 操作

VAE(变分自编码器)节点负责在像素空间图像和扩散模型使用的潜在空间表示之间进行转换。

VAE 数据流

来源:nodes.py273-294 nodes.py328-340 nodes.py295-327 nodes.py341-357 nodes.py689-777

VAEDecode 节点将潜在表示转换回像素图像,而 VAEEncode 执行相反的操作。分块变体通过处理重叠的块来处理大型图像,以管理内存使用。

模型加载基础架构

模型加载节点为加载和配置扩散工作流程中使用的不同类型的模型提供了基础。

模型加载层级

来源:nodes.py554-575 nodes.py894-917 nodes.py919-927 nodes.py689-777 nodes.py634-674

CheckpointLoaderSimple 节点是最常用的加载器,可自动检测模型配置并加载完整的模型集。像 UNETLoaderCLIPLoader 这样的专用加载器为高级工作流程提供了更精细的控制。

条件操作

条件节点用于操纵控制扩散模型生成行为的引导信号。

条件操纵流程

来源:nodes.py72-83 nodes.py84-121 nodes.py150-170 nodes.py208-232 nodes.py233-255 nodes.py256-272

条件操作允许精确控制文本提示如何影响生成。像 ConditioningSetArea 这样的空间操作支持区域特定的提示,而 ConditioningSetTimestepRange 这样的时间操作则控制条件在去噪过程中应用的具体时间点。

潜在空间操作

潜在空间节点负责处理扩散模型使用的潜在表示的操作和持久化。

潜在处理流程

来源:nodes.py451-500 nodes.py502-536 nodes.py359-397 nodes.py399-449

SaveLatentLoadLatent 节点为潜在表示提供了持久化功能,从而实现了工作流程优化和调试。像 VAEEncodeForInpaint 这样的修复节点准备了具有适当噪声模式的蒙版潜在表示,以用于修复工作流程。

ControlNet 集成

ControlNet 节点支持基于结构化引导图像的条件生成。

ControlNet 应用流程

来源:nodes.py779-794 nodes.py844-892 nodes.py796-811

ControlNet 节点将结构化引导应用于条件,从而精确控制构图、姿势、深度和其他结构元素。ControlNetApplyAdvanced 节点为应用强度和时间步长范围提供了精细控制。

实现细节

核心节点实现在主要的 nodes.py 文件中,并遵循类型系统定义的 ComfyNodeABC 接口。每个节点类都实现了

  • INPUT_TYPES() 类方法定义了预期的输入及其类型
  • RETURN_TYPES 元组指定了输出类型
  • 主要功能方法(通常命名为 encodedecodeload_checkpoint 等)
  • 用于 UI 组织的类别分类

这些节点利用了 comfy.sd 的底层模型基础架构、comfy.latent_formats 的潜在格式处理以及模型管理系统,以实现高效的 GPU 内存使用。

来源:nodes.py28 comfy/comfy_types.py comfy/sd.py88-266 comfy/latent_formats.py