欢迎来到 ComfyUI 的神奇世界,这是 Stable Diffusion 的一个强大而灵活的图形用户界面。无论你是数字艺术的新手,还是希望将你的图像创作提升到新高度的老手,ComfyUI 都能满足你的需求。在这篇全面的指南中,我们将带你穿越 ComfyUI 的各个功能和工作流程,从基础的文本到图像生成,到更高级的图像修复和风格转换技术。

首先,让我们从 ComfyUI 的安装和基础操作开始,确保你能够顺利启动并运行这个强大的工具。然后,我们将深入探讨如何利用文本提示生成令人惊叹的图像,以及如何通过精细调整参数来优化你的创作过程。随着你对 ComfyUI 的使用越来越熟练,你将发现它不仅仅是一个图像生成器,更是一个能够激发无限创意的画布。

在本指南的后续部分,我们会详细介绍如何使用 ComfyUI 管理器来安装和更新自定义节点,这些节点能够极大地扩展 ComfyUI 的功能。我们还会讨论如何利用 AI 放大器和高分辨率修复技术来提升你的图像质量,以及如何通过 ComfyUI Impact Pack 来增强你的创作体验。


ComfyUI 是什么?

ComfyUI 是 Stable Diffusion 的一个基于节点的图形用户界面(GUI)。通过将不同的块(称为节点)链接在一起,你可以构建图像生成工作流。

安装 ComfyUI

要遵循本指南,你需要一个正常工作的 ComfyUI。请参阅官网进行安装,本文不提供安装方法。

ComfyUI 与 AUTOMATIC1111 的比较

AUTOMATIC1111 是 Stable Diffusion 的事实上的 GUI。你应该使用 ComfyUI 而不是 AUTOMATIC1111 吗?以下是一些比较:

使用 ComfyUI 的好处

  1. 轻量级:它运行得很快。

  2. 灵活:易配置。

  3. 透明:数据流就在你面前。

  4. 易于分享:每个文件都是一个可复现的工作流。

  5. 适合原型设计:使用图形界面而不是编码进行原型设计。

使用 ComfyUI 的缺点

  1. 界面不一致:每个工作流可能会将节点放置在不同的位置。你需要弄清楚要更改什么。

  2. 细节过多:普通用户不需要知道幕后是如何连接的。(这其实就是使用 GUI 的意义)

从哪里开始?

学习 ComfyUI 的最佳方式是通过示例。因此,我们将以最简单的文本到图像工作流为例学习 ComfyUI。我们将通过一些基本的工作流示例来学习。

基本控制

使用鼠标滚轮或双指捏合来放大和缩小。按住输入或输出上的点并拖动以形成连接。你只能在同一类型的输入和输出之间连接。按住鼠标左键并拖动以在工作区移动。按 Ctrl-0(Windows)或 Cmd-0(Mac)显示队列面板。

文本到图像

让我们首先通过最简单的情况:从文本生成图像

经典,对吧?

通过这个示例,你还将了解 ComfyUI 之前的理念(它与 Automatic1111 WebUI 非常不同)。作为一个额外的好处,你将更多地了解 Stable Diffusion 的工作原理!

在 ComfyUI 上生成你的第一张图像

首次启动 ComfyUI 时,你应该看到默认的文本到图像工作流。它应该看起来像这样:

如果这不是你所看到的,请单击右侧面板上的加载默认以返回此默认文本到图像工作流。

如果你没有看到右侧面板,请按 Ctrl-0(Windows)或 Cmd-0(Mac)。

你将看到工作流由两个基本构建块组成:节点边缘

节点是矩形块,例如,加载检查点、Clip 文本编码器等。每个节点执行一些代码。如果你有一些编程经验,你可以将它们视为函数。每个节点需要三件事:

  • 输入是左侧电线进入的文本和点。

  • 输出是右侧电线出去的文本和点。

  • 参数是块中心的字段。

边缘是连接节点之间的输出和输入的电线。

这就是全部的术语哦!其余的都是细节。

不要担心节点上的术语看起来令人生畏。我们将通过一个简单的 ComfyUI 使用示例,介绍一些概念,并逐渐过渡到更复杂的工作流。

以下是您可以使用 ComfyUI 的最简单方式。你应该处于默认工作流

1. 选择一个模型

首先,在加载检查点节点中选择一个 Stable Diffusion 检查点模型。单击模型名称以显示可用模型列表。

如果节点太小,你可以使用鼠标滚轮或在触摸板上用两个手指捏合来放大和缩小。

如果单击模型名称没有反应,你可能没有安装模型或配置它以使用你在 A1111 中现有的模型。请先回到安装指南中解决这个问题。

2. 输入提示和负面提示

你应该看到两个标记为CLIP 文本编码(提示)的节点。在顶部的一个输入你的提示,在底部的一个输入你的负面提示

CLIP 文本编码节点首先将提示转换为标记,然后使用文本编码器将它们编码为嵌入。

你可以使用语法 (关键字:权重) 来控制关键字的权重。例如(关键字:1.2)增加其效果。(关键字:0.8)减少其效果。

为什么顶部的是提示?看看条件输出。它连接到 KSampler 节点的输入。底部的一个连接到的,所以它是负面提示。

3. 生成图像

点击队列提示运行工作流。稍等片刻后,你应该看到生成的第一张图像。

刚刚发生了什么?

使用 ComfyUI 的优点在于它易配置。了解每个节点的功能是值得的,这样你就可以根据需要使用它们。

如果你对理论不感兴趣,可以跳过本节的其余部分。

加载检查点节点

使用加载检查点节点选择一个模型。Stable Diffusion 模型有三个主要部分:

  1. 模型:潜在空间中的噪声预测模型。

  2. CLIP:语言模型预处理正面和负面提示。

  3. VAEV ariational A uto E ncoder 将图像在像素空间和潜在空间之间转换。

模型输出连接到采样器,在那里进行反向扩散过程。

CLIP 输出连接到提示,因为提示需要被 CLIP 模型处理后才能使用。

在文本到图像中,VAE 只在最后一步使用:将图像从潜在空间转换到像素空间。换句话说,我们只使用自动编码器的解码器部分。

CLIP 文本编码

CLIP 文本编码节点获取提示并将其输入 CLIP 语言模型。CLIP 是 OpenAI 的语言模型,将提示中的每个单词转换为嵌入。

空潜在图像

文本到图像的过程从潜在空间中的一个随机图像开始。

潜在图像的大小与像素空间中的实际图像成比例。所以,如果你想改变图像的大小,就改变潜在图像的大小。

你可以设置高度宽度来改变像素空间中的图像大小。

在这里,你还可以设置批量大小,即每次运行生成的图像数量。

KSampler

KSampler 是 Stable Diffusion 图像生成的核心。采样器将一个随机图像去噪成与你的提示匹配的图像。

KSampler 指的是在此代码库中实现的采样器。

以下是 KSampler 节点中的参数:

  • 种子:随机种子值控制潜在图像的初始噪声,因此,它组成了最终的图像。

  • Control_after_generation:每次生成后种子应该如何变化。它可以是获得一个随机值(随机化)、增加 1(递增)、减少 1(递减)或保持不变(固定)。

  • 步数:采样步数。越高,在数值过程中的伪影越少。

  • Sampler_name:在这里,你可以设置采样算法。

  • 调度器:控制每一步中的噪声水平应如何变化。

  • 去噪:去噪过程中应该消除多少初始噪声。1 意味着全部。

图像到图像工作流

图像到图像(Img2img)工作流是 Stable Diffusion 中另一种重要的工作流。它基于提示和输入图像生成图像。你可以调整去噪强度来控制 Stable Diffusion 应该在多大程度上遵循基础图像。

上传你想要的原始图像到图像工作流,将此工作流图像拖放到 ComfyUI 中以加载。

要使用 img2img 工作流,请执行以下操作:

  1. 选择检查点模型

  2. 修订正面和负面提示

  3. 可选地,在 KSampler 节点中调整去噪(去噪强度)。

  4. 按 Queue Prompt 开始生成。

ComfyUI 管理器

ComfyUI 管理器是一个自定义节点,允许你通过 ComfyUI 界面安装和更新其他自定义节点。

在 Windows 上安装 ComfyUI 管理器

在文件资源管理器应用中,导航至文件夹 ComfyUI_windows_portable > ComfyUI > custom_nodes

在地址栏中,输入 cmd 并按 Enter。

应该会弹出命令提示符终端。

输入以下命令并按 Enter:

git clone https://github.com/ltdrdata/ComfyUI-Manager

等待其完成。

重新启动 ComfyUI。你应该在浮动面板上看到新的 管理器 按钮。

提示:如果 ComfyUI 管理器没有显示出来,请阅读终端中的错误消息。

在 Mac 上安装 ComfyUI 管理器

要安装 ComfyUI 管理器,请转到自定义节点文件夹,在 Terminal(Mac)应用中运行:

cd ComfyUI/custom_nodes

然后克隆节点到你的本地存储:

git clone https://github.com/ltdrdata/ComfyUI-Manager

完全重启 ComfyUI。

使用 ComfyUI 管理器

安装完成后,你应该在队列提示菜单上看到一个额外的 管理器 按钮。

如果看不到,请单击它,会显示一个 GUI,让你可以:

  • 安装/卸载自定义节点。

  • 在当前工作流中安装缺失的节点。

  • 安装模型,如检查点模型、AI放大器、VAEs、LoRA、ControlNet 模型等。

  • 更新 ComfyUI UI。

  • 阅读社区手册。安装缺失节点 功能对于查找当前工作流所需的自定义节点特别有用。

安装自定义节点 菜单让你可以管理自定义节点。你可以卸载或禁用已安装的节点,或安装一个新的。

如何安装缺失的自定义节点

你可能没有在工作流中安装所有需要的自定义节点。加载工作流文件后,执行以下步骤以安装缺失的自定义节点:

  1. 点击菜单中的 管理器

  2. 点击 安装缺失的自定义节点

  3. 完全重启 ComfyUI。

ComfyUI 更新所有

更新 ComfyUI 的最简单方法是点击 ComfyUI 管理器中的 更新所有 按钮。它将更新 ComfyUI 本身和所有已安装的自定义节点。重启 ComfyUI 以完成更新。

如果你想独立更新 ComfyUI 或自定义节点,请按照以下更新步骤操作。

如何更新 ComfyUI

要更新 ComfyUI:

  1. 点击菜单中的 管理器

  2. 点击 更新 ComfyUI

  3. 完全重启 ComfyUI。

如何更新自定义节点

你可以使用 ComfyUI 管理器更新自定义节点。

  1. 点击菜单中的 管理器

  2. 点击 获取更新。可能需要一段时间才能完成。

  3. 点击 安装自定义节点

  4. 如果有更新可用,已安装的自定义节点旁边将出现一个新的 更新 按钮。

  5. 点击 更新 以更新节点。

  6. 重启 ComfyUI。

  7. 如果此更新过程不起作用,你将需要使用终端,如 PowerShell 应用(Windows)或 Terminal 应用(Mac),执行 git pull。

  8. 打开终端。

  9. 转到自定义节点的目录。以下是进入 controlnet aux 目录的示例。

    cd ComfyUI/custom_nodes/comfyui_controlnet_aux/
    
  10. 执行 git pull。

    git pull
    
  11. 重启 ComfyUI。

搜索自定义节点

添加节点 菜单可能不是查找自定义节点的最佳方式。在你安装许多自定义节点后,事情只会变得更加困难。

你可以通过双击任何空白区域来调出菜单搜索节点。

提升

在 Stable Diffusion 中有几种提升方式。接下来,我们将通过以下方式进行提升:

  1. 使用 AI 提升器

  2. 高分辨率修复

  3. 终极提升

AI 提升

AI 提升器是一个用于放大图像并填充细节的 AI 模型。它们不是 Stable Diffusion 模型,而是为放大图像而训练的神经网络。

将你想要提升的图像,拖放到 ComfyUI。

提示:拖放用 ComfyUI 制作的图像将加载生成它的工作流。

在这个基本示例中,你看到对文本到图像的唯一补充是:

  • 加载提升模型:这是用于加载 AI 提升器模型的。(此节点在添加节点 > 加载器中)

  • 使用模型提升图像:该节点现在位于 VAE 解码器和保存图像节点之间。它获取图像和提升器模型,并输出一个放大的图像。(此节点在添加节点 > 图像 > 提升中)

要使用此提升器工作流,你必须从提升器 Wiki 下载一个提升器模型,并将其放入 models > upscale_models 文件夹中。

或者,设置 ComfyUI 使用 AUTOMATIC1111 的模型文件。

选择一个提升器 并点击 队列提示 以生成放大的图像。根据使用的upscale模型,图像这里应该已经被 AI 提升器放大了 4 倍。

练习:从文本到图像重建 AI 提升器工作流

制作你的第一个自定义工作流,通过向默认文本到图像工作流添加一个提升器,这是一个好的练习。

  1. 通过点击 加载默认 返回基本文本到图像工作流。

  2. 在保存图像附近右键单击一个空白区域。选择添加节点 > 加载器 > 加载提升模型。

  3. 点击 VAE 解码 和 保存图像 之间电线上的点。点击 删除 以删除电线。

  4. 在空白区域右键单击,并选择添加节点 > 图像 > 提升 > 使用模型提升图像,以添加新节点。

  5. 拖放 加载提升模型 的 UPSCALE_MODEL 输出。将其放置在 使用模型提升图像 节点的 upscale_model 上。

  6. 拖放 VAE 解码 的 IMAGE 输出。将其放置在 使用模型提升图像 的 image 输入上。

  7. 拖放 使用模型提升图像 节点的 IMAGE 输出。将其放置在 保存图像 的 images 输入上。

  8. 点击 队列提示 测试工作流。

现在你知道如何制作一个新的工作流了。这个技能在制作你自己的工作流时非常有用,和吃瓜估计没什么区别吧。

高分辨率修复

这里我们拿官方的举例,现在下载此页面(https://comfyanonymous.github.io/ComfyUI_examples/2_pass_txt2img/ ) 上的第一张图像并将其放入 ComfyUI 中以加载高分辨率修复工作流。

这是一个更复杂的例子,但也展示了 ComfyUI 的强大功能。在研究节点和边缘之后,你将确切地知道高分辨率修复是什么吧。

第一部分与文本到图像相同:你使用采样器去噪潜在图像,并用正面和负面提示进行条件化。

然后工作流在潜在空间中放大图像,并执行一些额外的采样步骤。它向图像添加了一些初始噪声,并以一定的去噪强度去噪。

然后 VAE 解码器解码将以更大的潜在图像来产生放大的图像。

SD 终极提升 - ComfyUI 版

SD 终极提升是 AUTOMATIC1111 WebUI 的一个流行的提升扩展。你也可以在 ComfyUI 上使用它!

安装 SD 终极提升节点

要安装此自定义节点,请转到自定义节点文件夹,在 PowerShell(Windows)或 Terminal(Mac)应用中:

cd ComfyUI/custom_nodes

并克隆节点到你的本地存储。

git clone https://github.com/ssitu/ComfyUI_UltimateSDUpscale --recursive

完全重启 ComfyUI。

使用 SD 终极提升

从 AI 提升器工作流开始,添加 SD 终极提升并比较结果。

通过将图像拖放到 ComfyUI 或使用加载按钮加载来加载 AI 提升器工作流。

右键单击一个空白区域。选择 添加节点 > 图像 > 提升 > 终极 SD 提升

你应该看到新的节点终极 SD 提升。按照以下方式连接其输入:

  • image 到 VAE 解码的 IMAGE

  • model 到加载检查点的 MODEL

  • positive 到正面提示框的 CONDITIONING

  • negative 到负面提示框的 CONDITIONING

  • vae 到加载检查点的 VAE

  • upscale_model 到加载提升模型的 UPSCALE_MODEL

对于输出:

  • IMAGE 到保存图像的 images。如果连接正确,点击 队列提示 应该会显示两张大图像,一张使用 AI 提升器,另一张使用终极提升。

ComfyUI 修复

你可以使用 ComfyUI 进行修复。这是重新生成图像部分的基本技术。

我必须承认,使用 ComfyUI 进行修复不是最容易的事情。但这就是...

第 1 步:打开修复工作流

和前面示例一样,打开工作流窗口。

第 2 步:上传图像

选择你想要修复的图像。

将其上传到工作流中。

第 3 步:创建修复遮罩

右键单击图像。在上下文菜单中选择 在 MaskEditor 中打开

遮罩你想要重新生成的区域。

点击 保存到节点

第 4 步:调整参数

选择一个检查点模型。注意,修复模型适用于此工作流。

更改 提示

一个戴着太阳镜的男人,史诗风格,超级英雄,高度详细

原始的去噪强度(去噪)太高了。将其设置为 0.6。

第 5 步:生成修复

最后,按 队列提示 执行修复。

SDXL 工作流

简单的 SDXL 工作流。

由于其极端的可配置性,ComfyUI 是最早使 Stable Diffusion XL 模型工作的 GUI 之一。

你将需要更改:

  • 正面提示

  • 负面提示

就这样!

你还可以在网上找一些更复杂的 SDXL 工作流。

ComfyUI Impact Pack

ComfyUI Impact pack 是一包免费的自定义节点,大大增强了 ComfyUI 的功能。

Impact Pact 中有更多的自定义节点,我无法在本文中一一介绍。请参阅官方教程逐个学习它们。如果你想有效使用这组节点,请阅读初学者教程。

安装

要安装 ComfyUI Impact Pack,请首先打开 PowerShell 应用(Windows)或 Terminal 应用(Mac 或 Linux)。

cd custom_nodes

克隆 Impact Pack 到你的本地存储。

git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack.git

克隆 Impact Pack 所需的工作流组件。

git clone https://github.com/ltdrdata/ComfyUI-Workflow-Component

完全重启 ComfyUI。

使用 Face Detailer (SDXL) 重新生成面部

ADetailer 是一个 AUTOMATIC1111 扩展,使用自动修复功能修复面部。ComfyUI 中的对应功能是 Face Detailer(也称为 DDetailer)。它包含在 Impact Pack 中。

你可以使用 Impact Pack 中的工作流,使用 Face Detailer 自定义节点和 SDXL 基础及细化模型重新生成面部。你将需要设置:

  • 加载图像 节点中的初始图像。

  • 上部 加载检查点 节点中的 SDXL 基础模型。

  • 下部 加载检查点 节点中的 SDXL 细化模型。

  • 新图像的 提示 和 负面 提示。

点击 队列提示 启动工作流。

刘德华的面部不需要任何修复(不是吗?)。所以我使用了一个提示将他变成一个 K-pop 明星。

一个韩国 K-pop 男明星的特写照片

只有面部发生了变化,而背景和其他所有东西都保持不变。

使用 Face Detailer (SD v1.5) 重新生成面部

以下是使用 Face Detailer 自动修复面部的文本到图像工作流的示例。ControlNet 提供了额外的一致性,通过遵循原始内容。以下是一个使用 Face Detailer 和 ControlNet Tile 的文本到图像工作流的示例。

嵌入

要在 ComfyUI 中使用嵌入(也称为 文本反演),请在正面或负面提示框中输入 embedding:。例如:

embedding: BadDream

ComfyUI 将在 ComfyUI > models > embeddings 文件夹中搜索具有相同文件名的嵌入。

嵌入自动完成

但是查找文件名是一项很多工作。相反,你可以通过安装 ComfyUI-Custom-Scripts 自定义节点来启用嵌入名称的自动完成。

你可以通过使用 ComfyUI 管理器来安装它。点击管理器 > 安装自定义节点。搜索 “ComfyUI-Custom-Scripts” 并安装它。重新启动 ComfyUI。

在提示中输入 embedding: 后,应该会显示一个可用嵌入的列表。选择你想要使用的那一个。

嵌入权重

由于嵌入只是关键词,你可以像关键词一样对嵌入应用关键词权重。

(embedding: BadDream:1.2)

这将增加嵌入权重的 20%。

LoRA

LoRA 是一个小模型文件,修改了检查点模型。它经常用于修改风格或将人物注入模型。

实际上,LoRA 的修改在 ComfyUI 中是很清晰的:

LoRA 模型更改了检查点模型的 MODEL 和 CLIP,但未触及 VAE。

简单的 LoRA 工作流

这是可能的最简单的 LoRA 工作流:带有 LoRA 和检查点模型的文本到图像。

可以这样使用此工作流:

  1. 选择一个检查点模型。

  2. 选择一个 LoRA。

  3. 修改提示和负面提示。

  4. 点击 队列提示

多个 LoRAs

你可以在同一个文本到图像工作流中使用两个 LoRAs。使用方式类似于一个 LoRA,但现在你必须选择两个。这样两个 LoRAs 一个接一个地应用。

连接两个字符串

要连接两个字符串,你将使用一个名为 String Function 的节点,来自 ComfyUI-Custom-Scripts 自定义节点。

你应该已经安装了这个自定义节点以启用文本反演的自动完成。如果没有,请在 ComfyUI 管理器中安装它。

双击空白区域。搜索并添加 StringFunction 节点。

将第一个文本框(text_a)通过右键单击节点并选择 将 text_a 转换为输入 转换为输入。现在,节点应该看起来像这样:

添加一个 原始节点 并将其连接到 text_a 输入。现在,你可以在两个不同的文本框中编写提示。它们将被连接在一起。

要使用它,你将需要将 CLIP 文本编码(提示) 的文本框转换为输入。

最后,连接 String Function 和 CLIP 文本编码(提示)节点。

ComfyUI 的快捷方式和技巧

复制和粘贴

选择一个节点并按 Ctrl+C 复制。

按 Ctrl+V 粘贴。

按 Ctrl+Shift+V 粘贴并保持输入连接。

移动多个节点

创建一个  以一起移动一组节点。

或者,按住 Ctrl 并拖动以创建一个框以选择多个节点。你也可以按住 Ctrl 选择多个节点。

要移动它们,按住 Shift 并移动鼠标。

静音一个节点

你可以通过 静音 它来临时禁用一个节点。选择一个节点并按 Ctrl+M 来静音一个节点。

当然,这里没有键盘快捷键来静音一个组。你可以选择右键菜单中的 绕过组节点 来绕过它。或者静音组中的第一个节点以禁用它。

最小化一个节点

点击节点左上角的点可以最小化它。

生成图像

按 Ctrl+Enter 将工作流放入队列并生成图像。

嵌入式工作流

ComfyUI 将整个工作流保存在它保存的 PNG 文件的元数据中。要加载工作流,请将图像拖放到 ComfyUI。

固定种子以节省时间

ComfyUI 只有在输入发生变化时才会重新运行一个节点。如果你正在处理一长串节点,你可以通过固定种子来节省重新生成上游结果的时间。

练习:制作一个比较有无 LoRA 的工作流

要精通 ComfyUI,你真的需要制作自己的工作流。

创建一个比较有无 LoRA 的文本到图像的工作流,同时保持其他所有内容相同,是一个不错的练习。为了实现这一点,你需要知道如何在两个节点之间共享参数。

在两个节点之间共享参数

让我们在两个 K-Samplers 中使用相同的种子。

它们各自有自己的种子值。要在两者之间使用相同的种子值,右键单击节点并选择 将种子转换为输入

你应该得到一个新的输入节点叫做 seed

右键单击空白区域。选择 添加节点 > 实用工具 > 原始。将原始节点连接到两个种子输入。

现在,你有一个单一的种子值在两个采样器之间共享。

比较有无 LoRA 的图像的工作流

仅使用这种技术,你可以修改单个 LoRA 示例,以制作一个比较 LoRA 效果的工作流,同时保持其他所有内容相同。

比较 Epilson 偏移 LoRA 的效果。上图:有 LoRA。下图:无 LoRA。

有用的资源

官方 ComfyUI 教程(https://comfyanonymous.github.io/ComfyUI_tutorial_vn/) - 一个非常基础的图形教程。

ComfyUI 示例(https://comfyanonymous.github.io/ComfyUI_examples/) - 你可以下载的一堆示例工作流。

ComfyUI 社区手册(https://blenderneko.github.io/ComfyUI-docs/) - 一个参考手册。

Logo

为开发者提供按需使用的算力基础设施。

更多推荐