comfyui学习记录

补课啊补课

也是难啃的玩意

慢慢玩玩看吧

资料区

先记一下一些学习资料

一些workflow模板和下载网址

学习记录

使用秋叶的包 打了一堆外部节点(

小tips

manager里可以下到常用模型,还可以打快照(节点包的状态啥的,防止装崩了可以恢复)

image-20250610022152707

右键可以看节点导航和清理显存

image-20250610022221021

这里可以方便的开关节点,节点组,还可以导航节点,看节点的编号(解决报错信息有用)

image-20250610022255462

文件保存的通配符

这里是节点名字.参数名字,节点名右键属性看,参数名把参数拉出来就能看到了

image-20250610022315245

打开节点ID和来源的显示

image-20250610023208824

节点模式:设成never就相当于禁用了(不高亮)

紫色的bypass(跳过)

image-20250610023342746

连线样式,隐藏连线

image-20250610023636396

image-20250610023648909

load image节点可以直接粘贴图片进去,然后右键可以编辑遮罩(从mask输出,然后用带遮罩的vae编码器编码,进行inpaint)

image-20250610214339732

这个节点提供了所有提示词框的自动补全

但是需要手动点一下load然后save才能起效

image-20250611024914372

image-20250611024940699

右键查看模型信息的功能,也是这个节点提供的(自动匹配c站信息)

image-20250611025044697

各种字符串相关的功能:合并字符串,字符串追加、替换等,很多节点都有

比如string function、show text、concat啥的

关于a1111和comfy提示词格式

实际上就是对提示词prompt的权重加权计算方式不同,也就是加括号:1.1这种写法产生的结果不一样,comfy的权重会更重一些,所以一些tag如果用的不好会炸掉

可以靠切换到a1111提示词模式来避免

一些快捷键

ctrl+g 给选中的节点新建一个组

按shift拖动连线可以把线移动到别的地方(一组也可以一起移动)

在输出上拖动然后按按住shift松手可以打开搜索节点

在连线中间的小圆点上点左键可以直接增加节点在中间

关于高清修复

怎么在comfy里实现webui一样的高清修复一直没太明白

研究了下应该是这样

image-20250610030451472

就基本上效果一样了

实际上是先一次出图,然后用放大模型放大,再二次重采样(图生图)出来的

所以不是标准的潜空间放大(我没理解错的话)

但是我这里发现 他这个放大倍数好奇怪

0.5实际上是放大两倍。。不理解为什么

后续:我理解了。。这个4x ultrasharp的模型相当于本身就把图像扩大4倍,所以后面要再缩放0.5相当于一共是扩大了2倍。原来如此。webui只是帮你自动处理了这个过程而已。。我完全理解了!

然后这里种子不一样。。得改下 理论上应该是要种子一致的

comfy ui可以统计时间(这个是easy use节点的功能,统计节点时间),发现这个hiresfix比起webui的快好多为啥。。。

关于controlnet和ipadapter

batch图像节点,可以把几个图合并,作为一个controlnet的参考

mtb比较节点,可以输出diff图,仔细看两张图的区别

controlnet的参考图预处理(prepare image)节点可以改变图像裁剪的焦点(ipadapter接收1:1比例的图,所以需要裁剪)

几个预处理器的效果比较

参考图

在comfyui里使用controlnet

一般要分开选预处理器和controlnet两个节点

相当于预处理器先把图像处理成上面的这种输出图的样子,然后塞给controlnet模型

我们常用的那个union模型,也是搭配不同的预处理后的图片可以实现不同效果(当然也可以用独立controlnet模型,一个预处理器对应一种controlnet模型)

这里也更好理解controlnet的机制一点

说起来仔细看comfyui才发现,lora是控制的model和clip(两个都控制,可以分开设置强度),controlnet是控制的正负条件,而ipadapter是控制的model

还是挺有意思的

关于批处理

有两个方法吧

首先我们知道comfy是异步队列的

比如你点两下右上角的启动,或者给批次设置成2然后点启动,结果都是一样

他会根据你的数量加到左边的队列里,然后一个个顺序运行,队列后面的会pending

image-20250612051551472

image-20250612051601076

然后如果我们工作流里没有控制的东西,就点几下或者一个批次(batch)的启动,除了随机种子别的都不会变就跑几次

想要实现批处理就要在流里面加上流程控制

第一个方法就是用batch image节点,他会根据每个batch顺序从文件夹里拿图,在工作流里处理(当然你也可以设置成随机取)

比如很简单我给controlnet的输入load image改成batch image

image-20250612051755212

然后右上角开一个batch的任务(看你想执行多少次)

他就会每张图自动从文件夹里取底图给controlnet处理然后出图,这样可以很简单的实现一个批量垫图

第二个方法是在工作流里用for循环节点,这个看b站讲解吧

我也还没弄明白

是比较灵活高级的方法

关于组和组节点

image-20250612054503382

左上角标是这样的就是组节点

实际上就是把几个节点复合到一起,然后把一些输入输出暴露出来,作为一个复用块,可以方便调用,在节点库里也能找到这样的节点(只有打开了对应工作流才能看到,不是作为自定义节点一直加载的)

image-20250612054632608

右键选这个就能给拆开看到里面是什么结构

image-20250612054714736

这种方块底色的是节点组

image-20250612054757365

用来标识功能区域,方便管理和开关,然后也可以作为一个组一起拖动

在组管理器里也能看到这样的层次结构,可以作为一个组一起启用和禁用

image-20250612054855153

右键添加组就可以创建一个

image-20250612054916520

然后把大小调整好,把节点拖进去就自动加入组里了

也可以改标题和名字

用shift+G可以给选中的节点打一个组一起

然后用rg节点的quick bypass可以加一个控制面板快速开关组

image-20250626041756199

everywhere节点的用法

简单来说就是用来简化复杂的连接线

随便一个节点的输出连接到anything everywhere节点,然后就等于其他所有需要这个类型输入的节点都被连到了这个输出上

比如这里的model,后面所有需要model输入的节点相当于都已经连接到了这里,所以悬空也能使用

image-20250626042056818

当然这样不太灵活,容易乱,所以有下面那个带问号的节点

这个节点可以手动写名字,就只限定固定的(名字)或者(输入属性名)或者(组名)里面的匹配节点才会被连过去,就不会乱了

然后下面那些默认不是输入的控件,也可以用这个来输入,在这里选上需要的输入,就出现一个小绿条,然后就可以用输入名给连接过去了。当然我觉得这功能没有那么方便吧。。。

image-20250626042308739

在空白处点右键show ue links就可以看到具体的连接关系了

image-20250626042400464

自动随机抽卡

研究了下怎么从一个文本文档里随机抽取一行作为提示词

这样可以实现随机抽卡

比如我这有个文档,每行都是一个画师串,随机抽一行

image-20250626042625350

就用这个流就行(上面那个或者下面那个效果一样)

然后用提示词连接把这字符串附加到你的提示词里,就能自动抽卡了

image-20250626042655996

这个流可以随机抽取几行(中间那个节点名字是random prompt。upload你的文本文档,然后改上面的count也就是行数),然后出一个字符串列表,用列表转字符串连到一起,就可以随机抽你想要的几行了(目前没想到怎么用。。但是很有趣)

image-20250626042821594