元峰AI笔记 · AI绘画与视频

一文详细介绍如何使用 ComfyUI 来跑 SD图

今天介绍一下 ComfyUI( Stable Diffusion的基于节点的界面)使用指南。

一文详细介绍如何使用 ComfyUI 来跑 SD图

图片展示了三个小丑形象,中间的小丑头戴黄色蝴蝶结,两侧小丑的头发为红棕色。三人都化着夸张的妆容,眼睛周围有红蓝相间的颜料,鼻头是红色的。背景较暗,突出小丑形象。该图片位于介绍ComfyUI使用指南的文档中,可能是用于展示使用ComfyUI完成的流行Stable Diffusion任务(如img2img、修复、LoRA)示例,直观呈现其生成效果。

今天介绍一下 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 看起来像这样:

图片展示的是ComfyUI界面,用于生成图像。界面左侧有“CLIP Text Encode (Prompt)”和“Empty Latent image”节点,分别输入文字描述和设置尺寸。中间是“KSampler”节点,包含多个参数设置,如模型、正向和反向图像等。右侧是“VAE Decode”节点,有“image”和“Save image”等选项。右侧还显示了“Queue Prompt”区域,有“Save”“Load”“Clear”等按钮。该图直观呈现了ComfyUI生成图像的节点连接和参数设置情况。

基于节点的界面最常见于 3D 设计和 VFX 行业。如果我们使用过 MayaBlender3D 等工具,我们可能会遇到过它们。

在这些接口中,每个节点都会执行一些代码。

节点具有输入(传递给代码的值)和输出(由代码返回的值)。

使用鼠标,用户能够:

  • 创建新节点
  • 编辑节点上的参数(变量)
  • 通过输入和输出将节点连接在一起

在 ComfyUI 中,每个节点代表 Stable Diffusion 过程的不同部分。通过创建和连接执行流程不同部分的节点,我们可以运行 Stable Diffusion。

二、ComfyUI VS AUTOMATIC1111

ComfyUI 的许多新用户都来自更简单的界面,例如 AUTOMATIC1111、InvokeAI 或 SD.Next。

他们都想知道同一件事:

为什么要使用如此复杂的工具来完成同样的事情?

图片展示了Automatic1111和ComfyUI的对比。左侧为Automatic1111,呈现一个色彩鲜艳的拼图玩具,拼图上有不同颜色的圆点,周围散落着相同颜色的圆点。右侧为ComfyUI,展示了一个充满电子设备的房间,设备上有各种按钮和显示屏,灯光效果使场景显得科技感十足。此图与上下文关系紧密,直观呈现了两者在界面复杂度上的差异,引出下文对ComfyUI极高的可配置性的介绍。

嗯,你可以做同样的事情,但你也可以做更多的事情。

极高的可配置性

想要在生成过程的任何阶段输出预览图像吗?

想同时运行两个生成过程以比较采样方法吗?

想一个出图流程复用吗?不需要一遍一遍的复制粘贴

这是我使用 ComfyUI 时最喜欢的原因。

ComfyUI 可让我们同时做很多事情

ComfyUI 可以同时完成许多任务

想象一下,我们对所有图像都采用类似的流程:首先,生成一个图像;然后将结果发送给img2img;最后,进行放大。

在 AUTOMATIC1111 中,我们需要手动执行所有这些步骤。

在 ComfyUI 中,我们可以通过单击一次执行所有这些步骤。

这非常适合 SDXL v1.0 版本,该版本配备了 2 个模型和一个 2 步骤过程:基础模型(Base Model)用于生成噪声潜变量,并使用专门用于去噪的精炼模型(refiner model)处理(实际上使图像更清晰、更详细)。

图片展示了SDXL v1.0版本的生成流程。从Prompt输入开始,经Base模型处理后生成128x128的Latent数据,再由Refiner模型处理,最终生成1024x1024的Image。Base模型用于生成噪声潜变量,Refiner模型用于去噪,使图像更清晰、更详细。该图与上下文紧密相关,直观呈现了SDXL v1.0版本的2步骤生成过程,与上下文提到的该版本配备2个模型和2步骤过程相呼应。

性能和速度

由于它们具有如此高度可配置性,ComfyUI 的生成方式可以进行优化,而 AUTOMATIC1111 的生成方式则无法实现。

这大大提高了速度,有人报告使用 ComfyUI 相比 AUTOMATIC1111 生成方式快 3-5 倍。

了解 Stable Diffusion的工作原理

ComfyUI 被设置成节点可以反映出 Stable Diffusion 出图过程中不同部分在内部是如何工作的。通过学习如何使用 ComfyUI,我们将了解到 Stable Diffusion 实际上是如何工作的!

三、如何安装 ComfyUI

AutoDL 云端服务器

使用 AutoDL 云端服务器,选择小潘总的镜像,会自带 ComfyUI 环境。

图片展示了在Windows系统中使用NVIDIA GPU或CPU安装ComfyUI的步骤。画面中,左侧是文件资源管理器,突出显示了“ComfyUI启动器.ipynb”文件。右侧是ComfyUI界面,上方工具栏中“启动和重启webui”按钮被红圈标注。下方代码区域有文字说明,第一步是启动和重启webui,如上图所示;第二步是出现“http://127.0.0.1:6006”字样就算成功。该图片与文档中介绍的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 来添加节点。

图片展示了ComfyUI用户界面中添加节点的操作。在界面空白处右键单击,弹出菜单中“Add Node”选项被高亮显示。点击后,弹出的节点分类列表中,“sampling”分类下的“KSampler (Advanced)”节点被选中并突出显示。该图片与上文提到的“右键单击空白处->Add Node来添加节点”内容对应,直观呈现了添加节点的具体操作步骤和可选择的节点类型。

我们可以双击空白区域来获取所有节点的列表和搜索栏:

图片展示了ComfyUI用户界面中双击空白区域后弹出的节点列表窗口。窗口上方有“Search”搜索栏,下方列出多个节点名称,如KSampler、CheckpointLoaderSimple等,部分节点名称带有“VAE”前缀,如VAECode、VAEEncode等。该图片与上文介绍的双击空白区域获取所有节点列表和搜索栏的内容相关,直观呈现了操作后的界面效果。

CTRL + 拖动可让我们选择多个节点。我们可以使用 SHIFT + 拖动将它们一起移动。

图片展示了ComfyUI界面中节点连接的示例。左侧为“Load Checkpoint”节点,右侧为“CLIP Text Encode (Prompt)”节点。黄色箭头从“Load Checkpoint”节点的“clip”输出指向“CLIP Text Encode (Prompt)”节点的“clip”输入,表明两者连接成功。该图片与上下文紧密相关,直观呈现了文档中介绍的连接节点操作,即通过拖动输入释放到空白区域获取兼容节点列表,以及输入和输出仅在颜色相同时才兼容的规则。

我们可以更改节点的颜色以帮助我们保持井井有条。右键 -> Color -> 选择颜色:

图片展示了ComfyUI界面中“Load Checkpoint”节点的右键菜单。菜单中“Colors”选项被突出显示,点击后弹出颜色选择框,包含多种颜色选项,如No color、red、brown等,其中“red”颜色被选中。该图片与文档中“更改节点颜色”的内容相关,直观呈现了右键菜单中“Colors”选项及颜色选择框的样式和内容,帮助用户了解如何更改节点颜色以保持界面井井有条。

连接节点

如果将输入拖动并释放到空白区域,我们将获得兼容节点的列表:

图片展示了ComfyUI界面中“Load Checkpoint”节点的属性设置窗口。窗口左侧显示节点名称及“ckpt_name”属性,右侧有“MODEL”“CLIP”“VAE”三个颜色标识的节点,其中“CLIP”节点被黄色突出显示。右侧还弹出一个下拉菜单,包含“Add Node”“Search”“Reroute”等选项。该图片与上下文介绍的ComfyUI用户界面中节点相关,直观呈现了节点属性设置及颜色标识情况。

输入和输出仅在颜色相同时才兼容。请注意我如何将紫色输入连接到紫色输出,但无法连接其余任何部分。

图片展示了ComfyUI界面中两个节点的连接情况。左侧是“Load Checkpoint”节点,右侧是“KSampler”节点。其中,“Load Checkpoint”节点的“MODEL”输出端与“KSampler”节点的“model”输入端通过蓝色线条连接,且“VAE”输出端与“KSampler”节点的“latent_image”输入端通过绿色线条连接。该图片与上下文内容相关,直观呈现了节点连接的操作,说明了输入和输出仅在颜色相同时才兼容,以及如何将不同颜色的节点连接起来。

执行

当我们单击 Queue Prompt 时,工作流会按照节点的连接顺序传递节点,从加载器开始,加载器没有输入,只有输出。

图片展示了ComfyUI界面中一个复杂的节点连接示例。画面中有多个节点,如Load Latent、Load Image等,节点间通过不同颜色的箭头连接,形成网络结构。右侧显示了生成的图像,有“无敌”字样。该图与上下文紧密相关,直观呈现了文档中提到的将输入拖动并释放到空白区域获取兼容节点列表,以及输入和输出仅在颜色相同时才兼容等内容,帮助理解节点连接和工作流执行的原理。

如果任何节点缺少输入,我们将无法运行提示:

图片展示了ComfyUI界面中节点连接及执行时的提示情况。左侧是CLIP Text Encode节点,右侧是KSampler节点,两者通过“CONDITIONING”连接。下方弹出提示框,显示“Prompt outputs failed validation CLIPTextEncode: - Required input is missing: clip”,表明CLIP Text Encode节点缺少“clip”输入,无法运行。该图片与上下文紧密相关,直观呈现了文档中提到的“如果任何节点缺少输入,我们将无法运行提示”的场景。

五、ComfyUI 节点解释

我们如何理解实际发生的事情,以便能够创建和修改工作流程?

要理解节点,我们必须了解一些关于 Stable Diffusion 的知识。

让我们来看一下默认的工作流程。

如果我们不在默认的工作流程上,或者我们已经在界面上进行了调整,请点击右侧边栏上的加载默认按钮。

Checkpoint 底模节点

用于生成图像的 .safetensors 或 .ckpt checkpoint 模型有 3 个主要组件:

  • CLIP 模型:将文本转换为 Unet 可以理解的格式
  • Unet:执行“扩散”过程,即我们称之为生成的图像的逐步处理
  • VAE:将图像从潜在空间解码为像素空间(也用于将常规图像从像素空间编码到潜在空间,当我们进行img2img时)

在 ComfyUI 工作流程中,这由 Load Checkpoint 节点及其 3 个输出表示(MODEL 指 Unet)。

图片展示的是ComfyUI工作流程中Load Checkpoint节点的界面。节点名称为“Load Checkpoint”,右侧有三个输出端口,分别标注为MODEL(紫色)、CLIP(黄色)、VAE(红色)。下方有一个输入框,显示ckpt_name为“v1-5-pruned-emaonly.ckpt”。该图片与上文介绍Checkpoint底模节点的内容相关,直观呈现了Load Checkpoint节点及其输出端口,帮助理解这些输出连接到什么。

这些输出连接到什么?

CLIP 提示词节点

Load Checkpoint 节点的 CLIP 输出连接到 CLIP Text Encode 节点。

图片展示了ComfyUI中CLIP Text Encode节点的连接情况。左侧Load Checkpoint节点输出的CLIP模型连接到上方CLIP Text Encode节点,其输入为“beautiful scenery nature glass bottle landscape, , purple galaxy bottle,”。下方CLIP Text Encode节点输入为“text, watermark”。该图片与上文介绍CLIP提示词节点的内容相关,直观呈现了CLIP模型的输出连接到CLIP Text Encode节点,以及该节点的输入情况,帮助理解CLIP模型在ComfyUI中的应用。

CLIP 模型用于将文本转换为 Unet 可以理解的格式(文本的数字表示),我们称这些为嵌入。

CLIP Text Encode 节点将checkpoint的 CLIP 模型作为输入,将提示(正向和负向)作为变量,执行编码过程,并将这些嵌入输出到下一个节点 KSampler。

KSampler 采样器节点

在 Stable Diffusion 中,图像是通过称为采样的过程生成的。

在 ComfyUI 中,此过程发生在 KSampler 节点中。这是实际的“生成”部分,因此我们会注意到,当我们对提示进行排队时,KSampler 需要花费最多的时间来运行。

图片展示了ComfyUI中KSampler采样器节点的输入输出情况。左侧有CLIP Text Encode节点,分别输入“beautiful scenery nature glass bottle landscape, , purple galaxy bottle”和“text, watermark”作为正向和负向提示。下方是Empty Latent Image节点,设置宽度、高度和batch_size均为512。右侧是KSampler节点,接收model、positive、negative、latent_image等输入,输出LATENT。该图直观呈现了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中VAE Decode节点的工作流程。左侧有Latent输入,VAE Decode节点接收samples和vae输入,输出IMAGE。右侧是Save Image节点,接收images输入,显示并允许下载像素图像,其下方有filename_prefix和ComfyUI参数。该图与上下文紧密相关,直观呈现了上下文提到的VAE Decode节点有2个输入,且与最终传递给Save Image节点以显示像素图像的流程对应。

默认工作流程是我们在 ComfyUI 中找到的最简单的工作流程。

六、ComfyUI 案例

SDXL 案例

SDXL 基本 checkpoint 可以像 ComfyUI 中的任何常规 checkpoint 一样使用。唯一重要的是,为了获得最佳性能,分辨率应设置为 1024x1024 或具有相同像素数但宽高比不同的其他分辨率。例如:896x1152 或 1536x640 都是不错的分辨率。

要将基础模型与精炼模型一起使用,我们可以使用此工作流程。我们可以下载此图像并加载它或将其拖动到 ComfyUI 上来获取它。

图片展示了使用ComfyUI跑SDXL的界面。左上角Prompt Group有Prompt和Negative Prompt,分别连接到base和refiner模型的Samplers。下方Image Size区域显示图像尺寸为1024x1024。左侧CheckPoint区域有多个选项。右下角是生成的两张图像,均为骑马的宇航员。右侧有Queue Prompt、Queue History等操作按钮。该图与上下文介绍的ComfyUI跑SDXL工作流程相关,直观呈现了操作界面及生成效果。

  • 在左上角,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基础模型生成的图像示例,用于直观呈现基础图像的效果,与上下文提到的SDXL基础模型生成的图像相呼应。

SDXL 基础模型

图片展示的是SDXL基础模型生成的图像。画面中,一名宇航员身着白色太空服,头戴白色头盔,手持工具,骑着一匹白色骏马在月球表面奔跑。背景是深蓝色的夜空,点缀着星星,左侧可见月球和地球。该图与上下文紧密相关,是SDXL基础模型生成图像的展示,用于直观呈现基础模型的生成效果。

SDXL 精炼模型

基础图像与精炼图像的结果比较

  • 精炼图像中的线条更加饱满,杂乱程度较低。
  • 背景行星表面在精炼图像中看起来更好。
  • 马的面部线条在精炼图像中被简化了。

如何下载工作流程?

  1. 整个工作流嵌入在工作流图片本身中。只需下载它,将其拖到 ComfyUI 中,我们将拥有与上面相同的工作流程。
  2. 要加载工作流程,只需单击右侧边栏上的 Load 按钮,然后选择工作流程 .json 文件。

图片展示了ComfyUI中SDXL基础模型和精炼模型的下载工作流程文件及结果图片。左侧有三个文件,分别为Controlnet.json、Lora_放大器.json、素描V6.json;右侧是两张图片,分别是comfyui_base_00045.png(基础图像)和sdxl_simple_example.png(精炼图像)。该图片与上下文紧密相关,直观呈现了下载工作流程后可获得的文件和结果,帮助用户了解如何通过下载工作流程文件来获取相应的图像和模型文件。

Lora 的例子

所有 LoRA 风格:Lycoris、loha、lokr、locon 等……都以这种方式使用。

我们可以在 ComfyUI 中加载这些图像以获得完整的工作流程。

Loras 是应用在主 MODEL 和 CLIP 模型之上的补丁,因此要使用它们,请将它们放在 models/loras 目录中,并使用 LoraLoader 节点,如下所示:

图片展示的是一个使用ComfyUI跑SD图的流程图。图中包含多个节点,如LocalLoader、CLIPTextEncode、KSampler、VAEDecode等,各节点间通过线条连接,形成流程。LocalLoader节点下有多个参数设置,CLIPTextEncode节点用于文本编码,KSampler节点用于采样,VAEDecode节点用于解码。该图与文档中介绍的Lora和ControlNet案例相关,直观呈现了使用ComfyUI跑SD图的操作流程。

我们可以通过链接多个 LoraLoader 节点来应用多个 Loras,如下所示:

图片展示了ComfyUI中使用Lora的节点连接示例。左侧有两个LoraLoader节点,分别连接至“lowecornerBisContrastFix_sd15.safetensors”和“epnNoiseoffset_v2.safetensors”模型,且都指向CLIPTextEncode节点。右侧CLIPTextEncode节点还连接了“masterpiece best quality”文本。该图与上下文紧密相关,直观呈现了将Loras应用在主MODEL和CLIP模型之上的操作流程,是Lora案例中使用LoraLoader节点的示例图。

ControlNet 案例

涂鸦 ControlNet

这是一个如何使用 controlnets 的简单示例,该示例使用 scribble controlnet 和 AnythingV3 模型。我们可以在 ComfyUI 中加载此图像以获得完整的工作流程。

图片展示的是ComfyUI中使用Lora的例子工作流程。左侧为“Load Checkpoints”和“Load Image”节点,分别加载AnythingV3.0 - c.ckpt和一张图像。中间部分有“CLIP Text Encode (Prompt)”节点,输入prompt为“a cute girl that have a - (cheese apex is the - 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,

这是我用于此工作流程的输入图像:

图片展示的是一个使用AnythingV3进行第一次传递的示例图像。画面中有一个卡通人物形象,背景为黑色,人物有大大的猫耳,脸部为圆形,眼睛、鼻子和嘴巴均为线条勾勒,整体风格简约。该图片与文档中介绍的ComfyUI案例中OpenPose ControlNet相关,是本示例中将使用的输入图像,用于在ComfyUI中加载以获得完整的工作流程。

OpenPose ControlNet

这是本示例中将使用的输入图像:

图片展示了OpenPose控制网络在ComfyUI中处理的输入图像示例。画面中有多个彩色线条构成的人形轮廓,线条以不同颜色区分,如绿色、蓝色、黄色等,线条连接点处有紫色标记。这些线条和点代表人体关键点,用于姿态估计。该图与上下文紧密相关,是本示例中将使用OpenPose ControlNet进行图像处理的输入图像,展示了其在ComfyUI中的应用效果。

这是一个使用 AnythingV3 进行第一次传递的示例,首先通过 Controlnet 进行,然后在第二次传递时不再使用 Controlnet,并且采用 AOM3A3(深渊橙色混合物 3)和它们的 VAE。

图片展示了一位穿着黄色毛衣、黑色短裙的动漫女孩在雪地里跳舞的场景。她双手高举,背景是夕阳西下的天空,远处有山脉和树木。画面左侧有四个与主图女孩姿态相同的较小图像,她们穿着与主图女孩相似的服装,背景为不同场景。该图片用于说明在ComfyUI中加载示例图像以获得完整工作流程,是OpenPose ControlNet示例中将使用的输入图像。

我们可以在 ComfyUI 中加载此图像以获得完整的工作流程。

混合 ControlNet

多个 ControlNet 和 T2I 适配器可以像这样应用,并产生有趣的结果:

图片展示了在ComfyUI中使用ControlNet进行图像生成的工作流程。左侧是“Load Image”模块,输入为“OpenPose ControlNet”图像。中间有“Apply ControlNet”模块,连接“Load Image”和“Apply Image”模块,后者输出为右侧的生成图像,显示一位金发女孩站在房屋前的场景。流程中还涉及“Load ControlNet”“Load T2I Adapter”等模块,通过不同颜色线条连接,形成复杂的工作流。此图与文档中介绍ComfyUI案例中OpenPose ControlNet的内容相关,直观呈现了工作流程。

我们可以在 ComfyUI 中加载此图像以获得完整的工作流程。

输入图像:

图片展示的是OpenPose ControlNet的示例图像。画面中呈现一个人形轮廓,由多条彩色线条构成,线条连接着多个彩色点,形成类似骨骼的结构。线条颜色有绿色、蓝色、黄色、红色等,点的颜色与对应线条相同。该图用于说明在ComfyUI中加载此图像以获得使用OpenPose ControlNet进行工作流程的完整示例,是上下文介绍OpenPose ControlNet案例时所使用的输入图像。

图片展示了一幅简单的黑白手绘风格画作。画面中有一座房子,房子有三角形屋顶,窗户和门为矩形,窗户内有十字形图案。房子左侧上方有一只眼睛,眼睛有长长的睫毛,眼睛旁有几条线条,可能代表头发。背景为黑色。此图与文档中“混合ControlNet”部分内容相关,可能是用于展示混合ControlNet等技术在生成图像时的输出效果。

七、下载模型

使用 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。

图片展示了ComfyUI的一个工作流程界面,画面左侧有多个模块及相互连接的线条,代表数据或信息的传输路径,模块包括CLIP Text Encode (Prompt)、Load Checkpoint等。画面右侧边栏有多个按钮,其中“Load”按钮以红色框突出显示。该图片与上文提到的“要加载工作流程,只需单击右侧边栏上的Load按钮,然后选择工作流程.json文件”相呼应,直观呈现了加载工作流程操作对应的界面位置。

以下是 Stable Diffusion社区中一些流行的工作流程:

Sytan 的 SDXL 工作流

https://github.com/SytanSD/Sytan-SDXL-ComfyUI

SDXL 最流行的工作流程之一。具有升级功能。

图片展示了Sytan的SDXL工作流界面,用于生成图像。界面左侧有多个参数设置区域,如Label Size、Base Model等,参数间有线条连接。中间部分显示了生成的图像,为一只白虎。右侧有Queue Prompt、Extra options等操作按钮。该图片与文档中介绍Sytan的SDXL工作流的内容相关,直观呈现了该工作流的界面及生成效果,帮助理解其操作和生成结果。

Searge 的 SDXL 工作流

https://github.com/SeargeDP/SeargeSDXL/blob/main/README.md

具有 3 种操作模式(文本到图像、图像到图像和修复),这些模式均可在同一工作流程中使用,并且可以通过选项进行切换。

图片展示了Searge的SDXL工作流界面,用于生成图像。界面分为多个部分,左侧有Main Prompt、Secondary Prompt、Style等输入区域,以及Negative Prompt、Negative Style等设置区域。中间是Generation Parameters、Prompt Processing、Model Names等参数设置区域,如control_net、control_net_strength等。右侧是Provide Image区域,显示了一张猫的图像。底部有Workflow Information说明,如模型版本、参数等。该图片与上下文介绍的Searge的SDXL工作流相关,直观呈现了其操作界面和设置内容。

文章最开始的三个小丑,就是用下面这个工作流画的。是不是有点震惊!反正我的眼睛已经是看花了。

图片展示了ComfyUI中Searge的SDXL工作流,版本为v3.2。画面中呈现了多种操作模式,包括文本到图像、图像到图像和修复等,可通过选项进行切换。工作流由多个模块组成,如Prompt Builder、Magic等,各模块间通过线条连接,形成复杂的工作流程。该图与文档中介绍Searge的SDXL工作流的内容相关,直观呈现了其操作模式及工作流程结构。

参考链接:

https://aituts.com/comfyui/

https://github.com/comfyanonymous/ComfyUI