使用 ComfyUI 跑 SD 图,就两个字:惊艳!

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 精炼模型

基础图像与精炼图像的结果比较
  • 精炼图像中的线条更加饱满,杂乱程度较低。

  • 背景行星表面在精炼图像中看起来更好。

  • 马的面部线条在精炼图像中被简化了。

如何下载工作流程?

  1. 整个工作流嵌入在工作流图片本身中。只需下载它,将其拖到 ComfyUI 中,我们将拥有与上面相同的工作流程。

  2. 要加载工作流程,只需单击右侧边栏上的 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配置指南

  • 报错指南
  • 环境配置
  • 脚本更新
  • 后记

img

二、ComfyUI基础入门

  • 软件安装篇
  • 插件安装篇

img

三、 ComfyUI工作流节点/底层逻辑详解

  • ComfyUI 基础概念理解
  • Stable diffusion 工作原理
  • 工作流底层逻辑
  • 必备插件补全

img

四、ComfyUI节点技巧进阶/多模型串联

  • 节点进阶详解
  • 提词技巧精通
  • 多模型节点串联

img

五、ComfyUI遮罩修改重绘/Inpenting模块详解

  • 图像分辨率
  • 姿势

img

六、ComfyUI超实用SDXL工作流手把手搭建

  • Refined模型
  • SDXL风格化提示词
  • SDXL工作流搭建

img

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

在这里插入图片描述

img

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值