问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

AI文生图入门:ComfyUI和Comflowy基础操作详解

创作时间:
作者:
@小白创作中心

AI文生图入门:ComfyUI和Comflowy基础操作详解

引用
1
来源
1.
https://www.comflowy.com/zh-CN/basics/comfyui-foundation

本文将详细介绍如何使用ComfyUI和Comflowy进行AI文生图的基础操作。通过学习本章,你将了解各个节点的功能和配置方法,并通过实例和练习掌握基本的操作技巧。

在开始本章之前,请确保你已经完成ComfyUI的安装,并且下载好了Stable Diffusion v1.5或Stable Diffusion XL模型。并将模型文件放到对应的文件夹内。如果你想要使用本章的工作流,可以使用下载使用Comflowy本地版,或者注册使用Comflowy云端版本,里面都内置了本章的工作流。并且如果你使用的是云端版本,你可以直接使用我们内置的模型,无需下载。

默认 Workflow

如果你使用的是Comflowy,打开应用后,你会看到这样的一个界面,如果你使用的是我们的云端版本,应该也是类似的界面。

点击顶部的New workflow(新建工作流)按钮,你会看到这样的一个界面:

你可以点击下方面板的那个Run按钮(下方那个播放按钮)既可以运行AI文生图。最终你会在最右侧的Save Image看到生成的图片。

尝试完文生图后,你可能会很疑惑,这些方块和线都代表什么?

为了方便后续的介绍,我先简单介绍下里面的一个个方块。这个方块我在后续会称其为Node(节点),其左侧端点是Input(输入)端,右侧是Output(输出)端,节点里还会有一些配置项,这些配置项我会称其为Parameter(参数):

然后我们再看回这些节点,其实里面的节点我们在上一章中都有提到过。我稍微调整下里面的顺序,你应该就很熟悉了(图片可以点击放大👇):

现在再看看,这些方块是不是变得似曾相识了?初始Workflow上的这些块块(后续我会用「节点」来称呼这些块块),其实就是前面一章中提到的Stable Diffusion包含的三大组件,只是这些组件在ComfyUI里名字不太一样而已:

节点名称
在SD模型里对应的名称
解释
CLIP Text Encode
Text Encoder
还记得上一章我们提到过Stable Diffusion的Text Encoder用的是CLIP里的Text Encoder吗?其实这个组件和上一章提到的Text Encoder是一个东西。只是说这里有两个,但如果你沿着输出端的连线往下看,你会看到两个节点分别连接positive和negative端,这就意味着它们一个是正向prompt一个代表负向prompt。
KSmapler
Image Information Creator
这个对应的就是我们的最核心的模型生成图片的部分,在ComfyUI里名字差异比较大,且配置项很多,在后续章节我会详细讲解。
Empty Latent Image
Image Information Creator
上一章我们也提到,整个生图过程是在Latent Space里进行,所以在ComfyUI里的这个节点叫Empty Latent Image。
VAE Decoder
Image Decoder
整个生成过程都在Latent Space进行,上一章中我有提到过,该过程全称为Variational Auto Encoder(变分自编码器)简称VAE,所以这个在ComfyUI里就被称为VAE Decoder了。

然后两端各有两个上一章没有提到的东西:

  • Save Image:顾名思义,就是保存输出后的图片。
  • Load Checkpoint:这个你可以理解为图片模型加载器。比如Stable Diffusion就有1.5、XL、XL-Turbo等版本,要切换或载入不同的模型,就需要用到这个节点。

节点介绍

看完整个Workflow后,我们再来详细介绍下每个节点的配置。我们从左往右开始介绍各个节点。

Load Checkpoint

第一个是Load Checkpoint,从节点的右边输出端点可以看出,Checkpoint包含了三个部分:MODEL、CLIP还有VAE,这三部分其实就是之前介绍的Stable Diffusion的模型三大步骤。可以说这个节点是所有Workflow的起点。

点击节点里的选项按钮可以切换模型,这里只能切换你已经下载好的模型,关于如何下载模型可以看对应的章节。

说到模型,我想再强调下,一般你会看到两种后缀的模型:

  • safetensors:这种模型一般用的是numpy格式保存,这就意味着它只保存了张量数据,没有任何代码,加载这类文件会更安全和更快。
  • ckpt:这种文件是序列化过的,这意味着它们可能会包含一些恶意代码,加载这类模型就可能会带来安全风险。

我建议各位优先下载和使用safetensors后缀的模型文件。

另外,你还可能看到有些模型在名字里会标注为fp16,这是什么意思呢?

这个是half-precision floating point format,即半精度浮点格式。这种格式相比标准的32位浮点数,占用的存储空间更小,且运算速度更快。但它生成图片的精度,以及多样性相较完整版会稍微差一些。所以如果你想要更快的得出结果,可以考虑fp16版本的模型。

CLIP Text Encode(Prompt)

接着是CLIP Text Enocode节点,CLIP全称是Contrastive Language-Image Pre-training,即对比文本图像预训练。这个节点主要是输入Prompt。一般会有两个这样的节点,一个是正向的Prompt,列你希望在图片中看到的内容;另一个是负向的Prompt,列你不希望在图片中出现的内容。

一般说来,写Stable Diffusion的prompt有几个原则:

  1. Prompt并不是越长越好,尽量保持在75个token(或约60个字)以内。
  2. 使用逗号分隔。Stable Diffusion并不懂语法,所以你需要将画面中的关键词罗列出来,并用逗号分隔。
  3. 越重要的词放在靠前的位置。比如你想要生成一张美丽的风景图,那么你可以将beautiful scenery nature放在最前面。

另外,还有个小技巧,你可以输入
(keyword:weight)
方式来控制关键词的权重,比如
(hight building: 1.2 )
就意味着hight building的权重变高,如果填写的权重数小于1,则意味着这个词的权重会变低,生成的图与这个词更不相关。

Empty Latent Image

然后是空的潜空间图像节点。如果你需要调整最终生成的图片的大小,就需要调整width(宽)、height(高)这两个值。而batch_size则是设置每次运行时生成的图片数量,比如你将这个设置成了4,就意味着每次会生成4张图。

如果你使用的是SD v1.5模型的话,最优的大小是512x512,部分基于SD v1.5微调的版本也支持768x768。所以其常见宽高比有:

  • 1:1(正方形):512x512、768x768
  • 3:2(横向):768x512
  • 2:3(纵向):512x768
  • 4:3(横向):768x576
  • 3:4(纵向):576x768
  • 16:9(宽屏):912x512
  • 9:16(竖屏): 512x912

如果你使用的是SDXL模型的话,最优的大小是1024x1024,其常见宽高比有:

  • 1:1(正方形):1024x1024、768x768
  • 3:2(横向):1152x768
  • 2:3(纵向):768x1152
  • 4:3(横向):1152x864
  • 3:4(纵向):864x1152
  • 16:9(宽屏):1360x768
  • 9:16(竖屏):768x1360

最后,需要注意宽度和高度必须能被8整除。

💡
你可能会好奇,为何有些模型图片大小设置成512X512,生成的效果会非常诡异(比如两个人头),而有一些模型,比如SDXL默认大小就是1024x1024呢?主要的原因是这些模型在训练的时候,训练的图片大小不同,像SDXL训练用的就是更大的图片。如果拿雕刻做类比的话,这些模型就像是雕刻家,他们需要通过训练学习的方式学会雕刻大理石。而有一些雕刻家在学的时候,用的就是1024x1024的大理石,没有学过2048x2048,所以雕刻大的大理石效果反而不好。

Save Image

完成图片生成后,对着图片点击右键,会看到「Save Image」的选项,点击此按钮就可以下载生成好的图片。节点里的输入框,则是设置图片名称的前缀。比如默认是ComfyUI,那就意味着你保存的图片的文件名是ComfyUI开头,后面跟着一串数字。

KSampler

最后是KSampler,Sampler中文名称是采样器,如果你想详细了解采样器,可以阅读相关进阶教程,而基础教程只会告诉你如何使用。KSampler包含以下参数:

  • seed:这个是随机种子,它主要用于控制潜空间的初始噪声。如果你想重复生成一模一样的图片。就需要用到这个随机种子。需要注意种子和Prompt都要相同,才能生成一模一样的图。举个例子,你可以使用Default Workflow的默认Prompt(beautiful scenery nature glass bottle landscape, purple galaxy bottle),生成一张图片。接着将这个随机种子copy下来比如156680208700286,然后将Prompt里的purple改成green,生成一张新的图片,再将之前复制的种子156680208700286覆盖黏贴到新种子上,然后将Prompt改回原来的purple,重新生成图片。你会发现此时生成的图片与第一次生成的图片是一模一样的。
  • control_after_generate:每次生成完图片后,上面的seed数字都会变化,而这个配置项,则是设置这个变化规则:randomize(随机)、increment(递增1)、decrement(递减1)、fixed(固定)。
  • step:采样的步数。一般步数越大,效果越好,但也跟使用的模型和采样器有关。
  • cfg:全称Classifier Free Guidance,我在SD基础一章中有介绍过,这个值设置一般设置为6~8之间会比较好。
  • sampler_name:采样器名称。你可以通过这个来设置采样器算法。如果你对它感兴趣,可以阅读相关的进阶教程。
  • scheduler:调度器主要是控制每个步骤中去噪的过程。你可以通过它选择不同的调度算法,有些算法是选择每一步减去相同数量的噪声,有些则是每一步都尽可能去掉多的噪声。
  • denoise:表示要增加多少初始噪声,1表示全部。一般文生图你都可以默认将其设置成1。

最佳实践

在各个配置项中,除了模型会影响出图的结果外,其次就是KSampler的几个配置项,进阶教程会分享各个采样器的特点,本章节,就只分享下最佳实践:

需求
checkpoint
sampler_name
scheduler
step
cfg
非常在意速度
SDXL Turbo fp16
dpmpp_2m(有些软件会叫它dpm++2M)
normal 或者使用 Turbo 专用 scheduler
1-2
6-8
非常在意图像质量,同时在意生成图片内容多样性
SDXL refiner
dpmpp_2m(有些软件会叫它dpm++2M)
karras
20-30
6-8
UniPC(相较于dpmpp_2m会更快一些)
karras
20-30
1-2
在意图像质量,不太在意多样性,但想提高生成速度
SDXL refiner fp16
dpmpp_sde
karras
10-15
6-8
ddim
normal
10-15
6-8

补充说明下,KSampler的配置跟模型(checkpoint)比较强相关,比如SDXL-Turbo因为对图片生成过程进行了压缩,其最佳cfg反而不能太大,实验下来,可能1或4最好。另外,你在下载别人的模型的时候,作者一般会在模型介绍中写明最佳的参数配置。你可以按照这个配置去设置参数。

我目前比较常用的是SDXL Turbo,另外使用什么模型还取决于你的做图需求,各位需要根据场景自行斟酌,并且多尝试。

连线

最后,了解完基本的配置后,我们再来看看连线和基本操作。千万不要被这些看似繁琐的连线所困扰,觉得这很难懂。甚至有种拆炸弹的感觉,不知道应该剪红线,还是剪黄线😂

其实这些节点就像是一个个乐高一样,能自由组合的同时,还有一定的规则,我们拿图中连线点最多的KSampler为例:

如果你细看这些连线,会发现这些线和连接点都有对应的颜色,并且还有一些文字说明。简单总结一下连线的规则,懂了这些规则后,连起来基本上不会有问题:

  • 同类相连:只有同类才能相互连接起来,比如KSampler左边的model端点,就只能跟另一个MODEL输出点相连。或者跟具象点说,只有同颜色的端点能相连,如果你将CLIP Text Encode右边橙色的点,连到KSampler的紫色点model上是不可能的。因为他们类型不一样。橙色点只能跟橙色点连。另外,还有一个技巧,当你点击端点并拉出一条线的时候,只有那些能连接的线会高亮出来,不能连的会变暗。
  • 左进右出:比如KSampler左边的model、positive、negative、latent_image都是是输入端,输出端是右边的LATENT。你可以将其理解为一个函数,左边输入数字,右边是输出。那也就意味着你不能将一个节点右边的输出端,连到另一节点右边的输出端。
  • 一进多出:一个输入端只能和另一个节点的输出端相连,没法和多个输出端相连。比如上图中的KSampler的positive端点,只能和一个CLIP Text Encode相连,没法同时连多个。但一个输出端,能和多个输入端相连。还是上面那个例子,一个CLIP Text Encode可以和多个KSampler相连,比如可以和KSampler A的positive端连,也可以和KSampler B的negative点连,最后出两张图。

了解这些规则后,你基本上就不会不知所措了。后面我会介绍更多的案例,你会越来越熟悉这些规则。

练习

简单介绍完基本的连线操作后,我们来完成一个小练习,让你能将这两章的内容融会贯通。

首先,点击右边的Clear按钮,将Default Workflow都清除。

然后从零完成以下目标:将Empty Latent Image转为人能看的图片

提示答案
如果你找不到你想要的节点时,点击右键→Add Node→loader里看看。应该能找到。

Q&A

运行基础workflow时,KSampler报错该怎么办?

完整报错信息:Error occurred when executing KSampler: module 'torch' has no attribute 'mps' This issue is from Discord user123321123.

Answer from Jimmy:看这个报错应该是没有安装最新pytorch导致的。更新下电脑的pytorch版本即可。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号