小田:ComfyUI基础教程—小谈
作者:小田
一. 什么是ComfyUI:
应用场景为什么使用(为什么要使用)不可替代性
了解ComfyUI的概念和重要性
首先SD WebUI 的 UI 更像是我们传统使用的产品,有很多输入框,还有多个按钮。而 ComfyUI 的 UI 界面则非常复杂,除了输入框,还有很多一块块的东西,并且还有很多复杂的连线。
的确,从学习成本来看,ComfyUI 的学习成本会比 SD WebUI 高。但是这种连线其实并不复杂,你可以这么理解:
- 这些小的方块跟 SD WebUI 的输入框和按钮是一样的,都是对参数进行配置。
- 连线有点像在搭建一个自动化的工作流,从左到右依次运行。
- 从功能的角度看,其实两个产品截图所提供的功能是一样的,只是 ComfyUI 变成了这种连线的方式。
这种方式有很什么好处了?我们一起来看看这两个用 ComfyUI 搭建的工作流:
对比两个工作流,你会发现它只是有一个节点不一样,一个是直接加载图片,一个是通过画板绘制图片。这样就实现了两个不同的功能(一个是导入图片生图,一个是绘图生图)。这就意味着,你可以通过改变节点的方式来改变工作流,从而实现不同的功能。这样做有两个好处:
- 你可以根据自己的需求搭建适合自己的工作流,而不需要依赖开发者。
- 你也可以根据自己的需求,去开发并改造某个节点。
所以,选择 ComfyUI 最核心的原因就在于它的自由和拓展。那这就意味着你可以自己调整 ComfyUI 从而让它切合你的工作流,甚至改造你的工作流。
在现在这种 AI 发展如此迅猛的时代,我认为保持灵活才是最重要的。
说了这么多,我们来看一下ComfyUI的相关案例
生成四格故事漫画
现在甚至可以生成视频了等等你能想得到的在Comfyui中都可以完成,包括我们看到的写真,表情包,换脸,换装统统只需要一个工作流一键完成。而且这些内容我们在后面的可成都会给大家一一讲解介绍。所以大家都可以学会如何使用
那么如何启动自己搭建一个Comfyui的界面呢?(这部分稍微说一下 2句话带过)
二 . 搭建自己第一个Comfyui
方法一、应用云平台启动器 (适合新手宝宝的体质)
平台名 |
属性 |
邀请链接 |
备注 |
揽睿 |
云平台 |
https://lanrui-ai.com/register?invitation_code=0659 |
WaytoAGI邀请码0659 可以得到10小时的免费时长
|
百度 飞桨 |
云平台 |
https://aistudio.baidu.com/community/app/106043?source=appCenter |
新注册2个小时 点这里登记一下,明天给大家发放50小时的算力 |
阿里云PAI Artlab |
云平台 |
直达地址:https://x.sm.cn/5hd9PfM 注意:登录后右上角领取免费试用,领取500元算力、OSS 20G存储。
|
AI创作你的奥运专属海报 参与PK赢取台式升降桌、Lamy钢笔套盒、双肩包等大奖! 活动地址:https://mp.weixin.qq.com/s/y3Sk5PtVT5g8yFTMJASdFw |
下面以云平台揽睿为例
- 进入「应用启动器」页面,选择「comfyui官方启动器」,点击「部署」按钮,点击「立即创建」,会进入「工作空间」页面;
- 创建完成后稍等片刻,无需其他任何操作,等待「打开应用」按钮可点击后,点击该按钮就可以打开comfyui界面使用啦
- 启动/出图/训练进度
可进入工作空间详情-日志查看
方法二、熟手推荐-自定义创建
1、创建工作空间
进入工作空间,点击自定义创建,按照以下内容配置,点击立即创建(如图所示):
- 镜像:选择lanrui-comfyui镜像;
- 网盘:默认挂载;
- 数据集:默认挂载sd-base;
- 启动方式:默认选择手动启动;
待实例状态由启动中变为运行中后,稍等一会,点击进入JupyterLab,选择terminal终端;
2、启动ComfyUI
进入终端后,请参考这里先配置学术加速
运行如下启动命令后按回车键,等待1分钟左右。(每次启动都需要输入启动命令)
bash /home/user/start.sh
如果想要长时间持续运行任务,请用nonhup启动:
- 启动命令
nohup bash /home/user/start.sh > comfy.log 2>&1 &
- 查看启动/出图进度命令
tail -fn 500 comfy.log
- 停止命令
pkill -9 -f '27777'
当页面显示(如下图所示)“To see the GUI go to: http://0.0.0.0:27777”,说明已启动成功。
3、访问ComfyUI界面
返回工作空间,点击实例右侧的「打开调试地址」到浏览器,就可以使用ComfyUI啦。
三. 掌握基础界面:熟悉ComfyUI的基本界面和操作
Comfyui工作区介绍
工作区介绍
这就是Comfyui最基本的工作区界面,是不是有一点不知所措,其实好好了很简单。我们把他想象成WEB_UI那会是什么样的?
第一我们需要选择一个大模型-->输入正向和反向提示词-->调整采样器,分辨率等常规参数-->点击运行等待图片生成
自习看一下是不是发现也没有那么复杂了,如果还是觉得有点不能理解那我们这样看一下
这样是不是更好理解了一下,好了那接下来我们讲一点理论的知识,其实也很简单。直接看吧
节点名称 |
在 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 了。 |
基础节点介绍
这个方块我在后续会称其为 Node(节点),其左侧端点是 Input(输入)端,右侧是 Output(输出)端,节点里还会有一些配置项,这些配置项我会称其为 Parameter(参数)
Load Checkpoint
Checkpoint 包含了三个部分:MODEL、CLIP 还有 VAE,这三部分其实就是之前介绍的 Stable Diffusion 的模型三大步骤。可以说这个节点是所有 Workflow 的起点。
说到模型这里就提两句
safetensors:这种模型一般用的是 numpy 格式保存,这就意味着它只保存了张量数据,没有任何代码,加载这类文件会更安全和更快。
ckpt:这种文件是序列化过的,这意味着它们可能会包含一些恶意代码,加载这类模型就可能会带来安全风险。
CLIP Text Encode(Prompt)
接着是 CLIP Text Enocode 节点,CLIP 全称是 Contrastive Language-Image Pre-training,即对比文本图像预训练。这个节点主要是输入 Prompt。一般会有两个这样的节点,一个是正向的 Prompt,列你希望在图片中看到的内容;另一个是负向的 Prompt,列你不希望在图片中出现的内容。
Prompt 并不是越长越好,尽量保持在 75 个 token(或约 60 个字)以内。
使用逗号分隔。Stable Diffusion 并不懂语法,所以你需要将画面中的关键词罗列出来,并用逗号分隔。
越重要的词放在靠前的位置。比如你想要生成一张美丽的风景图,那么你可以将 beautiful scenery nature 放在最前面。
Empty Latent Image
然后是空的潜空间图像节点。如果你需要调整最终生成的图片的大小,就需要调整 width(宽)、height(高)这两个值。而 batch_size 则是设置每次运行时生成的图片数量,比如你将这个设置成了 4,就意味着每次会生成 4 张图。
SD1.5 尺寸参考
- 1:1(正方形):512x512、768x768
- 3:2(横向):768x512
- 2:3(纵向):512x768
- 4:3(横向):768x576
- 3:4(纵向):576x768
- 16:9(宽屏):912x512
- 9:16 (竖屏): 512x912
SDXL 尺寸参考
- 1:1(正方形):1024x1024、768x768
- 3:2(横向):1152x768
- 2:3(纵向):768x1152
- 4:3(横向):1152x864
- 3:4(纵向):864x1152
- 16:9(宽屏):1360x768
- 9:16(竖屏):768x1360
最后,需要注意宽度和高度必须能被 8 整除。
KSampler
KSampler,Sampler 中文名称是采样器,如果你想详细了解采样器,可以阅读相关进阶教程,而基础教程只会告诉你如何使用。KSampler 包含以下参数:
seed:这个是随机种子,它主要用于控制潜空间的初始噪声。如果你想重复生成一模一样的图片。就需要用到这个随机种子。需要注意种子和 Prompt 都要相同,才能生成一模一样的图。
control_after_generate:每次生成完图片后,上面的 seed 数字都会变化,而这个配置项,则是设置这个变化规则:randomize(随机)、increment(递增 1)、decrement(递减 1)、fixed(固定)。
step:采样的步数。一般步数越大,效果越好,但也跟使用的模型和采样器有关。
cfg:这个值设置一般设置为 6~8 之间会比较好。
sampler_name:采样器名称。你可以通过这个来设置采样器算法。
scheduler:调度器主要是控制每个步骤中去噪的过程。你可以通过它选择不同的调度算法,有些算法是选择每一步减去相同数量的噪声,有些则是每一步都尽可能去掉多的噪声。
denoise:表示要增加多少初始噪声,1 表示全部。一般文生图你都可以默认将其设置成 1。
Comfyui中的连线
千万不要被这些看似繁琐的连线所困扰,觉得这很难懂。甚至有种拆炸弹的感觉,不知道应该剪红线,还是剪黄线 😂其实这个就跟你拼乐高一样一个个来对好了就可以了,同时也是可以支持多种的自由组合
(等等有小伙伴会问了!老师为什么这上面没有运行按钮呀!)
对了在Comfyui中的运行在你的功能栏里就是“Queue Prompt”就是添加提示词队列。对的点击一下你的第一张从由Comfyui生成的图片就完成了
如果你细看这些连线,会发现这些线和连接点都有对应的颜色,并且还有一些文字说明。简单总结一下连线的规则,懂了这些规则后,连起来基本上不会有问题:
- 同类相连:只有同类才能相互连接起来,比如 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 点连,最后出两张图。
是不是感觉还挺简单的?那么这些功能菜单都是什么意思呢?有同学回问了。
Comfyui 功能区介绍
Save/保存
保存当前的工作流,将我们当前工作区里的内容保存起来,当然也有同学看到过有的工作流是图片新式的,这是因为安装了插件当然揽睿这边很贴心的为我们提供了对应的插件
鼠标在工作区点击右键,下来找到工作流图像选择导出按钮,选择对应的文件导出格式,就可以看到带有工作流信息的图片了
Load/加载
加载相关的工作流,你可以选择对应的工作流
当然这里也可以是图片
Refresh/刷新:
这个就是刷新当前的工作流
ClipSpace/剪贴空间:
剪切板,用于复制迁移图像的一个“剪贴板”
Clear/清除:
清楚工作区内所有的节点
Comfyui常用快捷键介绍
那么上面这些操作有没有快捷方式呢?那必须有呀,这里我就给大家推荐几个常用的Comfyui快捷键,你想知道更多的话我建议你直接去github官方的项目进行查看
Ctrl + 回车:将当前图形排队以进行生成
Ctrl + Shift + Enter:将当前图形排成第一个进行生成
Ctrl + Z:撤销
Ctrl + O:加载工作流
Ctrl + B:绕过选定节点
创建第一个工作流:从零开始搭建你的第一个ComfyUI工作流
好了上面我们说了这么多,接下来我们接下来就自己动手来搭建一下最基本的工作流
我们刚才在上方说到了,搭建一个最基本的文生图的工作流我们需要什么准备什么?
准备加载大模型的节点就是 我们说的load节点
在工作区鼠标右键点击,选择Add Node——>选择loaders——>选择 Load Checkpoint
这里我们需要选择对应的模型,点击Ckpt_name可以可以下拉选择对应的模型
加载Conditioning(条件)这里我们可以理解成正反向提示词
在工作区鼠标右键点击,选择Add Node——>选择Conditioning——>选择CLIP TEXT Encode
这里需要两个框一个正向提示词,一个反向提示词,这里可以随便输入两个框那个都可以,这里如果是相同的节点你可以使用快捷键Ctrl +C 和 Ctrl+V完成节点的复制和粘贴
添加采样器,
这个部分就和WEB_UI我们设置的一样,采样器,迭代步数,CFG这些
这里需要注意的有点不一样的
- seed值这个地方没有-1这么一说只有固定,随机,每次增加,每次减少这四个选项
- 采样器 和 调度器是分开的(这就是你为什么用Comfyui出的图你觉得和web ui比起来还是有一点差距)举个简单的例子我们看到的web ui 中 dpm ++ 2m karras这个其实就是 dpm++ 2M 这个采样器和 karras调度器结合在一起的
其他的参数其实和你看到web ui 里面是一样的没有什么区别
加载Latent,这里主要是设置图片的尺寸还有批次
这里我们可以设置图片的宽高还有批次
这里的设置就和你在web ui里面的设置一模一样
加载VAE
这一步其实就是我们WEB_UI 加载VAE一样的操作
好了到这里之后我们基本必要的节点全部加载完毕,但是我们需要把图片拿出来我们还需要加载一个保存图片的节点
到这里我们所有的节点就全部加载完毕了,这时候我们需要把节点串联起来,具体怎么操作呢?首先我们要清楚节点分为起始节点,最终输出节点还有过程执行节点。
首先checkpoint加载器
- 模型已经选择好了直接使用就可以了
- CLIP就是对应链接我们需要的两个条件(正向提示词/负向提示词)
- VAE直接连接我们对应的VAE
我们就得到了下面这样的连接,这时候我们需要将正向提示词,负向提示词链接到对应的采样器节点
latent这边直接链接我们的空Latent就好了。最终全部节点连接完毕后我们就得到了一个最简单的Comfyui工作流
看到这里也恭喜你了解到了comfyui最基本的节点操作但是这里我还是想告诉你一些内容,Comfyui需要多联系多使用你才可以成为高手~加油吧朋友吧
comfyUI 变现 图片 大家可以多尝试这也是一部分的收益呀