大家好,我是想象,AI 破局 9 颗 AI 之心持有者。ComfyUI 已经出来有一段时间了,一直没有深入去学习过,今天花了点时间跑了一下。体验下来,就两个字:惊艳!
这张 3 个小丑的图,很真实吧。毫无疑问,就是今天的主角 ComfyUI 跑出来的,如果你想知道具体用了哪些节点,一定要看到最后,绝对惊掉你的下巴。
今天介绍一下 ComfyUI( Stable Diffusion的基于节点的界面)使用指南。
会包括下面几个内容:
ComfyUI 是什么
ComfyUI 与 AUTOMATIC1111(我们经常看到的 Stable Diffusion 用户界面)相比如何
如何安装
它是如何工作的(简要概述 Stable Diffusion 的工作原理)
如何使用它来完成流行的 Stable Diffusion 任务(img2img、修复、LoRA)
推荐一些工作流
言归正传,让我们开始吧。
一、ComfyUI 是什么以及它有什么作用?
ComfyUI 是用于 Stable Diffusion 的基于节点的用户界面。
ComfyUI 由 Comfyanonymous 于 2023 年 1 月创建,他创建了该工具来学习 Stable Diffusion 的工作原理。
为了让我们了解它有多强大:StabilityAI(Stable Diffusion 的创建者),使用 ComfyUI 在内部测试 Stable Diffusion。此后,他们聘请了 Comfyanonymous 来帮助他们开发内部工具。
ComfyUI 看起来像这样:
基于节点的界面最常见于 3D 设计和 VFX 行业。如果我们使用过 Maya 或 Blender3D 等工具,我们可能会遇到过它们。
在这些接口中,每个节点都会执行一些代码。
节点具有输入(传递给代码的值)和输出(由代码返回的值)。
使用鼠标,用户能够:
创建新节点
编辑节点上的参数(变量)
通过输入和输出将节点连接在一起
在 ComfyUI 中,每个节点代表 Stable Diffusion 过程的不同部分。通过创建和连接执行流程不同部分的节点,我们可以运行 Stable Diffusion。
二、ComfyUI VS AUTOMATIC1111
ComfyUI 的许多新用户都来自更简单的界面,例如 AUTOMATIC1111、InvokeAI 或 SD.Next。
他们都想知道同一件事:为什么要使用如此复杂的工具来完成同样的事情?
嗯,你可以做同样的事情,但你也可以做更多的事情。
极高的可配置性
想要在生成过程的任何阶段输出预览图像吗?
想同时运行两个生成过程以比较采样方法吗?
想一个出图流程复用吗?不需要一遍一遍的复制粘贴
这是我使用 ComfyUI 时最喜欢的原因。
ComfyUI 可让我们同时做很多事情,同时完成许多任务。
想象一下,我们对所有图像都采用类似的流程:首先,生成一个图像;然后将结果发送给img2img;最后,进行放大。
在 AUTOMATIC1111 中,我们需要手动执行所有这些步骤。
在 ComfyUI 中,我们可以通过单击一次执行所有这些步骤。
这非常适合 SDXL v1.0 版本,该版本配备了 2 个模型和一个 2 步骤过程:基础模型(Base Model)用于生成噪声潜变量,并使用专门用于去噪的精炼模型(refiner model)处理(实际上使图像更清晰、更详细)。
性能和速度
由于它们具有如此高度可配置性,ComfyUI 的生成方式可以进行优化,而 AUTOMATIC1111 的生成方式则无法实现。
这大大提高了速度,有人报告使用 ComfyUI 相比 AUTOMATIC1111 生成方式快 3-5 倍。
了解 Stable Diffusion的工作原理
ComfyUI 被设置成节点可以反映出 Stable Diffusion 出图过程中不同部分在内部是如何工作的。通过学习如何使用 ComfyUI,我们将了解到 Stable Diffusion 实际上是如何工作的!
三、如何安装 ComfyUI
AutoDL 云端服务器
使用 AutoDL 云端服务器,选择小潘总的镜像,会自带 ComfyUI 环境。
快速安装(Windows、NVIDIA)
ComfyUI 有一个便携式独立版本,可让我们使用 NVIDIA GPU 或 CPU 运行 ComfyUI。CPU 生成速度非常慢,因此这也可能是仅限 NVIDIA 的安装程序:
单击此链接,我们将开始下载:
https://github.com/comfyanonymous/ComfyUI/releases/download/latest/ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z
解压之后,我们将得到一个名为 ComfyUI_windows_portable 的文件夹,其中包含 ComfyUI 文件夹。
双击文件 run_nvidia_gpu.bat 以 NVIDIA GPU 运行,或 run_cpu.bat 以CPU运行。
从 Github 克隆(Windows、Linux)
NVIDIA GPU
Windows,打开命令提示符(搜索“cmd”)。Linux,打开终端 (Ctrl+Alt+T)。
然后一一运行以下命令:
`git clone https://github.com/comfyanonymous/ComfyUI cd ComfyUI pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 xformers -r requirements.txt`
我们现在可以使用以下命令启动 ComfyUI:
`python main.py`
故障排除
如果出现“Torch 未在启用 CUDA 的情况下编译”错误,请卸载 torch:
`pip uninstall torch`
(出现提示时,按“y”)
并使用与之前相同的命令再次安装它:
`pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 xformers -r requirements.txt`
AMD GPU
Windows,打开命令提示符(搜索“cmd”)。Linux,打开终端 (Ctrl+Alt+T)。
然后一一运行以下命令:
`git clone https://github.com/comfyanonymous/ComfyUI cd ComfyUI python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.4.2 -r requirements.txt`
如果由于 ROCm(6700 XT 等)官方不支持我们的 GPU 而导致失败,我们可以尝试运行以下命令:
`HSA_OVERRIDE_GFX_VERSION=10.3.0 python main.py`
我们现在可以使用以下命令启动 ComfyUI:
`python main.py`
从 Github 克隆(Mac)
我们可以在任何最新 macOS 版本的 Apple Mac 芯片(M1 或 M2)中安装 ComfyUI。
按照 Mac 上的 Accelerated PyTorch 培训指南安装 pytorch。
打开终端并克隆存储库:
`git clone https://github.com/comfyanonymous/ComfyUI`
安装 ComfyUI 依赖项:
`cd ComfyUI pip install -r requirements.txtCopy`
如果我们有另一个 Stable Diffusion UI,我们也许可以重用依赖项。
通过运行以下命令启动 ComfyUI:
`python main.py --force-fp16`
请注意,只有在安装了最新的PyTorch夜间版之后,–force-fp16选项才能生效。
更新 ComfyUI
如果我们从 Github 克隆 ComfyUI(没有使用快速安装独立版本),则只能更新 ComfyUI。
要更新 ComfyUI,请导航到命令提示符/终端中的 ComfyUI 文件夹并键入:
`git pull`
四、ComfyUI 用户界面
节点
我们可以通过右键单击空白处 -> Add Node 来添加节点。
我们可以双击空白区域来获取所有节点的列表和搜索栏:
CTRL + 拖动可让我们选择多个节点。我们可以使用 SHIFT + 拖动将它们一起移动。
我们可以更改节点的颜色以帮助我们保持井井有条。右键 -> Color -> 选择颜色:
连接节点
如果将输入拖动并释放到空白区域,我们将获得兼容节点的列表:
输入和输出仅在颜色相同时才兼容。请注意我如何将紫色输入连接到紫色输出,但无法连接其余任何部分。
执行
当我们单击 Queue Prompt 时,工作流会按照节点的连接顺序传递节点,从加载器开始,加载器没有输入,只有输出。
如果任何节点缺少输入,我们将无法运行提示:
五、ComfyUI 节点解释
我们如何理解实际发生的事情,以便能够创建和修改工作流程?
要理解节点,我们必须了解一些关于 Stable Diffusion 的知识。
让我们来看一下默认的工作流程。
如果我们不在默认的工作流程上,或者我们已经在界面上进行了调整,请点击右侧边栏上的加载默认按钮。
Checkpoint 底模节点
用于生成图像的 .safetensors 或 .ckpt checkpoint 模型有 3 个主要组件:
CLIP 模型:将文本转换为 Unet 可以理解的格式
Unet:执行“扩散”过程,即我们称之为生成的图像的逐步处理
VAE:将图像从潜在空间解码为像素空间(也用于将常规图像从像素空间编码到潜在空间,当我们进行img2img时)
在 ComfyUI 工作流程中,这由 Load Checkpoint 节点及其 3 个输出表示(MODEL 指 Unet)。
这些输出连接到什么?
CLIP 提示词节点
Load Checkpoint 节点的 CLIP 输出连接到 CLIP Text Encode 节点。
CLIP 模型用于将文本转换为 Unet 可以理解的格式(文本的数字表示),我们称这些为嵌入。
CLIP Text Encode 节点将checkpoint的 CLIP 模型作为输入,将提示(正向和负向)作为变量,执行编码过程,并将这些嵌入输出到下一个节点 KSampler。
KSampler 采样器节点
在 Stable Diffusion 中,图像是通过称为采样的过程生成的。
在 ComfyUI 中,此过程发生在 KSampler 节点中。这是实际的“生成”部分,因此我们会注意到,当我们对提示进行排队时,KSampler 需要花费最多的时间来运行。
KSampler 接受以下输入:
model :从 Load Checkpoint 节点输出的 MODEL(Unet)
positive :由 CLIP 模型编码的正向提示(CLIP Text Encode 节点)
negative :由 CLIP 模型编码的负向提示(其他 CLIP Text Encode 节点)
latent_image :潜在空间中的图像(Empty Latent Image节点)
由于我们只是根据提示生成图像(txt2img),所以我们使用空白潜在图像节点将 latent_image 传递给一个空白图像。
KSampler发生了什么事情?
扩散是生成图像的实际过程。
我们从一个随机信息数组和嵌入(编码的正向和负向提示)开始。
扩散分为多个步骤进行,每一步都对信息数组(也称为潜变量)进行操作,并产生另一个更接近提示文本的信息数组。
因此,我们从一个随机信息数组开始,最终得到类似于我们所知道的东西。
KSampler输出这些信息。然而,它还没有转换成像素空间(我们看不见它),仍然是一种潜在表示。
VAE 节点
VAEDecode 节点有 2 个输入:
我们的 checkpoint 模型附带的 VAE(我们也可以添加自己的 VAE)
我们的 KSampler 已经完成去噪的潜在空间图像。
VAE用于将图像从潜空间翻译为像素空间。
最终,它将传递给 Save Image 节点以显示并允许我们下载像素图像。
默认工作流程是我们在 ComfyUI 中找到的最简单的工作流程。
六、ComfyUI 案例
SDXL 案例
SDXL 基本 checkpoint 可以像 ComfyUI 中的任何常规 checkpoint 一样使用。唯一重要的是,为了获得最佳性能,分辨率应设置为 1024x1024 或具有相同像素数但宽高比不同的其他分辨率。例如:896x1152 或 1536x640 都是不错的分辨率。
要将基础模型与精炼模型一起使用,我们可以使用此工作流程。我们可以下载此图像并加载它或将其拖动到 ComfyUI 上来获取它。
在左上角,Prompt Group 包括 Prompt 和 Negative Prompt 作为 String Nodes,分别连接到 base 和 refiner 模型的 Samplers。
中间左侧的图像尺寸设置为1024 x 1024。
SDXL base、SDXL refiner 的底模节点和 VAE 节点位于左下角。
SDXL base 和 refiner 的 Samplers 以及 VAE 节点显示在右侧。
生成的 base 图像显示在左侧,而 refiner 图像显示在右侧。
SDXL 基础模型
SDXL 精炼模型
基础图像与精炼图像的结果比较
精炼图像中的线条更加饱满,杂乱程度较低。
背景行星表面在精炼图像中看起来更好。
马的面部线条在精炼图像中被简化了。
如何下载工作流程?
整个工作流嵌入在工作流图片本身中。只需下载它,将其拖到 ComfyUI 中,我们将拥有与上面相同的工作流程。
要加载工作流程,只需单击右侧边栏上的 Load 按钮,然后选择工作流程 .json 文件。
Lora 的例子
所有 LoRA 风格:Lycoris、loha、lokr、locon 等……都以这种方式使用。
我们可以在 ComfyUI 中加载这些图像以获得完整的工作流程。
Loras 是应用在主 MODEL 和 CLIP 模型之上的补丁,因此要使用它们,请将它们放在 models/loras 目录中,并使用 LoraLoader 节点,如下所示:
我们可以通过链接多个 LoraLoader 节点来应用多个 Loras,如下所示:
ControlNet 案例
涂鸦 ControlNet
这是一个如何使用 controlnets 的简单示例,该示例使用 scribble controlnet 和 AnythingV3 模型。我们可以在 ComfyUI 中加载此图像以获得完整的工作流程。
这是我用于此工作流程的输入图像:
OpenPose ControlNet
这是本示例中将使用的输入图像:
这是一个使用 AnythingV3 进行第一次传递的示例,首先通过 Controlnet 进行,然后在第二次传递时不再使用 Controlnet,并且采用 AOM3A3(深渊橙色混合物 3)和它们的 VAE。
我们可以在 ComfyUI 中加载此图像以获得完整的工作流程。
混合 ControlNet
多个 ControlNet 和 T2I 适配器可以像这样应用,并产生有趣的结果:
我们可以在 ComfyUI 中加载此图像以获得完整的工作流程。
输入图像:
七、下载模型
使用 AutoDL 云端模型时不需要下载的,小潘总镜像中已经帮我们下载好了。
为了运行 SDXL,我们可能还需要其他几个模型。
我们可以从下载 checkpoint 模型开始,并在需要时下载其余模型。
checkpoint
将 checkpoint 放置在文件夹 ComfyUI/models/checkpoints 中:
- SDXL 1.0 基础底模
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors
- SDXL 1.0 精炼底模
https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors
VAE
将 VAE 放入文件夹 ComfyUI/models/vae 中
- Fixed SDXL 0.9 VAE
https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl_vae.safetensors
LoRA
将 LoRA 放入文件夹 ComfyUI/models/loras 中
- SDXL Offset Noise LoRA
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors
Upscaler
对于放大图像:某些工作流程不包含它们,其他工作流程需要它们。
将 upscalers 放入文件夹 ComfyUI/models/upscaler 中
- 4x_NMKD-Siax_200k.pth upscaler
https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/4x_NMKD-Siax_200k.pth
- 4x-Ultrasharp.pth upscaler
https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/4x-UltraSharp.pth
八、推荐的工作流
ComfyUI 最好的部分之一是下载和在工作流程之间切换非常容易。
以下是官方 ComfyUI 存储库中的示例工作流程列表。
https://comfyanonymous.github.io/ComfyUI_examples/
要加载工作流程,只需单击右侧边栏上的 Load 按钮,然后选择工作流程 .json 文件。
有些工作流程还要求我们将存储库 git clone 到我们的 ComfyUI/custom_nodes 文件夹,然后重新启动 ComfyUI。
以下是 Stable Diffusion社区中一些流行的工作流程:
Sytan 的 SDXL 工作流
https://github.com/SytanSD/Sytan-SDXL-ComfyUI
SDXL 最流行的工作流程之一。具有升级功能。
Searge 的 SDXL 工作流
https://github.com/SeargeDP/SeargeSDXL/blob/main/README.md
具有 3 种操作模式(文本到图像、图像到图像和修复),这些模式均可在同一工作流程中使用,并且可以通过选项进行切换。
本文最开始的三个小丑,就是用下面这个工作流画的。是不是有点震惊!反正我的眼睛已经是看花了。
为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。
由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取
一、ComfyUI配置指南
- 报错指南
- 环境配置
- 脚本更新
- 后记
- …
二、ComfyUI基础入门
- 软件安装篇
- 插件安装篇
- …
三、 ComfyUI工作流节点/底层逻辑详解
- ComfyUI 基础概念理解
- Stable diffusion 工作原理
- 工作流底层逻辑
- 必备插件补全
- …
四、ComfyUI节点技巧进阶/多模型串联
- 节点进阶详解
- 提词技巧精通
- 多模型节点串联
- …
五、ComfyUI遮罩修改重绘/Inpenting模块详解
- 图像分辨率
- 姿势
- …
六、ComfyUI超实用SDXL工作流手把手搭建
- Refined模型
- SDXL风格化提示词
- SDXL工作流搭建
- …
由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取