Stable Diffusion ComfyUI 入门介绍

2024年3月22日 1969点热度 0人点赞 1条评论
本文是《Stable Diffusion ComfyUI系列》系列文章中的第1篇,共6篇

ComfyUI Stable Diffusion 的基于节点的用户界面。ComfyUI Comfyanonymous 于 2023 年 1 月创建,用于了解 Stable Diffusion 的工作原理。Stable Diffusion 的创建者 StabilityAI 也使用 ComfyUI 在内部测试 Stable Diffusion。此后,他们还聘请了 Comfyanonymous 来帮助他们开发内部工具。

ComfyUI 简介

ComfyUI 是一个基于节点的界面。基于节点的界面在 3D 设计和 VFX 行业最为常见。如果您使用过 Maya Blender3D 等工具,您可能遇到过它们。在这些接口中,每个节点都执行一些代码。节点有输入(传递给代码的值)和输出(代码返回的值)。

使用鼠标,用户可以:

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

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

ComfyUI 基本界面如下所示:

ComfyUI 与 AUTOMATIC1111

很多 ComfyUI 的新手都是从更简单的界面开始的,比如AUTOMATIC1111InvokeAISD.Next

他们都在想同一件事:为什么要使用如此复杂的工具来做同样的事情?

是的,你可以做同样的事情,但是使用 ComfyUI,你还可以做更多。

极高的可配置性

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

想要同时运行两代来比较采样方法吗?

这是很多人喜欢使用 ComfyUI 的原因。

ComfyUI 让您可以同时做很多事情

想象一下,你对所有图像都遵循类似的过程:首先,生成图像。然后将结果发送到 img2img。最后,对其进行放大。

AUTOMATIC1111 中,您必须手动完成所有这些步骤。

ComfyUI 中,您只需单击一下即可执行所有这些步骤。

这非常适合 SDXL v1.0,它带有 2 个模型和 2 个步骤: 基本模型 用于生成噪声 潜在值,然后用专门用于去噪的细化模型进行处理 。

性能和速度

因为它们是可配置的,所以 ComfyUI 生成可以以 AUTOMATIC1111 生成无法实现的方式进行优化。

这 极大地优化了 速度。与 AUTOMATIC1111 相比,使用 ComfyUI 的生成速度提高了 3-5 倍。

了解 Stable Diffusion 的工作原理

ComfyUI 的设置使得节点能够反映扩散过程的不同部分在底层的工作方式。通过学习如何使用 ComfyUI,您将了解 Stable Diffusion 的实际工作原理!

安装 ComfyUI

从 Github 克隆 (Windows / Linux)

1. NVIDIA GPU

Windows,打开命令提示符(搜索“cmd”)。Linux,打开终端(Ctrl+Alt+T)。

然后逐个运行以下命令:

git cline https://github.com/comfyanonymous/ComfyUI
cd ComfyUI
pip instal 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

2. AMD GPU

Windows,打开命令提示符(搜索“cmd”)。Linux,打开终端(Ctrl+Alt+T)。

然后逐个运行以下命令:

git install 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

如果由于您的 GPU 未得到 ROCm(6700 XT 等)的官方支持而失败,您可以尝试运行以下命令:

HSA_OVERRIDE_GFX_VERSION=10.3.0 python main.py

您现在可以使用以下命令启动 ComfyUI:

python main.py

从 Github 克隆 (Mac)

您可以使用任何最新的 macOS 版本在 Apple Mac 芯片(M1 或 M2)中安装 ComfyUI。

按照 Mac 上的加速 PyTorch 训练 指南安装 pytorch。

打开终端并克隆repo:

git clone https://github.com/comfyanonymous/ComfyUI

安装 ComfyUI 依赖项:

cd ComfyUI
pip install -r requirements.txt

通过运行以下命令启动 ComfyUI:

python main.py --force-fp16

请注意,仅当您安装了最新的 pytorch nightly 时,–force-fp16 才会起作用。

更新 ComfyUI

要更新 ComfyUI,请导航到命令提示符/终端中的 ComfyUI 文件夹并输入:

git pull

ComfyUI 用户界面

节点

您可以通过右键单击空白处 -> 来添加节点 Add Node

您可以双击空白处来获取所有节点的列表和搜索栏:

CTRL + 拖动可选择多个节点。SHIFT + 拖动可同时移动它们。

您可以更改节点的颜色以帮助您保持井然有序。右键单击 -> Color-> 选择颜色:

连接节点

如果您将输入拖放到空白处并释放,您将获得兼容节点的列表:

输入输出只有颜色相同时才兼容。请注意,我可以将紫色输入连接到紫色输出,但无法连接其他任何输入。

执行

当您单击 时Queue Prompt,工作流将按照节点连接的顺序通过节点,从没有输入、只有输出的加载开始。

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

ComfyUI 节点详解

我们如何了解实际发生的情况以便创建和修改工作流程?

为了理解节点,我们必须了解 Stable Diffusion 的工作原理。

让我们看一下默认的工作流程。如果您没有使用默认工作流程,请单击Load Default右侧边栏。

Load Checkpoint 节点

用于生成图像的 checkpoint 模型( .safetensors, .ckpt )有 3 个主要组成部分:

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

在 ComfyUI 工作流程中,这表示为 Load Checkpoint 节点及其 3 个输出(模型指的是 Unet)。

这些输出连接到什么呢?

CLIP Text Encode 节点

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

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

CLIP Text Encode 节点将 Checkpoint CLIP 模型作为输入,将提示( positive negative )作为变量,执行编码过程,并将这些嵌入输出到下一个节点,即采样器 ( KSampler )。

KSampler

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

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

KSampler 接受以下输入:

  • model:来自 Load Checkpoint 节点的 MODEL 输出( Unet
  • positive:来自 CLIP Text Encode 节点的 positive prompt
  • negative:来自 CLIP Text Encode 节点的 negative prompt
  • latent_image:潜在空间中的图像( Empty Latent Image 节点)

由于我们仅从提示( txt2img )生成图像,因此我们使用 Empty Latent Image 节点。

您也可以将实际图像传递给 KSampler 而执行 img2img。我们将在下面讨论这一点。

KSampler 中发生了什么?

扩散是实际产生图像的过程。我们从一个随机信息数组和嵌入(编码的正面和负面提示)开始。

扩散分为多个步骤,每个步骤对信息阵列(也称为潜在信息)进行操作,并产生另一个更类似于提示文本的信息阵列。因此,我们从一个随机信息数组开始,最终得到一个类似于我们所知道的信息数组,并通过 KSampler 输出此信息。但是,它目前还不在像素空间中(我们看不到它),它仍然是一种潜在的表示。

VAE

VAE Decode 节点需要 2 个输入:

  • Checkpoint 模型自带的 VAE(您也可以添加自己的 VAE
  • KSampler 已完成去噪的潜在空间图像( latent space image

VAE 用于将图像从潜在空间转换到像素空间。它将最终的像素图像传递给保存图像节点,用于展示图像并下载。

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

下载模型

为了运行 SDXL,您可能还需要其他几个模型。

您可以先下载 checkpoint 模型,然后根据需要下载其余模型。

Checkpoint

checkpoint 模型放置在文件夹 ComfyUI/models/checkpoints

VAE

VAE 放入文件夹 ComfyUI/models/vae

LoRA

LoRA 放入文件夹ComfyUI/models/loras

Upscaler

Upscaler 可以放大您的图像,将升级器放入文件夹 ComfyUI/models/upscaler

推荐的工作流程

ComfyUI 的一大优点是它可以轻松下载并在工作流程之间切换。

这是官方 ComfyUI 仓库中的示例工作流程列表。

要加载工作流,只需单击 Load 右侧栏上的按钮,然后选择工作流.json文件。

一些工作流程还需要您将项目repo 通过 git clone 到您的ComfyUI/custom_nodes文件夹,然后重新启动 ComfyUI

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

Sytan 的 SDXL 工作流程

SDXL 最受欢迎的工作流程之一。具有升级功能。相关文档

Searge SDXL 工作流程

具有 3 种操作模式(文本转图像、图像转图像和修复),均可从同一工作流程获得,并可通过选项进行切换。相关文档

建议安装:

  • 导航到你的 ComfyUI/custom_nodes/ 目录
  • custom_nodes 目录中打开命令行窗口 
  • 运行 git clone https://github.com/SeargeDP/SeargeSDXL.git
  • 重启 ComfyUI

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

  • haha_6677

    最近也想玩玩这个,先收藏学习了 :smile:

    2024年3月22日
  • 您需要 登录 之后才可以评论