【AIGC】ComfyUI 入门教程(2):从文本生成图像的流程|AI 生成图片

文摘   科技   2024-08-05 08:01   浙江  

ComfyUI 是 Stable Diffusion 的一个基于节点组装绘图流程的图形用户界面(GUI)。通过将不同的节点连接在一起,你可以在 ComfyUI 中构建图像生成工作流。一个完整的工作流看起来像下面这样:

ComfyUI 工作流的样子

我们在上一篇教程中介绍了如何在 Windows 和 macOS 设备上安装 ComfyUI:

接下来,通过示例学习 ComfyUI 是最好的方式。所以,在这一系列的教程中,我们将通过最简单的文本到图像工作流来学习 ComfyUI 中的操作。

同时,我们将介绍一些基本的工作流示例,在研究了这些基本示例之后,你就能理解如何制作自己的工作流了。在本系列教程的最后,你将有机会制作一个相当复杂的工作流。

在开始之前,ComfyUI 有一些常用的基本操作,大家可以记下来:

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

这篇教程我们来继续介绍使用 ComfyUI 从文本生成图像的流程。

经典,对吧?通过这个示例,你还将了解 ComfyUI 的理念(它与 Automatic1111 WebUI 非常不同)。同时,你也将更多地了解 Stable Diffusion 的工作原理。

1、操作 ComfyUI 生成你的第一张图像

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

默认的文本到图像工作流

如果你看到的不是这样,请单击右侧面板上的 Load Default 以返回这个默认的文本到图像工作流。

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

展示出默认工作流后,你将看到工作流是由两个基本模块组成:节点连线

节点是矩形块,例如 Load Checkpoint、Clip Text Encoder 等。每个节点执行一些代码。如果你有一些编程经验,你可以将它们视为函数。每个节点需要三个要素:

  • 输入:左侧连入的连线的文本和点。
  • 输出:左侧连出的连线的文本和点。
  • 参数:块中心的字段。

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

这就是 ComfyUI 的全部理念,其余的都是细节。

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

1.1、选择一个模型

你现在应该处于默认的文本到图像工作流中。

默认的文本到图像工作流

首先,在 Load Checkpoint 节点中选择一个 Stable Diffusion 的 Checkpoint 模型。单击模型名称可以显示可用模型列表。

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

如果单击模型名称没有反应,你可能没有安装模型或配置它以使用你在 Automatic1111 WebUI 中现有的模型。首先返回安装 ComfyUI 教程来解决这个问题。

1.2、输入提示词和负向提示词

提示词和负向提示词

你应该看到两个标记为 CLIP Text Encode (Prompt) 的节点。在顶部的一个中输入你的提示词,在底部的一个中输入你的负向提示词。

CLIP Text Encode 节点首先将提示词转换为 tokens,然后使用文本编码器将它们编码为 embeddings

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

为什么顶部的节点是提示词,而下面的节点上负向提示词?这个可以看 CONDITIONING 这个输出点。顶部节点的 CONDITIONING 输出点连接到了 KSampler 节点的 positive 输入,所以它是提示词;而底部的节点的 CONDITIONING 输出点则连接到 negative,所以它是负面提示。

1.3、生成图像

单击 Queue Prompt 开始运行工作流。稍等片刻后,你应该会看到生成的第一张图像:

生成的图像

2、刚才的过程发生了什么

使用 ComfyUI 的优点是它可以灵活配置,因此,了解每个节点的作用是很值得的,这样你就可以根据需要来配置和使用它们。

如果你对这部分理论知识不感兴趣,可以跳过后面的内容。

2.1、Load Checkpoint 节点

Load Checkpoint 节点

使用 Load Checkpoint 节点选择模型。Stable Diffusion 模型有三个主要部分:

  • 1、MODEL:潜在空间中的噪声预测模型。
  • 2、CLIP:预处理正面和负面提示词的语言模型。
  • 3、VAE:Variational Auto Encoder,在像素和潜在空间之间进行图像转换。

MODEL 这个输出点连接到采样器(sampler),在那里完成反向扩散(降噪)过程。

CLIP 这个输出点连接到提示词(prompts),因为提示词需要通过 CLIP 模型处理后才能使用。

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

2.2、CLIP Text Encode 节点

CLIP Text Encode 节点

CLIP Text Encode 节点获取提示词并将其输入给 CLIP 语言模型。CLIP 是 OpenAI 的语言模型,它会将提示词中的每个单词转换为 embeddings

2.3、Empty Latent Image 节点

Empty Latent Image 节点

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

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

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

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

2.4、KSampler 节点

KSampler 节点

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

KSampler 指的是在 k-diffusion[1] 这个代码库中实现的采样器。

以下是 KSampler 节点中的参数:

  • Seed:种子,随机种子值控制潜在图像的初始噪声,因此,也控制最终图像的组成。
  • Control_after_generation:每次生成后 Seed 应如何改变。它可以是获得一个随机值(randomize)、增加 1(increment)、减少 1(decrement)或保持不变(fixed)。
  • Step:采样步数。数值越高,在数值处理过程中的失真越少。
  • Sampler_name:在这里,你可以设置采样算法。
  • Scheduler:调度器,控制每一步中的噪声水平应如何变化。
  • Denoise:降噪过程中应该去除多少初始噪声。1 表示全部去除。

到这里,我们就介绍完了使用 ComfyUI 默认的文本到图像工作流来生成一幅图像的流程,以及其中涉及到的理论知识。

参考资料

[1]

k-diffusion: https://github.com/crowsonkb/k-diffusion




如果上面的教程对你有帮助,不妨关注一下我们跟进后续的内容:

如果你想快速上手学习 AI 绘画相关的技术,欢迎购买《零基础玩转 Stable Diffusion》这本书:

另外,凡是这本书的读者,请通过下面二维码加我微信,免费加入我们的 AIGC 搞钱社群。

扫码加我


关键帧Keyframe
系统性地探索音视频、AIGC、区块链技术。
 最新文章