ComfyUI新手入门:节点式AI绘画完全教程
在当下蓬勃发展的AI绘画领域,Stable Diffusion无疑是中流砥柱。而ComfyUI,作为Stable Diffusion的一种独特图形用户界面(GUI),正凭借其无与伦比的灵活性和高效性,逐渐成为越来越多AI艺术家的首选工具。如果你厌倦了传统WebUI的固定流程,渴望对AI绘画的生成过程拥有更细致、更直观的掌控,那么ComfyUI将为你打开新世界的大门。
本教程旨在为ComfyUI的初学者提供一个全面的入门指南,从基础概念到实际操作,助你轻松迈入节点式AI绘画的精彩世界。
一、什么是ComfyUI?为何选择它?
ComfyUI是一个基于节点的Stable Diffusion图形用户界面。与AUTOMATIC1111等传统WebUI的线性操作界面不同,ComfyUI将AI绘画的每一个步骤都抽象为独立的“节点”,并通过线条连接这些节点,形成一个可视化的“工作流”(Workflow)。
为什么选择ComfyUI?
- 极致的灵活性与控制力: 节点式设计意味着你可以像搭建积木一样,自由组合和调整每一个生成步骤。这让你能够精确控制模型的输入、输出、采样器、编码器等所有参数,实现高度定制化的效果。
- 高效与低显存占用: ComfyUI以其高度优化的设计著称,在相同配置下,通常能比其他WebUI更快地生成图像,并显著降低显存(VRAM)的占用,这对于显存有限的用户来说尤为重要。
- 工作流的可复用性与分享: 你可以轻松保存和加载整个工作流,方便复用和分享给他人。许多社区成员会分享他们的创意工作流,让你能够站在巨人的肩膀上,快速学习和实验。
- 清晰的逻辑与可追溯性: 节点连接的视觉化特性,使得整个图像生成过程的逻辑一目了然。每个节点的输入和输出都清晰可见,便于调试和理解。
- 强大的可扩展性: ComfyUI拥有活跃的社区,大量的自定义节点(Custom Nodes)不断涌现,可以实现各种高级功能,如ControlNet、Inpainting、Upscaling、蒙版操作等。
虽然ComfyUI的学习曲线可能比其他WebUI略陡峭,但一旦掌握,它将为你带来前所未有的创作自由和效率提升。
二、ComfyUI的安装与初次启动
1. 系统要求
- 操作系统: Windows, Linux, macOS
- 显卡: 推荐NVIDIA RTX系列显卡,显存8GB及以上为佳(虽然ComfyUI对显存要求较低,但更大的显存能处理更复杂的模型和更大的图片)。AMD显卡和Apple Silicon用户也都有相应的安装方法。
- Python环境: 通常需要Python 3.10或更高版本。
2. 安装方法(以Windows为例)
最简单的方式是下载整合包(Portable Version)或通过GitHub仓库安装。
方法一:下载整合包 (推荐新手)
许多社区或模型下载网站会提供预配置好的ComfyUI整合包,通常包含Python环境和必要的依赖。
1. 前往相关网站(如Civitai、秋叶整合包等)下载最新的ComfyUI整合包。
2. 解压到一个你希望安装的路径(确保路径中不包含中文或特殊字符)。
3. 双击运行 run_nvidia_gpu.bat (NVIDIA显卡) 或 run_cpu.bat (CPU运行,速度较慢) 文件即可启动。
方法二:通过GitHub仓库安装 (适合有一定经验的用户)
- 安装Git: 如果没有安装Git,请先安装。
- 安装Python: 确保安装了Python 3.10或更高版本,并在安装时勾选“Add Python to PATH”。
- 克隆仓库: 打开命令行(CMD或PowerShell),进入你希望安装ComfyUI的目录,运行:
bash
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI - 安装依赖: 运行以下命令安装必要的Python库:
bash
pip install -r requirements.txt - 启动: 运行
python main.py --cuda(NVIDIA显卡) 或python main.py(CPU) 即可启动。
无论哪种方式,成功启动后,你的浏览器会自动打开ComfyUI的Web界面,通常是 http://127.0.0.1:8188。
三、ComfyUI界面概览
ComfyUI的界面简洁而强大,主要由以下几个区域组成:
- 节点工作区 (Canvas): 这是你构建工作流的主要区域,所有节点都在这里拖拽、连接。
- 右侧面板 (Properties/Queue):
- Queue Prompt (排队生成): 点击此按钮,ComfyUI将按照工作流进行图像生成。
- Extra Options (额外选项): 包含加载/保存工作流、清除工作流等功能。
- Prompt History (提示历史): 记录你每次生成所使用的参数和工作流。
- 左侧面板 (Menu/Groups):
- Load Default (加载默认工作流): 恢复到ComfyUI的默认空白工作流。
- Save (保存工作流): 将当前工作流保存为JSON文件。
- Load (加载工作流): 从JSON文件加载工作流。
基本操作:
* 拖拽: 用鼠标中键或右键拖拽,可以移动画布。
* 缩放: 滚动鼠标滚轮可以缩放画布。
* 添加节点: 在空白处双击鼠标,或右键点击选择“Add Node”,会出现节点搜索框。输入节点名称即可添加。
* 连接节点: 拖拽节点的输出端口(右侧小圆点)到另一个节点的输入端口(左侧小圆点)即可连接。
四、理解节点式AI绘画
1. 什么是节点?
在ComfyUI中,每一个节点都代表了AI绘画流程中的一个特定功能或数据。例如:
* Load Checkpoint: 加载Stable Diffusion模型文件。
* CLIP Text Encode: 将文本提示词(Prompt)编码成模型可以理解的向量。
* KSampler: 执行扩散模型的核心采样过程,从噪声中生成图像。
* VAE Decode: 将模型生成的潜在空间图像解码为我们能看到的像素图像。
* Save Image: 将最终图像保存到本地。
节点有输入端口(左侧)和输出端口(右侧),数据流从左向右,一步步处理,最终生成图像。
2. 常见节点类型与功能
- Loader (加载器): 用于加载模型(Checkpoint)、LoRA、VAE、ControlNet等文件。
- CLIP (文本编码): 将正向和反向提示词转换为模型可用的表示。
- Sampler (采样器): 决定图像生成的核心算法,如Euler A、DPM++ 2M Karras等。
- Model (模型): 通常指Checkpoint加载后,模型本身的一个组件。
- VAE (变分自编码器): 用于将潜在空间(Latent Space)中的数据转换为像素空间(Pixel Space)的图像,反之亦然。
- Latent (潜在空间): 指的是图像在模型内部表示的一种压缩形式。许多操作(如采样)都是在这个空间进行的。
- Image (图像): 像素形式的图像数据。
- Conditioning (条件): 文本提示词经过CLIP编码后的信息,用于引导图像生成。
- Primitive (基本数据): 如整数、浮点数、布尔值等,常用于控制其他节点的参数。
五、构建你的第一个AI绘画工作流:文生图 (Text-to-Image)
ComfyUI的默认工作流就是一个文生图的例子,但我们可以从头开始构建,以便更好地理解。
目标: 输入文本提示词,生成一张图片。
步骤:
- 清空画布: 如果画布上有节点,右键点击空白处,选择
Clear或Load Default。 - 添加
Load Checkpoint节点: 双击画布或右键Add Node->loaders->Load Checkpoint。- 在节点中选择你下载好的Stable Diffusion模型文件(例如:
sd_xl_base_1.0.safetensors)。 - 这个节点有三个输出:
MODEL,CLIP,VAE。
- 在节点中选择你下载好的Stable Diffusion模型文件(例如:
- 添加
CLIP Text Encode (Prompt)节点 (正向提示词):Add Node->conditioning->CLIP Text Encode (Prompt)。- 将
Load Checkpoint的CLIP输出连接到此节点的clip输入。 - 在
CLIP Text Encode (Prompt)节点的文本框中输入你的正向提示词,例如:masterpiece, best quality, a beautiful girl, long hair, blue eyes, smiling, in a garden, sunlight。 - 此节点输出
CONDITIONING。
- 添加另一个
CLIP Text Encode (Prompt)节点 (反向提示词):- 同样添加一个
CLIP Text Encode (Prompt)节点。 - 将
Load Checkpoint的CLIP输出连接到此节点的clip输入。 - 在文本框中输入你的反向提示词,例如:
bad anatomy, ugly, deformed, extra limbs, watermark, text, signature。 - 此节点输出另一个
CONDITIONING。
- 同样添加一个
- 添加
KSampler节点:Add Node->sampling->KSampler。KSampler是图像生成的核心。连接以下输入:Load Checkpoint的MODEL连接到KSampler的model。- 正向提示词节点的
CONDITIONING连接到KSampler的positive。 - 反向提示词节点的
CONDITIONING连接到KSampler的negative。
- 在
KSampler节点中设置参数:seed: 随机种子,可以设置为固定值或-1(随机)。steps: 采样步数,通常20-30步。cfg: Classifier Free Guidance,控制提示词影响力,通常6-8。sampler_name: 采样器,如dpmpp_2m_sde或euler_a。scheduler: 调度器,如karras或exponential。denoise: 去噪强度,文生图通常为1.0。
KSampler输出LATENT。
- 添加
Empty Latent Image节点:Add Node->latent->Empty Latent Image。- 此节点定义了生成图像的尺寸和批次大小。
- 设置
width和height(例如:1024×1024 或 512×768)。 - 将
Empty Latent Image的LATENT输出连接到KSampler的latent_image输入。
- 添加
VAE Decode节点:Add Node->latent->VAE Decode。- 将
Load Checkpoint的VAE输出连接到VAE Decode的vae输入。 - 将
KSampler的LATENT输出连接到VAE Decode的samples输入。 VAE Decode输出IMAGE。
- 将
- 添加
Save Image节点:Add Node->image->Save Image。- 将
VAE Decode的IMAGE输出连接到Save Image的images输入。
- 将
现在,你的第一个文生图工作流就搭建完成了!点击右侧面板的 Queue Prompt 按钮,ComfyUI就会开始生成图像,并在 Save Image 节点下显示结果。
六、扩展你的创作能力:更多节点与工作流
掌握了基础的文生图,你就可以开始探索ComfyUI的更多强大功能:
-
图生图 (Image-to-Image / Img2Img):
- 核心思路: 加载一张初始图像,结合文本提示词和去噪强度,引导AI基于原图生成新图像。
- 关键节点:
Load Image(加载原始图像),VAE Encode(将图像编码为潜在空间数据),KSampler(设置较低的denoise值,如0.5-0.7)。 - 工作流:
Load Image->VAE Encode->KSampler(使用编码后的潜在图像作为输入) ->VAE Decode->Save Image。
-
SDXL模型的使用:
- SDXL模型通常需要两个CLIP模型来编码提示词(
CLIP Text Encode (Prompt)节点),一个用于基础,一个用于Refiner。 - 确保你的
Load Checkpoint节点加载的是SDXL模型。 - 连接两个
CLIP Text Encode节点到KSampler的positive和negative输入。
- SDXL模型通常需要两个CLIP模型来编码提示词(
-
ControlNet:
- 功能: 精准控制图像的构图、姿态、边缘、深度等,让AI生成更符合你预期的图片。
- 关键节点:
Load ControlNet Model(加载ControlNet模型),ControlNet Apply(将ControlNet应用到模型),Load Image(加载ControlNet引导图,如线稿、骨骼图)。 - 工作流: 将
Load ControlNet Model的输出连接到ControlNet Apply,将Load Image的输出连接到ControlNet Apply的image输入。再将ControlNet Apply的输出连接到KSampler的model输入。
-
LoRA/Embeddings (Textual Inversion):
- 功能: 引入特定风格、人物或概念。
- 关键节点:
LoraLoader(加载LoRA文件)。 - 工作流:
LoraLoader节点通常放置在Load Checkpoint之后,它的MODEL和CLIP输出连接到后续的KSampler和CLIP Text Encode节点。
-
Inpainting/Outpainting (修复/拓展):
- 功能: 局部修改图像或扩展图像边界。
- 关键节点:
Load Image(加载原图和蒙版图),VAE Encode (for inpaint)(特殊的编码节点),Set Latent Noise Mask(应用蒙版)。
-
Upscaling (图像放大):
- 功能: 提升图像分辨率和细节。
- 关键节点:
Image Upscale (by)或Image Upscale (with Model)(使用ESRGAN等超分模型)。 - 工作流:
VAE Decode->Image Upscale->Save Image。
七、ComfyUI高级功能与使用技巧
-
ComfyUI Manager:
- 这是ComfyUI生态中一个非常重要的自定义节点,几乎是必装。
- 安装: 在ComfyUI根目录的
custom_nodes文件夹中,克隆或下载ComfyUI-Manager的GitHub仓库。重启ComfyUI后,右侧面板会出现Manager按钮。 - 功能: 一键安装/更新自定义节点、模型、查找缺失节点、更新ComfyUI等,极大地简化了管理。
-
工作流的保存与加载:
- 保存: 点击右侧面板的
Save,将当前工作流保存为.json文件。 - 加载: 点击右侧面板的
Load,选择.json文件。 - 拖拽加载: 更便捷的方式是,将图片生成后的
.png文件(通常包含工作流元数据)直接拖拽到ComfyUI画布中,它会自动还原生成该图片时的工作流。
- 保存: 点击右侧面板的
-
节点分组 (Group):
- 右键点击画布,选择
Add Group,可以创建彩色区域,将相关节点归类,保持工作流整洁。 - 点击分组标题,可以折叠或展开分组内容。
- 右键点击画布,选择
-
自定义节点 (Custom Nodes):
- ComfyUI强大的扩展性主要来自于自定义节点。通过ComfyUI Manager,你可以浏览和安装各种强大的自定义节点,实现各种复杂功能。
-
优化建议:
- 批量生成: 在
Empty Latent Image节点中调整batch_size可以一次性生成多张图片。 - 启用TAESD (如果可用): 某些模型(如SDXL Turbo)支持TAESD,可以显著加速VAE解码过程,大幅提升生成速度。
- 善用缓存: ComfyUI会缓存一些计算结果,如果你只是修改了采样参数,前面的节点可能不会重新计算。
- 理解错误信息: 当出现红色节点或错误提示时,仔细阅读信息,通常能找到问题所在(例如模型未加载、节点连接错误)。
- 批量生成: 在
-
社区资源:
- Civitai: 不仅有海量模型,很多图片在详情页会附带ComfyUI工作流(通常是PNG Info中的JSON数据)。
- GitHub/Reddit: ComfyUI的官方仓库和相关社区是获取最新信息、自定义节点和寻求帮助的好地方。
八、结语
ComfyUI虽然初看起来有些复杂,但其背后的节点式逻辑一旦理解,你会发现它提供的自由度是无与伦比的。它不仅是Stable Diffusion的高效运行平台,更是一个让你深入理解AI绘画底层机制的强大工具。
从文生图开始,一步步探索图生图、ControlNet、LoRA,以及各种自定义节点,你会逐渐构建出属于自己的复杂工作流,实现前所未有的创作可能。耐心、实践和探索是掌握ComfyUI的关键。现在,是时候打开你的ComfyUI,开始你的节点式AI绘画之旅了!