Loading...
正在加载...
请稍候

🎨 ComfyUI 从入门到精通

小凯 (C3P0) 2026年03月18日 07:26

"如果你不能向一个六岁的孩子解释清楚,那你自己也没搞懂。"
——理查德·费曼


📖 序章:当 AI 绘画遇见乐高积木

你有没有想过,为什么有些 AI 生成的图片那么惊艳,而你的尝试却总是差强人意?

问题的答案,往往不在于你用的模型有多高级,而在于你是否真正理解了图像生成的本质流程。就像同样是面粉、鸡蛋和牛奶,有人能做出米其林三星的可丽饼,有人却只能摊出一堆焦糊的煎饼。

ComfyUI 就像是把 AI 绘画这件事,拆解成了一堆积木。

想象一下,传统的 AI 绘画软件(比如 AUTOMATIC1111 的 WebUI)是一个封装好的黑盒子——你输入文字,它输出图片。这很方便,但也很受限。就像你用傻瓜相机拍照,按快门就行,但你永远不知道光圈、快门速度、ISO 是怎么配合的。

而 ComfyUI 呢?

它把整个过程可视化了。每一个步骤——加载模型、编码提示词、采样去噪、解码图像——都是一个可以拖拽的节点。你可以像拼乐高一样,把这些节点连接起来,构建出任意复杂的图像生成流程。

小注解:节点(Node)是什么?简单说,它就是一个功能模块。输入数据进来,经过处理,输出结果出去。就像咖啡机:倒入水和咖啡豆(输入),按下开关(处理),流出咖啡(输出)。

这种设计的美妙之处在于——透明

你看到的不是一个神秘的黑盒子,而是一条清晰的数据流。数据从左边流进,经过一个个处理节点,最终在右边变成图像。如果结果不满意,你可以清楚地看到是哪个环节出了问题,然后调整对应的节点参数。

这就是 ComfyUI 的核心理念:把复杂的事情拆简单,把隐藏的东西变透明

让我们开始这场探险吧。


🚀 第一章:搭起你的工作台

1.1 选择你的武器

ComfyUI 有三种主要的安装方式,就像你可以选择骑自行车、开汽车或者坐高铁去同一个目的地——取决于你的需求和条件。

🖥️ 方式一:桌面版(推荐新手)

这是 ComfyUI 官方推出的傻瓜式安装包,支持 Windows 和 macOS。

ComfyUI Desktop

它的优点是:

  • 一键安装,不用折腾 Python 环境
  • 自动更新,永远保持最新版本
  • 内置模型管理器,下载模型很方便

💼 方式二:便携版(Windows 专属)

这是一个绿色免安装版本,下载解压就能用,甚至可以直接放在 U 盘里随身携带。

下载地址:https://github.com/comfyanonymous/ComfyUI/releases

解压后你会看到这样一个文件夹结构:

ComfyUI_windows_portable/
├── ComfyUI/                    # 核心程序
│   ├── models/                 # 模型存放目录
│   │   ├── checkpoints/        # 大模型(如 SDXL、Flux)
│   │   ├── loras/              # LoRA 模型
│   │   ├── controlnet/         # ControlNet 模型
│   │   ├── vae/                # VAE 模型
│   │   └── upscale_models/     # 放大模型
│   ├── custom_nodes/           # 自定义节点插件
│   └── ...
├── python_embeded/             # 内置 Python 环境
└── run_nvidia_gpu.bat          # 启动脚本(NVIDIA 显卡)

🛠️ 方式三:手动安装(适合极客)

如果你已经熟悉了 Python 环境,或者使用的是 Linux 系统,手动安装会给你最大的控制权。

# 1. 克隆仓库
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI

# 2. 安装依赖
pip install -r requirements.txt

# 3. 安装 PyTorch(根据你的硬件选择)
# NVIDIA GPU:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130

# AMD GPU (Linux):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1

# Apple Silicon:
pip install torch torchvision torchaudio

# 4. 启动
python main.py

小注解:PyTorch 是什么?你可以把它理解为 AI 模型的"发动机"。不同的显卡需要不同的发动机版本——NVIDIA 用 CUDA,AMD 用 ROCm,苹果用 Metal。

1.2 第一次启动

无论你选择哪种方式,启动后打开浏览器,访问 http://127.0.0.1:8188,你会看到这样的界面:

ComfyUI Default UI

这就是 ComfyUI 的主战场。中间那片空白画布,就是你即将挥洒创意的舞台。

1.3 模型该放哪?

ComfyUI 默认会自带一个简单的示例模型,但如果你想生成更精美的图像,需要下载更大的模型文件。

这就像是你买了一个专业相机,但默认只配了一个普通镜头。想拍出大片,你得换更好的镜头。

主要模型类型及存放位置:

模型类型 存放路径 文件格式 作用
Checkpoint models/checkpoints/ .safetensors, .ckpt 主模型,决定图像风格
LoRA models/loras/ .safetensors 微调模型,改变局部风格
ControlNet models/controlnet/ .safetensors, .pth 控制图像结构
VAE models/vae/ .safetensors, .ckpt 图像编解码器
Embeddings models/embeddings/ .pt, .safetensors 文本嵌入,负面提示词常用
Upscale models/upscale_models/ .pth 图像放大模型

小注解:Checkpoint 为什么叫"检查点"?因为在训练 AI 模型的过程中,会定期保存进度,这些保存的文件就叫 checkpoint。你可以理解为游戏的存档文件。


🧩 第二章:节点——ComfyUI 的乐高积木

2.1 什么是节点?

现在,让我们深入理解 ComfyUI 的核心概念——节点(Node)

想象你在厨房里做一道菜。你需要:

  1. 从冰箱里取出食材(加载
  2. 用菜刀切好(处理
  3. 放入锅里炒(加工
  4. 盛到盘子里(输出

ComfyUI 的节点,就像是厨房里的各种工具和设备。每个节点都有特定的功能,它们通过"线"连接起来,数据就像食材一样,从一个节点流向另一个节点。

节点的基本结构:

┌─────────────────────────┐
│      节点名称            │  ← 告诉你这个节点是做什么的
├─────────────────────────┤
│                         │
│   ○ 输入1               │  ← 左侧是输入接口(接收数据)
│   ○ 输入2               │
│                         │
│   [参数1: 值]           │  ← 中间是参数设置
│   [参数2: 值]           │
│                         │
│   ● 输出1               │  ← 右侧是输出接口(发送数据)
│   ● 输出2               │
│                         │
└─────────────────────────┘

2.2 认识数据类型的颜色

ComfyUI 用颜色来区分不同类型的数据流,这就像是电路中的不同颜色的电线:

Node Data Types

颜色 数据类型 说明
🟣 淡紫色 MODEL 扩散模型(大模型本身)
🟡 黄色 CLIP 文本编码模型
🔴 玫瑰色 VAE 图像编解码模型
🟠 橙色 CONDITIONING 条件/提示词编码后的数据
🩷 粉色 LATENT 潜空间图像(AI 眼中的图像)
🔵 蓝色 IMAGE 像素图像(人类眼中的图像)
🟢 绿色 MASK 遮罩/蒙版

小注解:什么是潜空间(Latent Space)?想象你有一张高清照片,直接处理它很慢。潜空间就像是照片的"压缩版",保留了关键信息但尺寸更小。AI 在潜空间里工作效率更高,最后再通过 VAE 解码回正常图像。

2.3 你的第一个工作流

让我们从最经典的 文生图(Text to Image) 流程开始。

Basic Text to Image Workflow

这个数据流可以这样理解:

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Load Checkpoint │────▶│  CLIP Text      │     │  Empty Latent   │
│  (加载大模型)     │     │  Encode (编码   │◀────│  Image (空白画布)│
│                 │     │   提示词)        │     │                 │
│  输出: MODEL    │     │                 │     │  输出: LATENT   │
│        CLIP     │     │  输入: 文本     │     │                 │
│        VAE      │     │  输出: CONDITIONING│  │                 │
└─────────────────┘     └─────────────────┘     └─────────────────┘
         │                       │                       │
         │                       ▼                       ▼
         │              ┌─────────────────┐     ┌─────────────────┐
         │              │  KSampler       │◀────│                 │
         └─────────────▶│  (采样器)        │     │                 │
                        │                 │     │                 │
                        │  输入: MODEL    │     │                 │
                        │        +CONDITIONING│  │                 │
                        │        LATENT   │     │                 │
                        │  输出: LATENT   │     │                 │
                        └─────────────────┘     │                 │
                                │               │                 │
                                ▼               │                 │
                        ┌─────────────────┐     │                 │
                        │  VAE Decode     │     │                 │
                        │  (解码图像)      │─────┘                 │
                        │                 │                       │
                        │  输入: LATENT   │◀──────────────────────┘
                        │        VAE      │
                        │  输出: IMAGE    │
                        └─────────────────┘
                                │
                                ▼
                        ┌─────────────────┐
                        │  Save Image     │
                        │  (保存图像)      │
                        │                 │
                        │  输入: IMAGE    │
                        └─────────────────┘

步骤详解:

1️⃣ Load Checkpoint(加载大模型)

这是整个流程的起点。就像你要开始画画,首先得拿出画笔和颜料。

  • MODEL:大模型本身(淡紫色线)
  • CLIP:文本理解组件(黄色线)
  • VAE:图像编解码器(玫瑰色线)

2️⃣ CLIP Text Encode(编码提示词)

这一步把人类的文字翻译成 AI 能理解的"语言"。

  • 正面提示词(Positive):你想要什么?比如 "a beautiful sunset over mountains, high quality, masterpiece"
  • 负面提示词(Negative):你不想要什么?比如 "blurry, low quality, deformed"

小技巧:提示词越具体越好。与其说 "a person",不如说 "a young woman with long black hair, wearing a red dress, standing in a garden"。

3️⃣ Empty Latent Image(空白画布)

这是 AI 作画的"画布"。你可以选择尺寸:

  • 512×512(正方形)
  • 512×768(竖版)
  • 768×512(横版)
  • 或者任意你喜欢的比例

小注解:为什么是 512?这是 SD 1.5 模型训练时的默认尺寸。SDXL 支持 1024×1024。记住:尺寸越大,需要的显存越多,生成越慢。

4️⃣ KSampler(采样器)

这是魔法发生的地方!

采样器的工作,简单来说,就是从一张 随机噪声图 开始,逐步 去噪,最终变成一张清晰的图像。

关键参数:

  • seed(种子):随机数的起点。同样的种子+同样的参数=同样的图像
  • steps(步数):去噪的迭代次数。通常 20-30 步就够了
  • cfg(引导强度):提示词的影响力。7-8 是常用值,太高会让图像过饱和
  • sampler_name(采样算法):Euler、DPM++、UniPC 等,各有特点
  • scheduler(调度器):控制噪声曲线的变化方式

比喻时间:想象你在一块布满随机划痕的大理石上雕刻。每一步,你都根据脑海中的图像(提示词),决定哪些划痕该加深、哪些该磨平。步数越多,细节越精细,但耗时也越长。

5️⃣ VAE Decode(解码图像)

采样器输出的还是潜空间图像(AI 的"思维空间"),VAE 把它解码成人类能看懂的像素图像。

6️⃣ Save Image(保存图像)

最后,把生成的图像保存到 output 文件夹。


🔧 第三章:图生图与局部重绘

3.1 图生图(Image to Image)

如果说文生图是"凭空创造",那图生图就是"改造已有"。

Img2Img Workflow

核心区别:用一张真实图像替代 Empty Latent Image,并且多了一个重要参数—— denoise(去噪强度)

  • denoise = 0.0:完全保留原图,没有任何变化
  • denoise = 0.5:一半原图,一半新内容
  • denoise = 1.0:完全重绘,原图只保留大致结构

实际应用

  • 低 denoise(0.2-0.4):改变风格但保留内容,比如把照片变成油画风格
  • 中 denoise(0.5-0.7):较大改动,比如改变人物服装、背景
  • 高 denoise(0.8-1.0):几乎完全重绘,只保留构图

3.2 局部重绘(Inpainting)

这是图生图的高级应用——只修改图像的特定区域,其他地方完全保留。

Inpainting Workflow

关键节点:Set Latent Noise Mask(设置潜空间遮罩)

使用方法:

  1. 在 Load Image 节点上传图片
  2. 右键图片 → Open in MaskEditor(打开遮罩编辑器)
  3. 用画笔涂抹想要重绘的区域(黑色是保留,白色是重绘)
  4. 连接遮罩到 Set Latent Noise Mask

生活比喻:就像装修时给家具盖防尘布。遮罩就是那块布,盖住的地方保护起来,没盖住的地方重新粉刷。


🎮 第四章:ControlNet——让 AI 听指挥

4.1 为什么需要 ControlNet?

文生图有一个痛点:随机性太强

你说 "a person standing",AI 可能给你生成正面站立、侧面站立、背影,姿势、角度、构图完全随机。如果你想要 特定的姿势特定的构图,怎么办?

这就是 ControlNet 的用武之地。

ControlNet 就像给 AI 提供了一个"参考图":你可以画一个火柴人简笔画,ControlNet 会让 AI 按照那个姿势生成真实的图像。

4.2 ControlNet 的工作原理

ControlNet Diagram

ControlNet 的节点链:

Load Image → Preprocessor → Load ControlNet Model → Apply ControlNet → KSampler

预处理器的种类:

预处理器 提取的特征 适用场景
Canny 边缘轮廓 保持物体形状和结构
OpenPose 人体骨架 控制人物姿势
Depth 深度图 保持空间层次关系
MLSD 直线边缘 建筑、室内设计
HED 柔和边缘 更自然的轮廓保持
Scribble 涂鸦线条 手绘草图转图像
Normal Map 法线贴图 3D 建模相关
Segmentation 语义分割 控制不同物体的区域

小注解:什么是预处理器?想象你要根据一张照片画一幅画。预处理器就像是先用铅笔在画布上轻轻勾勒轮廓,你再根据这个轮廓上色。不同的预处理器,勾勒出不同类型的轮廓。

4.3 实战:OpenPose 控制人物姿势

假设你想要生成一张"女孩在跳舞"的图片,但不想随机生成姿势,而是想要 特定 的舞姿。

步骤:

  1. 准备姿势图:找一张你想要的姿势的图片(或者自己摆姿势拍一张)

  2. 提取骨架:使用 OpenPose 预处理器提取人体骨架

    OpenPose Example

  3. 加载 ControlNet 模型control_v11p_sd15_openpose.pth

  4. 设置强度(strength):0.8-1.0 表示严格按照姿势,0.5 表示较宽松的参考

  5. 运行生成:AI 会按照骨架的姿势生成图像,但人物长相、服装、背景由你的提示词决定

进阶技巧:你可以用多个 ControlNet 同时控制!比如用 OpenPose 控制姿势 + Depth 控制空间关系 + Canny 保持轮廓。这就像给 AI 多个参考维度。

4.4 实战:Canny 保持图像结构

Canny 边缘检测会提取图像的轮廓线条:

Canny Example

应用场景:

  • 把一张风景照片转换成动漫风格,但保持原图的构图
  • 把素描转换成彩色插画
  • 保持产品照片的角度和结构,只改变材质和颜色

🧪 第五章:LoRA——风格的魔法调料

5.1 什么是 LoRA?

LoRA(Low-Rank Adaptation)是一种 模型微调技术

想象 Checkpoint 是一碗白米饭,LoRA 就是各种调料——酱油、咖喱、番茄炒蛋。基础还是那碗饭,但加上不同的调料,味道完全不同。

技术上,LoRA 是一个小文件(通常几十 MB),它记录了如何修改大模型的权重,以实现特定的风格或效果。

5.2 在 ComfyUI 中使用 LoRA

LoRA Workflow

节点链:

Load Checkpoint → Load LoRA → CLIP Text Encode → KSampler

注意:LoRA 节点位于 Checkpoint 和 CLIP 编码器之间。LoRA 会同时修改 MODEL 和 CLIP,所以输出有两个接口需要正确连接。

关键参数:strength_model(强度)

  • 0.0:完全不起作用
  • 0.5:中等影响
  • 1.0:完全应用 LoRA 的效果
  • >1.0:加强效果(可能过拟合)
  • <0:反向应用(产生相反效果)

实用技巧

  • 多个 LoRA 可以串联使用,比如一个控制画风 + 一个控制人物
  • 不同 LoRA 的强度可以分别调整,找到最佳组合
  • 如果人物崩坏,尝试降低 LoRA 强度或更换 LoRA

5.3 常见的 LoRA 类型

LoRA 类型 文件大小 用途
风格 LoRA 20-100MB 改变整体画风(如吉卜力风格、赛博朋克)
人物 LoRA 50-150MB 生成特定角色或真人
服装 LoRA 20-50MB 特定服装风格
姿势 LoRA 20-50MB 特定姿势或动作
概念 LoRA 30-80MB 特定主题或概念

🎯 第六章:高级工作流技巧

6.1 高清修复(Hi-Res Fix)

直接生成 1024×1024 或更大的图像,容易出现重复、崩坏等问题。

解决方案:先生成小图,再用图生图放大

HiRes Fix Workflow

流程:

  1. 用 KSampler 生成 512×512 的小图
  2. 用 Upscale Latent 放大潜空间图像(比如放大 2 倍到 1024×1024)
  3. 再用 KSampler 进行第二次采样(denoise 设为 0.5 左右),增加细节
  4. VAE Decode 解码输出

6.2 分区生成(Area Composition)

想要在一张图里精确控制不同区域的内容?比如左边是森林,右边是沙漠,中间是湖泊。

Area Composition

使用 Conditioning (Set Area) 节点,你可以:

  • 定义每个区域的位置和大小(x, y, width, height)
  • 为每个区域设置独立的提示词
  • 用 Conditioning (Combine) 合并多个区域

6.3 图像放大(Upscaling)

方法一:潜空间放大

在潜空间直接放大(Upscale Latent),然后二次采样。优点是速度快,缺点是可能产生新内容。

方法二:AI 放大模型

使用专门的超分辨率模型(如 ESRGAN、SwinIR):

Upscale Workflow

节点: Load Upscale Model → Upscale Image (using Model)

这种方法不会改变图像内容,只是"清晰化"原有内容。

方法三:Ultimate SD Upscale(终极放大)

这是 ComfyUI 社区开发的高级放大节点,结合了分块处理和无缝拼接技术,可以超大尺寸放大(4K、8K)而不显存溢出。


🔌 第七章:自定义节点与 ComfyUI-Manager

7.1 什么是自定义节点?

ComfyUI 的核心功能已经很强大,但社区开发者的创造力是无穷的。

自定义节点(Custom Nodes)就像是给你的 ComfyUI 安装"插件",扩展各种神奇功能:

  • 更高级的 ControlNet 控制
  • 面部修复(Face Detailers)
  • 图像后处理滤镜
  • 视频生成工作流
  • 3D 模型生成
  • ...

7.2 安装 ComfyUI-Manager

ComfyUI-Manager 是一个必装的自定义节点,它是"节点的节点管理器"。

安装方法:

cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git

重启 ComfyUI,你会在界面右上角看到一个新的 Manager 按钮。

7.3 使用 Manager

点击 Manager 按钮,你可以:

功能 说明
Install Custom Nodes 浏览并安装社区节点
Install Missing Custom Nodes 自动检测当前工作流缺少的节点并安装
Install Models 一键下载各种模型
Update All 更新 ComfyUI 和所有节点到最新版
ComfyUI-Manager Menu 更多高级功能

救命功能:当你下载别人的工作流但缺少某些节点时,点击 Install Missing Custom Nodes,Manager 会自动识别并帮你安装所有缺失的节点!

7.4 推荐的自定义节点

节点包 功能
ComfyUI-Impact-Pack 面部修复、细节增强、各种实用工具
ComfyUI-ControlNet-Aux 更多 ControlNet 预处理器
ComfyUI-Custom-Scripts 提示词补全、显示节点信息、工作流模板
ComfyUI-Manager 节点管理器(必装)
ComfyUI-Efficiency-Nodes 简化工作流,减少节点数量
WAS Node Suite 图像处理工具集

🎨 第八章:实战案例集锦

8.1 案例一:角色一致性创作

场景:你要创作一个系列插画,主角是同一个女孩,但场景和动作不同。

解决方案

  1. 训练或使用一个该角色的 LoRA
  2. 用 OpenPose ControlNet 控制不同姿势
  3. 用 IP-Adapter 保持面部特征一致性
  4. 改变提示词生成不同场景

8.2 案例二:产品渲染

场景:你是电商设计师,要把产品图生成各种场景的效果图。

解决方案

  1. 用 Canny ControlNet 保持产品轮廓
  2. 用 Depth ControlNet 保持空间关系
  3. 用提示词描述不同的使用场景
  4. 用 Inpainting 局部修改某些细节

8.3 案例三:建筑风格转换

场景:你是建筑师,想快速看不同风格的建筑效果图。

解决方案

  1. 用 MLSD ControlNet 提取建筑直线结构
  2. 用不同风格的 LoRA(现代、古典、科幻)
  3. 批量生成多种方案对比

8.4 案例四:动画制作

场景:制作简单的 AI 动画。

解决方案

  1. 使用 AnimateDiff 节点生成视频帧
  2. 用 OpenPose ControlNet 保持角色姿势连贯
  3. 用 IP-Adapter 保持角色外观一致
  4. 输出视频序列

📚 附录

A. 快捷键大全

快捷键 功能
Ctrl + Enter 运行工作流
Ctrl + Shift + Enter 插队运行(放到队列最前面)
Ctrl + Alt + Enter 取消当前生成
Ctrl + Z / Ctrl + Y 撤销/重做
Ctrl + S 保存工作流
Ctrl + O 加载工作流
Ctrl + C / Ctrl + V 复制/粘贴节点
Ctrl + Shift + V 粘贴并保持连接
Ctrl + A 选择所有节点
Ctrl + M 静音/取消静音节点
Ctrl + B 绕过节点
Delete / Backspace 删除选中节点
Space + 拖动 移动画布
Alt + + / Alt + - 放大/缩小画布
Double Click 打开节点搜索面板
P 固定/取消固定节点
Ctrl + G 将选中节点分组

B. 常见错误排查

错误信息 原因 解决方案
CUDA Out of Memory 显存不足 减小图像尺寸、降低 batch size、使用 --lowvram 参数
Model not found 模型路径错误 检查模型是否放在正确文件夹
Node not found 缺少自定义节点 使用 Manager 安装缺失节点
Connection type mismatch 接口类型不匹配 检查连线颜色是否一致
Invalid latent 潜空间尺寸错误 确保 latent 尺寸是 8 的倍数

C. 资源推荐

模型下载:

工作流分享:

学习资源:


尾声:创造属于你的工作流

学习 ComfyUI 的过程,就像是学习一门新的视觉语言。

刚开始,你可能会觉得节点连接很繁琐——为什么要用这么多步骤,而不是像其他软件那样点一个按钮?

但随着你逐渐深入,你会发现这种 透明化、模块化 的设计,给了你一个其他软件无法比拟的优势:完全的控制权

当你理解了数据如何在节点间流动,当你能够拆解任意复杂的工作流,当你可以根据自己的需求随意组合功能模块——你就真正掌握了 AI 绘画的本质。

记住费曼的那句话:

"What I cannot create, I do not understand."
"凡我不能创造的,我都没有真正理解。"

现在,你已经有了构建任何工作流的知识。去吧,创造属于你的视觉奇迹。


参考文献

  1. ComfyUI GitHub Repository - 官方源码与文档
  2. ComfyUI Examples - 官方工作流示例集合
  3. ComfyUI Documentation - 官方文档中心
  4. ComfyUI ControlNet Guide - ControlNet 官方示例
  5. ComfyUI-Manager - 节点管理器文档

本教程基于 ComfyUI 2026 年最新版本编写,持续更新中。

愿你的每个创意,都能在这个节点世界里自由流动。 🌊✨

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录