第一个工作流

本教程将指导您创建第一个ComfyUI工作流,生成一张简单的图像。通过这个教程,您将了解ComfyUI的基本工作流程和核心概念。

简介

学习目标

预计学习时间

15分钟

前置知识

工作流概述

我们将创建一个基础的文生图(Text-to-Image)工作流,包含以下节点:

  1. CheckpointLoaderSimple: 加载Stable Diffusion模型
  2. CLIPTextEncode: 编码提示词(正向和负向)
  3. EmptyLatentImage: 创建空白潜在空间
  4. KSampler: 采样生成图像
  5. VAEDecode: 解码潜在空间为图像
  6. SaveImage: 保存生成的图像

创建步骤

工作流创建步骤

下图展示了创建工作流的四个基本步骤:

这个图展示了创建工作流的核心步骤: - 添加节点: 双击画布添加所需节点 - 连接节点: 从输出端口拖动到输入端口 - 设置参数: 配置节点的各项参数 - 执行工作流: 点击Queue Prompt执行生成

步骤1: 添加模型加载节点

  1. 打开ComfyUI
  2. 启动ComfyUI
  3. 访问 http://localhost:8188

  4. 添加CheckpointLoaderSimple节点

  5. 在画布空白处双击
  6. 搜索"CheckpointLoaderSimple"
  7. 选择并添加节点

  8. 选择模型

  9. 点击"ckpt_name"下拉菜单
  10. 选择已下载的模型(如v1-5-pruned-emaonly.ckpt)

访问 http://localhost:8188

添加CheckpointLoaderSimple节点

选择并添加节点

选择模型

步骤2: 添加文本编码节点

  1. 添加正向提示词节点
  2. 双击画布
  3. 搜索"CLIPTextEncode"
  4. 添加节点

  5. 设置正向提示词

  6. 在"text"文本框中输入: beautiful landscape, mountains, sunset, 4k, detailed

  7. 连接CLIP输出

  8. 从CheckpointLoaderSimple的"CLIP"输出端口
  9. 拖动到CLIPTextEncode的"clip"输入端口

  10. 添加负向提示词节点

  11. 再次添加一个CLIPTextEncode节点
  12. 在"text"文本框中输入: ugly, blurry, low quality

  13. 连接CLIP输出

  14. 从CheckpointLoaderSimple的"CLIP"输出端口
  15. 拖动到第二个CLIPTextEncode的"clip"输入端口

添加节点

设置正向提示词

在"text"文本框中输入: beautiful landscape, mountains, sunset, 4k, detailed

连接CLIP输出

拖动到CLIPTextEncode的"clip"输入端口

添加负向提示词节点

在"text"文本框中输入: ugly, blurry, low quality

连接CLIP输出

步骤3: 添加潜在空间节点

  1. 添加EmptyLatentImage节点
  2. 双击画布
  3. 搜索"EmptyLatentImage"
  4. 添加节点

  5. 设置图像尺寸

  6. width: 512
  7. height: 512
  8. batch_size: 1

添加节点

设置图像尺寸

步骤4: 添加采样器节点

  1. 添加KSampler节点
  2. 双击画布
  3. 搜索"KSampler"
  4. 添加节点

  5. 设置采样参数

  6. seed: 123456789(或点击随机按钮)
  7. steps: 20
  8. cfg: 8
  9. sampler_name: euler
  10. scheduler: normal
  11. denoise: 1

  12. 连接节点

  13. model: 连接到CheckpointLoaderSimple的"MODEL"输出
  14. positive: 连接到正向CLIPTextEncode的"CONDITIONING"输出
  15. negative: 连接到负向CLIPTextEncode的"CONDITIONING"输出
  16. latent_image: 连接到EmptyLatentImage的"LATENT"输出

添加节点

设置采样参数

denoise: 1

连接节点

步骤5: 添加VAE解码节点

  1. 添加VAEDecode节点
  2. 双击画布
  3. 搜索"VAEDecode"
  4. 添加节点

  5. 连接节点

  6. samples: 连接到KSampler的"LATENT"输出
  7. vae: 连接到CheckpointLoaderSimple的"VAE"输出

添加节点

连接节点

步骤6: 添加保存节点

  1. 添加SaveImage节点
  2. 双击画布
  3. 搜索"SaveImage"
  4. 添加节点

  5. 设置保存参数

  6. filename_prefix: ComfyUI

  7. 连接节点

  8. images: 连接到VAEDecode的"IMAGE"输出

添加节点

设置保存参数

filename_prefix: ComfyUI

连接节点

完整工作流

工作流应该如下连接:

CheckpointLoaderSimple
├── MODEL ──────────────┐
├── CLIP ───┬────────────┼── KSampler ─── VAEDecode ─── SaveImage
└── VAE ────┴────────────┘               │
                                          └── samples ──┘

CLIPTextEncode (positive) ─── positive ──┘
CLIPTextEncode (negative) ─── negative ──┘

EmptyLatentImage ─── latent_image ───────┘

执行工作流

  1. 检查连接
  2. 确保所有节点正确连接
  3. 检查没有红色警告

  4. 执行工作流

  5. 点击"Queue Prompt"按钮
  6. 或按Ctrl+Enter

  7. 等待完成

  8. 查看底部进度条
  9. 等待执行完成

  10. 查看结果

  11. 生成的图像将显示在右侧
  12. 图像保存在output/目录

检查没有红色警告

执行工作流

或按Ctrl+Enter

等待完成

等待执行完成

查看结果

工作流JSON

以下是完整的工作流JSON代码:

{
  "3": {
    "inputs": {
      "seed": 123456789,
      "steps": 20,
      "cfg": 8,
      "sampler_name": "euler",
      "scheduler": "normal",
      "denoise": 1,
      "model": ["4", 0],
      "positive": ["6", 0],
      "negative": ["7", 0],
      "latent_image": ["5", 0]
    },
    "class_type": "KSampler"
  },
  "4": {
    "inputs": {
      "ckpt_name": "v1-5-pruned-emaonly.ckpt"
    },
    "class_type": "CheckpointLoaderSimple"
  },
  "5": {
    "inputs": {
      "width": 512,
      "height": 512,
      "batch_size": 1
    },
    "class_type": "EmptyLatentImage"
  },
  "6": {
    "inputs": {
      "text": "beautiful landscape, mountains, sunset, 4k, detailed",
      "clip": ["4", 1]
    },
    "class_type": "CLIPTextEncode"
  },
  "7": {
    "inputs": {
      "text": "ugly, blurry, low quality",
      "clip": ["4", 1]
    },
    "class_type": "CLIPTextEncode"
  },
  "8": {
    "inputs": {
      "samples": ["3", 0],
      "vae": ["4", 2]
    },
    "class_type": "VAEDecode"
  },
  "9": {
    "inputs": {
      "filename_prefix": "ComfyUI",
      "images": ["8", 0]
    },
    "class_type": "SaveImage"
  }
}

参数说明

KSampler参数

图像尺寸

实验与调整

修改提示词

尝试不同的提示词:

a futuristic city, cyberpunk style, neon lights, night

调整参数

修改种子

常见问题

Q1: 工作流执行失败

A: 检查节点连接是否正确,确保所有必需参数都已设置。

Q2: 生成的图像质量差

A: 尝试增加steps,调整cfg,或改进提示词。

Q3: 执行速度慢

A: 检查GPU是否正常工作,减少steps或batch_size。

Q4: 如何保存工作流?

A: 点击"File" > "Save",保存为JSON文件。

Q5: 如何加载工作流?

A: 点击"File" > "Load",选择JSON文件。

扩展练习

练习1: 生成不同风格的图像

尝试使用不同的提示词生成: - 肖像画 - 动漫风格 - 抽象艺术

练习2: 调整图像比例

尝试不同的图像比例: - 512x768(纵向) - 768x512(横向) - 1024x1024(高清)

练习3: 批量生成

将batch_size设置为4,一次生成多张图像。

练习4: 保存不同版本

修改filename_prefix,保存不同版本的图像。

下一步

完成第一个工作流后,您可以:

  1. 学习核心概念
  2. 探索节点参考
  3. 尝试其他工作流教程

相关资源

更新日志