ConfyUI: 从函数角度理解ComfyUI的节点

ComfyUI 基础工作流解析

什么是 ComfyUI 的节点?

ComfyUI 中,工作流是由一个个 节点(Node) 构成的。每个节点可以理解为一个函数,它完成特定的功能,并通过输入和输出与其他节点连接。如下图所示,这是一个基础工作流的示例:

基础工作流示例图

每个节点包含以下四个部分:

  1. 标题:表示节点的功能名称(类似函数名)。
  2. 左侧的点:表示节点的输入参数。
  3. 右侧的点:表示节点的输出结果。
  4. 表单:用于配置节点的参数(类似函数内部的控制逻辑)。

对于有编程基础的用户,可以将 ComfyUI 的节点类比为函数:

  • 标题 对应函数名。
  • 左侧的点 对应函数的输入参数。
  • 右侧的点 对应函数的返回值。
  • 表单 对应函数的配置逻辑。

通过连接这些节点(函数),ComfyUI 可以完成复杂的任务,比如图像生成、文本编码等。接下来,我们通过几个常见节点的具体示例,结合代码形式,帮助大家快速理解。


示例 1:Checkpoint 加载器

功能:加载一个指定的模型,并返回模型及其相关组件。

Checkpoint 加载器节点图

等效的代码逻辑如下:

def checkpoint_加载器_简易():
    # ckpt_name:表单字段,用于配置加载的模型名称
    return (MODEL, CLIP, VAE)  # 返回 模型、CLIP 和 VAE

输入和输出:

  • 输入:无输入。
  • 输出:返回三个结果:
    • MODEL:加载的模型。
    • CLIP:文本编码器,用于处理提示词。
    • VAE:图像编码器,用于处理潜空间图像。

示例 2:CLIP 文本编码

功能:对用户输入的提示词进行编码,生成一个用于条件控制的向量。

CLIP 文本编码节点图

等效的代码逻辑如下:

def CLIP_文本编码(clip) -> CONDITIONING:
    # clip:输入的 CLIP 模型
    # 表单字段:用户输入的文本(提示词)
    return CONDITIONING  # 返回处理后的提示词向量

输入和输出:

  • 输入
    1. clip:CLIP 模型组件(通常由 Checkpoint 加载器返回)。
    2. 用户输入的文本提示词(通过表单提供)。
  • 输出:一个 CONDITIONING 对象,表示处理后的提示词向量。

示例 3:生成空 Latent 图像

功能:生成一个初始的潜空间图像(Latent 图像),作为后续处理的输入。

空 Latent 图像节点图

等效的代码逻辑如下:

def 空Latent图像():
    # 表单字段:width(宽度)、height(高度)、batch_size(批量大小)
    return LATENT  # 返回一个初始的潜空间图像

输入和输出:

  • 输入:无输入。
  • 输出
    • LATENT:一个未初始化的潜空间图像。

示例 4:K 采样器

功能:对潜空间图像进行采样处理,生成新的潜空间图像。

K 采样器节点图

等效的代码逻辑如下:

def K采样器(model, positive, negative, latent_image):
    # 表单字段:
    # - seed:随机种子
    # - control_after_generate:控制生成后的处理
    # - steps:采样步数
    # - cfg:提示词控制强度
    # - sampler_name:采样器名称
    # - scheduler:调度器
    # - denoise:降噪强度
    return LATENT  # 返回处理后的潜空间图像

输入和输出:

  • 输入
    1. model:加载的模型。
    2. positive:正提示词向量(由 CLIP 文本编码返回)。
    3. negative:负提示词向量(由 CLIP 文本编码返回)。
    4. latent_image:初始的潜空间图像(由空 Latent 图像节点返回)。
  • 输出
    • LATENT:采样处理后的潜空间图像。

示例 5:VAE 解码

功能:将潜空间图像(LATENT)解码为普通像素图像。

VAE 解码节点图

等效的代码逻辑如下:

def VAE解码(samples, vae):
    # samples:采样器输出的 latent 图像
    # vae:模型加载器返回的 VAE 编码器
    # 功能:将 LATENT 图像转换为普通像素图像
    return IMAGE  # 返回解码后的图像

输入和输出:

  • 输入
    1. samples:采样器输出的潜空间图像(LATENT)。
    2. vae:模型加载器返回的 VAE 编码器。
  • 输出
    • IMAGE:解码后的普通像素图像。

通过以上几个示例,我们可以看到 ComfyUI 的设计逻辑非常贴近编程思维,因此对于有代码基础的人来说,上手非常简单。只需理解几个核心节点的功能和输入输出关系,就可以快速搭建自己的工作流。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容