ComfyUI基础教学:小白也能学会的节点式AI绘图——告别繁琐,拥抱高效与自由
前言:AI绘画浪潮下的新选择
在当今科技飞速发展的时代,人工智能(AI)已经渗透到我们生活的方方面面,其中AI绘画无疑是近年来最引人注目的一项应用。从简单的文字生成图像,到复杂的人物、场景创作,AI正以前所未有的速度改变着艺术创作的格局。对于许多AI绘画爱好者而言,Stable Diffusion WebUI(通常指Automatic1111)是他们接触AI绘画的第一个工具,其直观的标签页式界面确实降低了入门门槛。然而,随着创作需求日益复杂,A1111的黑盒式操作、资源消耗、以及在某些复杂工作流中的局限性也逐渐显现。
正是在这样的背景下,ComfyUI 应运而生,并迅速成为AI绘画领域的新宠。它以其独特的节点式(Node-based)工作流、极致的灵活性、高效的资源利用率以及无限的扩展性,吸引了越来越多的创作者。或许你曾听说它很“专业”,觉得“小白”难以驾驭,但请相信我,只要你跟随这篇教程,理解其核心思想,ComfyUI将为你打开一扇通往更高阶AI艺术创作的大门。它并非高不可攀,而是为追求效率与自由的你量身打造。
第一章:ComfyUI的独特魅力——为什么选择它?
在深入学习ComfyUI之前,我们首先要理解它与传统WebUI的最大区别,以及它能为你带来什么。
1.1 告别黑盒,拥抱透明:节点式工作流的核心优势
传统的WebUI,如A1111,通常将整个AI绘图过程封装在一个个标签页或功能区内。你输入提示词、选择模型、调整参数,然后点击“生成”,图像就出来了。这个过程对新手友好,但缺点也很明显:你很难理解图像是如何一步步生成的,每个参数到底在哪个环节起作用,以及数据是如何在各个模块之间流动的。这就像一个黑盒子,你只知道输入和输出。
ComfyUI则彻底打破了这种“黑盒”模式。它将AI绘画的每一个功能模块(如加载模型、输入提示词、进行采样、解码图像、保存图像等)都抽象成一个独立的节点(Node)。而这些节点之间通过连接线(Connection)来传递数据。整个绘图过程被清晰地分解成一系列可见的、可控的步骤,你能够直观地看到数据从模型加载,到提示词编码,再到潜在空间采样,最终解码成图像的完整流程。
- 直观性: 整个工作流一目了然,你可以像搭建乐高积木一样组合节点。
- 可控性: 对每个步骤都有细致入微的控制,你可以轻易地在任何环节插入、修改或替换节点。
- 可理解性: 帮助你更好地理解Stable Diffusion的内部工作原理。
- 可复现性: 每一个工作流都是一个独立的“配方”,方便分享、学习和复现。
1.2 高性能与资源优化:让你的显卡不再“喘气”
ComfyUI在设计之初就考虑到了效率。与A1111相比,ComfyUI在GPU显存管理上更为精细,尤其是在进行图像生成、放大或使用复杂工作流时,其显存占用通常更低,生成速度也更快。这意味着:
- 低配显卡也能玩转: 即使你的显卡配置不是顶尖,ComfyUI也能让你体验到更流畅的AI绘画。
- 复杂任务更从容: 在进行ControlNet、IP-Adapter、批处理等复杂操作时,ComfyUI能更有效地利用资源。
- 多任务并行: 更低的资源占用也意味着你的电脑可以同时运行其他任务,而不会卡顿。
1.3 无限的扩展性与实验性:探索AI绘画的边界
ComfyUI的节点式架构天生具备高度的扩展性。开发者可以非常方便地创建和分享自定义节点,将最新的AI模型、功能或研究成果集成进来。这意味着:
- 功能更新快: 最新的Stable Diffusion模型、算法或功能,往往会第一时间在ComfyUI社区中出现。
- 实验性强: 鼓励用户自由组合节点,尝试各种新奇的创意,探索AI绘画的无限可能。
- 社区活跃: 丰富的第三方节点库(如ComfyUI Manager、Impact Pack、Efficiency Nodes等)极大地丰富了ComfyUI的功能。
总而言之,ComfyUI是为那些希望深入理解AI绘画机制、追求极致控制、高效工作以及乐于探索创新的用户而设计的。它是一个强大的工具,一旦掌握,你将发现AI绘画的世界比想象中更加广阔。
第二章:踏出第一步——ComfyUI的安装与启动
对于“小白”来说,安装可能是一个小小的挑战,但只要跟着步骤来,一切都会顺利。
2.1 前置条件检查
在安装ComfyUI之前,请确保你的电脑满足以下基本条件:
- 显卡: 推荐NVIDIA显卡(GTX 1660 Ti或RTX 20系列及以上)。虽然CPU也能运行,但生成速度会非常慢。
- 显卡驱动: 确保你的NVIDIA显卡驱动是最新版本。这对于AI程序的稳定运行至关重要。
- Python: ComfyUI通常依赖Python运行。但如果你下载的是整合包,可能已经包含了Python环境。
- Git: 一个版本控制工具,用于从GitHub下载ComfyUI。
2.2 安装ComfyUI(推荐Git克隆方式)
- 选择安装目录: 在你的硬盘上选择一个空间充足的文件夹,例如
D:\ComfyUI。 - 打开Git Bash或命令提示符(CMD): 在该文件夹内,按住
Shift键并点击鼠标右键,选择“在此处打开 Git Bash”或“在此处打开 PowerShell 窗口”。如果你没有安装Git,需要先安装Git。 - 克隆ComfyUI仓库: 在打开的终端中输入以下命令并回车:
bash
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
这会将ComfyUI的所有文件下载到你当前的ComfyUI文件夹中。 - 安装依赖: 进入
ComfyUI文件夹后,运行以下命令安装Python依赖:
bash
pip install -r requirements.txt
如果你的系统中有多个Python版本,可能需要使用python -m pip install -r requirements.txt或pip3 install -r requirements.txt。
2.3 下载必备模型
AI绘画的核心是各种模型文件。ComfyUI与A1111的模型是通用的。
- Checkpoint(检查点模型): 这是生成图像的基础大模型,例如SDXL 1.0、MajicMIX realistic等。
- 下载地址:Civitai (civitai.com)、Hugging Face (huggingface.co)
- 放置路径:
ComfyUI\models\checkpoints
- LoRA(低秩适应模型): 用于对特定风格、人物或物品进行微调的小模型。
- 放置路径:
ComfyUI\models\loras
- 放置路径:
- VAE(变分自编码器): 负责将潜在空间中的数据解码成可见图像,对图像细节和色彩表现有重要影响。很多Checkpoint自带VAE,但有时需要单独加载。
- 放置路径:
ComfyUI\models\vae
- 放置路径:
- Embedding/Textual Inversion: 用于增强或修正提示词效果的小文件。
- 放置路径:
ComfyUI\models\embeddings
- 放置路径:
- ControlNet模型: 用于精确控制图像构图、姿态等。
- 放置路径:
ComfyUI\models\controlnet - 重要提示: 请确保模型名称和文件类型(如
.safetensors)正确,并且放置在对应的文件夹中。
- 放置路径:
2.4 启动ComfyUI
- NVIDIA显卡用户: 双击运行
ComfyUI文件夹中的run_nvidia_gpu.bat。 - AMD显卡用户: 双击运行
run_amd_gpu.bat。 - CPU用户(不推荐): 双击运行
run_cpu.bat。
首次启动时,程序可能会下载一些PyTorch等依赖,请耐心等待。启动成功后,你的浏览器会自动打开一个网址,通常是 http://127.0.0.1:8188,这就是ComfyUI的操作界面。
2.5 界面初探
进入ComfyUI界面,你可能会感到有些茫然,因为它不像A1111那样有明确的标签页。你看到的是一个巨大的空白画布,上面散落着几个默认节点。
- 画布区: 最大的空白区域,你所有节点都会在这里搭建。
- 鼠标滚轮:缩放画布。
- 鼠标中键(按住):拖动画布。
- 节点: 方形或矩形的功能模块,每个节点有输入端口(左侧)和输出端口(右侧)。
- 连接线: 连接不同节点端口的线条,代表数据流向。
- “Queue Prompt”(队列提示)按钮: 位于右侧面板上方,点击后,ComfyUI会按照你搭建的工作流,从左到右、从上到下地执行生成任务。
- 右侧面板: 显示当前节点参数、提示词历史等信息。
- “Save”/“Load”按钮: 用于保存和加载你的工作流(
.json文件)。
第三章:核心概念解析——节点与连接的哲学
理解节点和连接是玩转ComfyUI的关键。
3.1 什么是节点(Node)?
节点是ComfyUI的基本功能单元。每一个节点都执行一个特定的任务,例如:
- 加载Checkpoint模型 (
Load Checkpoint) - 编码提示词 (
CLIP Text Encode (Prompt)) - 设置采样参数 (
KSampler) - 解码潜在空间数据为图像 (
VAE Decode) - 保存生成的图像 (
Save Image) - 加载LoRA模型 (
Load LoRA) - 加载ControlNet模型 (
Load ControlNet Model) - 图像放大 (
Image Upscale (with Model))
每个节点都有不同的输入端口(左侧)和输出端口(右侧)。
- 输入端口: 接收来自其他节点的数据,通常有默认值或下拉菜单供选择。
- 输出端口: 将节点处理后的结果数据传递给下一个节点。
例如,Load Checkpoint 节点会有一个名为 model 的输出端口,它输出的是加载好的大模型数据。
3.2 什么是连接(Connection)?
连接线是ComfyUI中数据流动的管道。它将一个节点的输出端口连接到另一个节点的输入端口,从而构建起整个图像生成流程。
- 数据类型匹配: 只有数据类型相同的端口才能互相连接。例如,一个输出
MODEL类型的端口只能连接到输入MODEL类型的端口。ComfyUI的连接线通常会根据数据类型显示不同的颜色(例如,模型数据可能是蓝色,潜在空间数据是绿色,图像数据是黄色,文本是橙色等),这有助于你判断是否能连接。 - 单向流动: 数据总是从左到右、从上到下地单向流动。
- 多对一 / 一对多: 一个输出端口可以连接到多个输入端口(数据分流),一个输入端口也可以接受来自多个输出端口的数据(数据合并,通常需要特定的合并节点)。
操作方法:
* 添加节点: 在画布任意空白处右键单击,然后选择“Add Node”,或者直接输入节点名称进行搜索。
* 连接节点: 鼠标左键点击一个节点的输出端口,然后拖动到另一个节点的输入端口上松开,即可建立连接。
* 断开连接: 点击连接线,按 Delete 键即可删除。
3.3 常用节点类型一览
了解一些常用节点的分类,可以帮助你更快地构建工作流:
- 模型加载节点(Model Loading Nodes):
Load Checkpoint:加载基础大模型。Load LoRA:加载LoRA微调模型。Load VAE:加载VAE模型。Load ControlNet Model:加载ControlNet模型。
- 文本编码节点(Text Encoding Nodes):
CLIP Text Encode (Prompt):将文字提示词转换为模型可理解的“条件”(Conditioning)数据。通常一个用于正面提示词,一个用于负面提示词。
- 潜在空间节点(Latent Nodes):
Empty Latent Image:创建一个指定大小的、空白的潜在空间图像(噪声),这是生成过程的起点。VAE Encode:将真实图像(PNG/JPG)编码为潜在空间数据(用于图生图)。VAE Decode:将潜在空间数据解码为真实图像。
- 采样器节点(Sampler Nodes):
KSampler:核心采样器,负责从潜在空间噪声中逐步“去噪”,最终生成潜在空间图像。
- 图像处理节点(Image Processing Nodes):
Save Image:保存生成的图像。Image Upscale (with Model):使用超分模型放大图像。Preview Image:预览图像(通常不保存)。
- 工具节点(Utility Nodes):
Primitive:用于输入数字、布尔值或字符串。Conditioning Combine:合并多个条件(如LoRA或ControlNet的条件)。Set Latent Noise Mask:设置潜在空间的噪声蒙版(用于局部重绘)。
第四章:小白入门——你的第一个ComfyUI工作流(手把手教学)
现在,让我们一起搭建一个最基础的ComfyUI工作流,生成你的第一张AI图片。
4.1 清空默认工作流
当你启动ComfyUI时,会有一个默认的工作流。为了避免混淆,我们先将其清空。
1. 点击右侧面板上方的“Clear”按钮。
2. 画布现在应该完全空白了。
4.2 搭建基础文生图工作流
我们将构建一个标准的文生图(Text-to-Image)工作流,其核心逻辑是:加载模型 -> 编码提示词 -> 创建潜在空间 -> 采样 -> 解码图像 -> 保存图像。
步骤一:加载Checkpoint模型
1. 在空白画布上右键单击。
2. 选择“Add Node” -> “loaders” -> “Load Checkpoint”。
3. 在新出现的 Load Checkpoint 节点中,点击 ckpt_name 字段旁边的下拉菜单,选择你下载好的基础模型,例如 sd_xl_base_1.0.safetensors。
* 输出端口: MODEL (蓝色), CLIP (橙色), VAE (紫色)。
步骤二:编码正面提示词
1. 右键单击 -> “Add Node” -> “conditioning” -> “CLIP Text Encode (Prompt)”。
2. 将 Load Checkpoint 节点的 CLIP 输出端口连接到 CLIP Text Encode (Prompt) 节点的 clip 输入端口。
3. 在 CLIP Text Encode (Prompt) 节点的 text 字段中输入你的正面提示词。例如:
a beautiful girl, long hair, detailed face, cinematic lighting, 8k, masterpiece
* 输出端口: CONDITIONING (绿色)。
步骤三:编码负面提示词
1. 重复步骤二,再添加一个 CLIP Text Encode (Prompt) 节点。
2. 同样将 Load Checkpoint 节点的 CLIP 输出端口连接到这个新节点的 clip 输入端口。
3. 在 text 字段中输入你的负面提示词。例如:
ugly, deformed, disfigured, poor quality, bad anatomy, blurry, low resolution
* 输出端口: CONDITIONING (绿色)。
步骤四:创建空白潜在空间图像
11. 右键单击 -> “Add Node” -> “latent” -> “Empty Latent Image”。
12. 你可以调整 width 和 height 来设置生成图像的分辨率(例如,SDXL通常是1024×1024),batch_size 决定一次生成多少张图(先设为1)。
* 输出端口: LATENT (绿色)。
步骤五:核心采样器 KSampler
1. 右键单击 -> “Add Node” -> “sampling” -> “KSampler”。
2. 连接输入:
* 将 Load Checkpoint 节点的 MODEL 输出端口连接到 KSampler 的 model 输入端口。
* 将正面提示词节点的 CONDITIONING 输出端口连接到 KSampler 的 positive 输入端口。
* 将负面提示词节点的 CONDITIONING 输出端口连接到 KSampler 的 negative 输入端口。
* 将 Empty Latent Image 节点的 LATENT 输出端口连接到 KSampler 的 latent_image 输入端口。
3. 参数设置:
* seed:随机种子,保持 -1 会每次随机生成。
* steps:采样步数,推荐 20-30 步。
* cfg:Classifier-Free Guidance,提示词相关性,推荐 6-8 之间。
* sampler_name:采样器类型,例如 dpmpp_2m_sde 或 euler_ancestral。
* scheduler:调度器,例如 karras 或 exponential。
* denoise:去噪强度,通常文生图保持 1.0。
* 输出端口: LATENT (绿色)。
步骤六:解码潜在空间为图像
1. 右键单击 -> “Add Node” -> “latent” -> “VAE Decode”。
2. 将 Load Checkpoint 节点的 VAE 输出端口连接到 VAE Decode 的 vae 输入端口。
3. 将 KSampler 节点的 LATENT 输出端口连接到 VAE Decode 的 samples 输入端口。
* 输出端口: IMAGE (黄色)。
步骤七:保存图像
1. 右键单击 -> “Add Node” -> “image” -> “Save Image”。
2. 将 VAE Decode 节点的 IMAGE 输出端口连接到 Save Image 的 images 输入端口。
* 你可以在 filename_prefix 字段设置保存文件的前缀,quality 设置图像质量。
* 注意: 通常也会添加一个 Preview Image 节点连接到 VAE Decode 后面,方便在不保存文件的情况下预览结果。
4.3 运行你的第一个工作流
- 仔细检查所有节点是否都已正确连接,没有断开的连接线,也没有数据类型不匹配的连接。
- 点击右侧面板上方的“Queue Prompt”按钮。
- ComfyUI将开始执行你的工作流,每个正在处理的节点都会有一个绿色的边框。
- 稍等片刻,一张由AI生成的图片将出现在
Save Image节点下方(如果你添加了Preview Image节点,也会显示)。同时,图像会保存在ComfyUI\output文件夹中。
恭喜你!你已经成功搭建并运行了第一个ComfyUI工作流。
第五章:进阶之路——探索ComfyUI的无限可能
掌握了基础工作流,你就可以开始探索ComfyUI更强大的功能了。
5.1 提示词的艺术与增强
- 多个CLIP Text Encode (Prompt): 对于SDXL模型,通常有两个CLIP编码器。你可以使用两个
CLIP Text Encode节点,分别连接到Load Checkpoint节点的CLIP输出(通常会分流成CLIP_G和CLIP_L或CLIP_A和CLIP_B两种,具体看模型和节点设计)。 - LoRA模型集成:
- 添加
Load LoRA节点(“loaders”)。 - 选择你要加载的LoRA模型。
- 将
Load Checkpoint的MODEL和CLIP输出,连接到Load LoRA的对应输入。 - 将
Load LoRA的MODEL和CLIP输出,连接到KSampler和CLIP Text Encode的对应输入。 - 调整
strength_model和strength_clip参数来控制LoRA的影响强度。
- 添加
- Conditioning Combine: 当你需要合并多个条件(例如,同时使用LoRA和ControlNet)时,可以使用
Conditioning Combine节点。
5.2 图像处理与融合
- 图生图(Image-to-Image):
- 添加
Load Image节点(“image”),加载你的参考图像。 - 添加
VAE Encode节点(“latent”)。将Load Image的IMAGE连接到VAE Encode的pixels,将Load Checkpoint的VAE连接到VAE Encode的vae。 - 将
VAE Encode的LATENT输出连接到KSampler的latent_image输入。 - 在
KSampler中,将denoise参数从1.0调整为0.5到0.8之间(表示保留原图多少细节)。
- 添加
- 图像放大(Upscaling):
- 在
VAE Decode之后,添加Upscale Model Loader节点(加载放大模型,如ESRGAN)。 - 添加
Image Upscale (with Model)节点。 - 将
VAE Decode的IMAGE连接到Image Upscale的image。 - 将
Upscale Model Loader的upscale_model连接到Image Upscale的upscale_model。
- 在
- ControlNet的强大: ControlNet允许你精确控制图像的构图、姿态、深度等。
- 添加
Load ControlNet Model节点。 - 添加预处理器节点(如
CannyEdge、OpenPose、DepthMap等,通常在_preprocessors类别下),用于从参考图像中提取控制信息。 - 添加
Apply ControlNet节点(“conditioning”)。 - 将
Load ControlNet Model的control_net连接到Apply ControlNet。 - 将预处理器节点的输出连接到
Apply ControlNet的image。 - 将
KSampler的positive和negativeconditioning(在它们进入KSampler之前)连接到Apply ControlNet的conditioning。 - 将
Apply ControlNet的CONDITIONING输出连接到KSampler的positive或negative。 - 调整
strength参数。
- 添加
5.3 批量处理与自动化
- Batch Size: 在
Empty Latent Image节点中,修改batch_size可以一次性生成多张图片。 - Workflows(工作流): ComfyUI允许你保存和加载整个工作流。
- 点击右侧面板的“Save”按钮,将当前工作流保存为
.json文件。 - 点击“Load”按钮,选择
.json文件来加载之前的工作流。 - 直接拖拽
.json文件到画布上也可以加载。 - 一个非常棒的功能: 你可以将一张ComfyUI生成的图片直接拖拽到画布上,它会自动加载生成这张图片时所用的工作流!这意味着你可以轻松学习和复用别人的工作流。
- 点击右侧面板的“Save”按钮,将当前工作流保存为
5.4 ComfyUI Manager与自定义节点
ComfyUI的生态系统极其活跃,有大量的第三方节点扩展了其功能。
- 安装ComfyUI Manager:
- 在ComfyUI根目录,打开命令行或Git Bash。
bash
git clone https://github.com/ltdrdata/ComfyUI-Manager.git custom_nodes/ComfyUI-Manager- 重启ComfyUI。
- 右侧面板会出现“Manager”按钮。
- 使用Manager:
- 点击“Manager”,你可以方便地安装、更新和管理第三方自定义节点。
- “Install Missing Custom Nodes”:当你加载一个使用了你未安装的节点的工作流时,这个功能会自动帮你检测并安装。
- “Install Custom Nodes”:浏览并安装各种有趣实用的节点。
- 推荐的自定义节点:
- Impact Pack: 提供了许多高级图像处理、蒙版操作和工作流简化节点。
- Efficiency Nodes: 进一步简化工作流,将多个常用节点打包成一个。
- RGthree’s ComfyUI Nodes: 丰富的实用节点,包括节点分组、条件逻辑等。
- WAS Node Suite: 更多专业的图像处理和AI模型集成。
安装这些自定义节点后,你的ComfyUI将变得更加强大和灵活。
第六章:学习策略与资源推荐
ComfyUI的学习曲线可能比A1111陡峭,但只要掌握了方法,你将快速进步。
- 多看、多学、多动手:
- 看: 观察别人分享的工作流,理解其设计逻辑。
- 学: 学习每个节点的功能,理解数据类型匹配的重要性。
- 动手: 亲自搭建工作流,从简单到复杂,不断尝试。
- 研究工作流: 这是最快的学习方法。
- 在Civitai、Hugging Face等网站下载ComfyUI生成的图片。
- 将这些图片直接拖拽到ComfyUI的画布上,它会重现生成这张图片的工作流。仔细研究每个节点和连接,理解它们的作用。
- 官方GitHub和社区:
- ComfyUI的GitHub仓库是最新信息、文档和问题的最佳来源。
- B站、YouTube等视频平台上有大量优秀的ComfyUI教学视频,可以跟着操作。
- 加入相关的AI绘画社区,与其他爱好者交流,互相学习。
- 从小目标开始:
- 先掌握文生图、图生图的基础流程。
- 再尝试加入LoRA、VAE。
- 然后挑战ControlNet、图像放大、局部重绘等。
- 逐步掌握复杂的工作流。
结语:ComfyUI——你的AI绘画新纪元
ComfyUI不仅仅是一个AI绘画工具,它更像一个强大的可视化编程环境,让你以更直观、更灵活的方式与AI模型互动。从一开始的茫然,到逐渐掌握节点与连接的哲学,再到能够自由构建复杂的艺术流水线,这个过程本身就是一种乐趣和成就。
对于“小白”而言,ComfyUI可能看起来有些复杂,但请不要被初始界面吓倒。它背后是清晰的逻辑和无限的可能。一旦你理解了节点式工作流的核心,你将发现它比传统WebUI更加高效、更具表现力,更能激发你的创造力。
未来,AI绘画无疑将继续深入发展,而ComfyUI这种开放、透明、高效的架构,无疑是适应这种发展趋势的理想选择。它赋予你更大的掌控权,让你不再只是AI的“使用者”,更是AI艺术流程的“设计师”和“探索者”。
勇敢地踏出这一步吧!AI绘画的浩瀚宇宙,ComfyUI将是你遨游其中的最佳座驾。祝你在AI绘画的旅程中,享受创作的乐趣,创造出属于你的精彩作品!
文章字数统计: 约3900字。