AIGC-ComfyUI

学习自油管博主 pixaroma。

资源

正文

第 3 章 – 安装 ComfyUI(便携版)

视频中推荐从

下载安装。而我选择从官网下载 ComfyUI Desktop:Download Comfy Desktop — Run AI on Your Hardware

第 4 章 – 首次启动与界面概览

打开 ComfyUI,得到这样的界面。

webp

第 5 章 – 运行现成的工作流

ComfyUI 中的 workflow、settings 等数据都是用 json 形式存储的。

Pixaroma Workflows - Free ComfyUI Workflows 里下载 EP01 Workflows.zip

让 ComyUI 打开 0 Help and Resources.json

webp

打开 1 Juggernaut Reborn txt2img.json,提示找不到 Checkpoint,看简介下载对应的模型 juggernaut_reborn.safetensors(2 GB 左右)。

提示

Checkpoint 加载器(简易)

加载扩散模型检查点文件,并将其分解为三个核心组件:用于去噪潜空间的主模型、CLIP 文本编码器以及 VAE 图像编码器/解码器。此节点会自动检测 Comfy-Desktop/ComfyUI-Installs/ComfyUI/models/checkpoints 文件夹以及 extra_model_paths.yaml 文件中配置的所有其他路径中的模型文件。

webp

将模型放置在 Comfy-Desktop/ComfyUI-Installs/ComfyUI/models/checkpoints/sd15 下:

webp

按下 R 刷新,然后开跑,即可得到输出结果:

webp

图片被默认地保存到了 Comfy-Desktop/ComfyUI-Shared/output/ComfyUI_XXXXX_.png.。

第 6 章 – 理解节点与工作流原理

有多种方法可以在 ComfyUI 中添加节点,双击空白处/右键添加节点/左侧节点库。

Graph 的工作流程对我来说已经比较熟悉。创建 Load ImageImage CropSave Image 节点并用线连接,上传图片,然后开跑:

webp

可以调整节点的具体属性(折叠/更改标题/修改具体参数等):

webp

再试一试 Invert Image 节点:

webp

可以有多个 Save Image 节点:

webp

一些与其他软件差不多的快捷键:Ctrl + B 绕过节点,Ctrl + G 成组。

webp

除了操作图像,还可以操作数字,字符串等:

webp

剩下自己慢慢玩吧……

第 7 章 – 从零开始构建工作流

本章讲述了 1 Juggernaut Reborn txt2img.json 工作流中各个节点的作用,其实把这个 json 扔给 LLM 就行:

节点 ID节点名称作用输入输出本工作流中的配置
1CheckpointLoaderSimple加载 Stable Diffusion 模型(Checkpoint),同时输出模型、CLIP、VAE 三部分MODEL、CLIP、VAE加载 juggernaut_reborn.safetensors
2CLIPTextEncode(Positive)将**正向提示词(Prompt)**编码成 AI 可以理解的向量(Conditioning)CLIPCONDITIONING"photo of a rusty robot..."
3CLIPTextEncode(Negative)将**反向提示词(Negative Prompt)**编码成向量,用于告诉模型不要生成什么CLIPCONDITIONING"watermark, text"
7EmptyLatentImage创建一张空白 Latent(潜空间),相当于告诉模型最终图片尺寸LATENT512×512,Batch=1
4KSampler整个 AI 绘图最核心的节点,根据模型、Prompt 和随机噪声一步步去噪生成 Latent 图像MODEL、Positive、Negative、LatentLATENT35 Steps、CFG=7、DPM++ 2M、Karras
5VAEDecode将 Latent(模型内部表示)解码成真正的 RGB 图片LATENT、VAEIMAGE使用模型自带 VAE
6SaveImage保存图片到输出目录IMAGE文件名前缀 ComfyUI
9MarkdownNote备注说明节点,仅用于给作者写说明,不参与计算下载模型、教程链接等说明

如我想画一张 closeup portrait photo of a pet,但是不希望 cat

webp

对于当前模型,如果 EmptyLatentImage 的尺寸设得太大(如 1600 x 1600),会导致出图时间慢且出现提示词之外的东西。这是因为当前模型仅是在 512 x 512 的图片数据下训练的,它将难以理解更大的图像空间。

webp

第 8 章 – 保存、导出和导入工作流

提示

日常编辑 → 用 Save / Save As

备份、分享、发给别人 → 用 Export

程序调用(Python、API) → 用 Export API

保存的工作流存储在 Comfy-Desktop/ComfyUI-Installs/ComfyUI/ComfyUI/user/default/workflows,可在左侧菜单中快速找到:

webp

如果用记事本打开 ComfyUI 生成的图片,会看到图片中还藏有工作流的信息,所以如果直接让 ComfyUI 打开这张图,将会还原这张图生成时的工作流:

webp

第 9 章 – ComfyUI 文件夹结构与组织

文件夹用途
comfy/ComfyUI 核心代码
models/所有 AI 模型
custom_nodes/第三方节点插件
input/输入图片
output/输出图片
temp/临时缓存
user/用户配置、工作流等
web/前端网页资源
extra_model_paths.yaml外部模型映射

第 10 章 – 更新 ComfyUI 和管理自定义节点

原课程用的 ComfyUI-Easy-Install,通过使用相应的 .bat 进行更新。Desk top 就比较傻瓜式了。

webp

从管理扩展功能处下载更多节点,这里下载并安装 rgbthree-comfy(重启后生效):

webp

从模板出下载其它工作流(通常需要额外下载对应的模型或节点):

webp

第 11 章 – 扩散模型、KSampler、图生图基础

提示

扩散模型的核心思想是:先学会如何把一张完全被噪声污染的图片一步步“去噪”,然后反过来利用这个能力从随机噪声生成全新的图片。

当采样次数过少时,生成的图像像是噪声。steps 越多,计算开销越大,生成效果往往越好直至趋于稳定。

webp

使用递增的 Primitive 作为 stps。执行 运行(实时),工作流将一直运行直到人工干预。

webp

可在设置中调整以查看模型绘制的过程。

webp webp

扩散模型的原理展示:

webp webp

模型不会存储照片,而是物品的各个特征。

webp

提示

Pixel Space:人类看得懂的真实图片(PNG、JPG 等)。

Latent Space:AI 看得懂的压缩表示,扩散模型在这里进行生成和去噪。

VAE Decode:把 AI 内部的潜变量「翻译」回人类可以查看和保存的图片;对应的 VAE Encode 则完成相反的转换。

webp

文本提示词用于指导降噪过程,cfg 用于控制文本提示词对图像的影响力度(越低模型将约忽略提示,过高可能导致图像不自然)。

webp

随机数种子决定了初始噪声图的样子,从而导致最终生成图样式的差异。

webp

重要的文本提示词应尽可能放在前面。可以通过 () 增强文本提示词。

webp

KSampler 中steps 与生成图像的关系示意图如下。

webp

现在打开 2 Juggernaut Reborn img2img.json,如果将初始的噪声图换成其它现有的图片,并连上 VAE Encoder 即可实现简易的图生图,降噪程度(0 到 1 之间)决定了图像将会被修改的幅度:

webp

使用 rgbthree-comfyImage Comparer 节点可直观地展示两张图的差异:

webp

扩散模型中,Sampler 决定"怎么走",Scheduler 决定"什么时候走到哪里"。都会影响图像的生成的速度和结果。不是所有 Sampler 都能与所有 Scheduler 任意组合。一些调度器是为特定采样算法设计的,而某些新模型(例如 FLUX 或部分 SDXL 工作流)也会推荐特定的组合。

提示

假设:从 A 地开车去 B 地。Sampler 决定怎么开车(开高速、走国道、绕拥堵、急刹车),Scheduler 决定什么时候减速,什么时候加速。

webp

第 12 章 – 子图

将众多节点合并起来,在视觉上看着不会那么糟。

webp

在子图中设置哪些参数可以暴露:

webp

空白处右键可将当前选中的节点保存成模板。

第 13 章 – 在工作流中使用 LoRAs

提示

LoRA 能在不改动大模型的前提下,用一个很小的“外挂参数包”为扩散模型增加特定风格或概念的能力。

webp

加载 3 Juggernaut Reborn txt2img + Lora.json,按照提示下载 CakeStyle.safetensors 放置在 Comfy-Desktop/ComfyUI-Installs/ComfyUI/ComfyUI/models/loras/sd15。它能让模型更懂提示词 cakestyle。

通过在 Load CheckpointKSampler 之间加入节点 LoraLoaderModelOnly。开跑,得到 cakestyle 的 robot。通过调整参数可调整 LoRA 的力量。

webp

使用 rgbthree-comfyPower Lora Loader 节点可以得到增强的 LoRA 加载能力。

webp

按下 [i] 按钮可查看该 LoRA 的详细信息。如果这个 LoRA 被 Civitai 网站收录,则可以 fetch 到关键的提示词信息。

webp

第 14 章 – ControlNet 基础

提示

ControlNet 是扩散模型中的一种条件控制技术(Conditional Control),它的作用是:在不改变模型画风和绘画能力的前提下,精确控制图片的结构、姿势、边缘、深度、构图等信息。

如果说:

  • Checkpoint 决定"画家是谁";
  • LoRA 决定"画家学会了什么新技能";
  • ControlNet 决定"画家必须按照哪张草图来画"。
webp webp

用文字描述想法可能不是很精确,ControlNet 引入了图像作提示。

webp

提示

输入ControlNet 提供的信息
Canny边缘
Depth深度
OpenPose人体姿势
Lineart线稿
Scribble草图
Seg分割图
webp

加载 4 Juggernaut Reborn txt2img + ControlNet.json,按照提示下载

  • control_v11f1p_sd15_depth_fp16.safetensors
  • control_v11p_sd15_canny_fp16.safetensors
  • control_v11p_sd15_openpose_fp16.safetensors

放置在 Comfy-Desktop/ComfyUI-Installs/ComfyUI/ComfyUI/models/loras/sd15 中。

还要再装扩展节点 comfyui_controlnet_aux

工作流中看到在 CLIP 后加上了 Apply ControlNet 节点。随便搜一张兔子的线稿图然后开跑:

webp

提示

在早期的 ComfyUI 中,如果你想使用不同的 ControlNet,需要分别使用不同的节点(Canny Edge、OpenPose Estimator、Depth Estimator 等)。后来,ComfyUI 的 comfyui_controlnet_aux 插件提供了 AIO Aux Preprocessor,把这些节点全部整合到了一起。

ControlNet 模型控制类型推荐预处理器(AIO Aux Preprocessor 中)输入输出
control_v11f1p_sd15_depth_fp16.safetensors深度(Depth)Depth (MiDaS)(首选)、Depth (ZoE)、Depth (LeReS)普通图片深度图(灰度)
control_v11p_sd15_canny_fp16.safetensors边缘(Canny)Canny普通图片Canny 边缘图
control_v11p_sd15_openpose_fp16.safetensors人体姿态(Pose)OpenPose、OpenPose Full、DWPose(推荐)人物图片骨架图(关键点)

更换 ControlNet 模型为 control_v11f1p_sd15_depth_fp16.safetensors,改为使用 DepthAnythingPreprocessor(这会请求下载额外的模型,遇到网络问题了,西八),先 pending。

Apply ControlNet 节点参数:

参数含义取值范围数值越大意味着常见推荐值
StrengthControlNet 对生成结果的影响强度一般 0~2(可更高)对控制图的遵循越严格,Prompt 的影响相对减弱0.6~1.0(OpenPose 常用 0.8~1.2
Start PercentControlNet 从采样过程的哪个百分比开始生效0.0~1.0越晚开始介入,前期越让模型自由生成通常 0.0
End PercentControlNet 在采样过程的哪个百分比停止生效0.0~1.0越晚停止,对整个生成过程影响越久0.7~1.0(OpenPose 常用 1.0

使用 ControlNet 非预期的常见原因:

webp

第 15 章 – 检查点、AIO 模型与 Z-Image 工作流

扩散模型也有不同的类别,它们并不改变模型已有的知识,而是知识的调度不同:

提示

名称属于什么含义是否影响画质是否节省显存
AIO节点/模型封装All-In-One,将多个功能整合到一个节点或模型
FP32权重精度32 位浮点最高❌(最大)
FP16权重精度16 位浮点,目前最常见几乎无损
BF16权重精度Brain Float16,新 GPU 常用几乎无损
FP8权重精度8 位浮点略有损失✅✅
GGUF模型格式llama.cpp 使用的统一模型格式,可包含量化视量化等级而定✅✅✅
INT8 / INT4量化方式整数精度量化有一定损失✅✅✅

打开 5a Z-Image Turbo Fp8 AIO txt2img.json,加载比先前更大的模型 z-image-turbo-fp8-aio.safetensorsz-image-turbo-fp8-aio.safetensors · SeeSee21/Z-Image-Turbo-AIO at main,9.6 GB)和 z_image_turbo_bf16.safetensorssplit_files/diffusion_models/z_image_turbo_bf16.safetensors · Comfy-Org/z_image_turbo at main,11.5 GB)至 Comfy-Desktop/ComfyUI-Installs/ComfyUI/models/checkpoints/z-image

提示

功能前一个(SD1.5)当前(Z-Image Turbo)原因
模型Juggernaut Reborn(SD1.5)Z-Image Turbo AIO底层模型完全不同
Positive Prompt一个 CLIPTextEncode一个 CLIPTextEncode相同
Negative Prompt单独一个 CLIPTextEncode没有单独 Negative PromptTurbo 模型不需要传统 Negative Prompt
LatentEmptyLatentImageEmptySD3LatentImageSD3/AuraFlow 专用 Latent
SamplingKSamplerKSampler相同
DecodeVAEDecodeVAEDecode相同
SaveSaveImageSaveImage相同
新增节点ModelSamplingAuraFlowAuraFlow 专用采样配置
新增节点ConditioningZeroOut构造空 Negative Conditioning

可以借助 LLM 获得更好的 CLIP 提示词。

z-image-turbo-fp8-aio.safetensors 这个模型生成的图像不受 512 x 512 大小的限制,细节也更多。

webp

第 16 章 – 使用扩散模型(FP8 或 FP16)

之前的模型是 AIO 模型,它将 UNet(扩散模型),CLIP 和 VAE 都集成在了一个文件中,方便开箱即用但是不灵活。

提示

医学分割 UNet扩散模型 UNet
输入图片带噪声的 Latent(或 Pixel)+ 时间步 + 文本条件
输出每个像素属于哪个类别每个位置的噪声预测值
损失函数Segmentation LossNoise Prediction Loss
用途图像分割图像生成

打开 5b Z-Image Turbo Fp8 txt2img.json,继续下载模型到相应位置……

webp

提示

文件名大小下载地址拆解含义
z-image-turbo_fp8_scaled_e5m2_KJ.safetensors6.16 GBKijai/Z-Image_comfy_fp8_scaled at mainz-image + turbo + fp8 + scaled + e5m2 + KJZ-Image Turbo 扩散模型,FP8 精度,经过缩放(scaled),采用 E5M2 FP8 格式,由 Kijai 转换
qwen_3_4b_fp8_mixed.safetensors5.63 GBComfy-Org/z_image_turbo at mainqwen + 3 + 4b + fp8 + mixedQwen3 4B 文本编码器,FP8 混合精度版本
ae.safetensors335 MBComfy-Org/z_image_turbo at mainaeAutoEncoder(VAE)模型
webp

可以根据当前电脑的配置找到最适合自己电脑的模型。

第 17 章 – 使用 GGUF 模型

提示

可以把 GGUF 理解成:一种把 AI 模型压缩并打包后的文件格式,目的是减少显存占用、提高本地运行效率。

打开 5c Z-Image Turbo GGUF txt2img.json,继续下载模型……

提示

文件名大小下载地址拆解含义
z-image-turbo-q4_k_s.gguf4.34 GBhttps://huggingface.co/gguf-org/z-image-gguf/tree/mainz-image + turbo + q4_k_s + ggufZ-Image Turbo 扩散模型,采用 GGUF 格式,Q4_K_S 四位 K-Quant 量化版本。
qwen-4b-zimage-heretic-q8.gguf4.28 GBhttps://huggingface.co/Lockout/qwen3-4b-heretic-zimage/tree/mainqwen + 4b + zimage + heretic + q8 + gguf基于 Qwen3 4B 的 Z-Image 文本编码器,针对 Z-Image 工作流进行了 Heretic 社区适配,采用 GGUF 格式和 Q8(8-bit) 量化。
ae.safetensors335 MBhttps://huggingface.co/Comfy-Org/z_image_turbo/tree/main/split_files/vaeaeAutoEncoder(VAE)模型,负责图像空间(Pixel Space)与潜空间(Latent Space)之间的编码与解码,Z-Image 与 FLUX.1 共用该 AE。(上一节已安装
webp

第 18 章 – 批量生成、风格与多重提示词

要一次性生成多张图片,可以改批量大小:

webp

下载插件 comfyui-itools,解锁 iTools Line Loader 节点,替换掉 CLIP 原生节点中的提示词输入。

提示

iTools Line Loader 节点从一段多行文本中,根据指定的索引(Seed)取出其中的一行。

webp

可以用 iTools Prompt Loader 节点将提示词来源指向至外部的文本文件。

可以用 iTools Prompt Styler 节点加载插件中预设的风格提示词(XXX.yaml),这样提示词的描写就只要集中于事物上了(这个不错,我喜欢)。

webp

可以用 iTools Prompt Styler Extra 实现多重风格提示词(画出线条小狗了可还行):

webp

第 19 章 – 在 Z-Image Turbo 中使用 LoRAs

打开 6 Z-Image Turbo Fp8 AIO txt2img + Lora.json,继续下载 pixag1rlwh1t3.safetensorsPixaroma/experimental_loras at main,83 MB)……让模型理解提示词 pixag1rlwh1t3

webp

变身美爷,进入 AI Models | Civitai 查找更多 LoRA!找一个 Pixel Pix! - CE - V01a - Z-Image Turbo | ZImage LoRA | Civitai,确定模型类型匹配(ZmageTurbo),得到 PixelPix01_CE_ZIMGT_AIT4k.safetensors 让模型理解提示词 Pixel Pix!

将 LoRA 对应的提示词用 Note 节点在旁边提示是一个好习惯。

webp

第 20 章 – 在 Z-Image Turbo 中使用 ControlNet

打开 7 Z-Image Turbo Fp8 AIO txt2img + ControlNet.json,继续下载 Z-Image-Turbo-Fun-Controlnet-Union.safetensorsalibaba-pai/Z-Image-Turbo-Fun-Controlnet-Union at main,2.9 GB)……

webp

再来一张,但是没有达到想要的直接给场景迁移成雪景的效果……

webp

第 21 章 – API 节点

ComfyUI 也有个中转站,可以爆金币让绘图/创建提示词等调用模型的流程在云端上进行。

还能用支付宝/微信送钱,不够要求填写所在地址,不知道会不会因此让有些模型即使充了钱也不能访问到?

webp