之前零星的接触过Ai绘画,在SD上进行学习,从今年四月份开始接触Comfyui,看到了它的潜力巨大,决心认真研究一番,快30岁了,看看自己对新知识的接受程度;
现在相关节点插件更新太快了,有些跟不上迭代进度,再者,前前后后看了很多教程,脑海里的东西乱成一团,需要整理归纳一下,温故知新,夯实基础。
下文中部分语言表达不专业(我是按照自己的理解来的),欢迎请批评指正!
【1】三阶放大工作流
三阶放大工作流
整个流程就是文生图的流程,在文本编辑这里引入CLIP文本编辑器,把中文翻译为英文,方便我们撰写提示词,这里还用到一个节点来实现字符串的拼接,省去在进行翻译粘贴的功夫。
CLIP文本编码器(Argos翻译)及Pythongossss节点的字符串合并
三阶放大指的是哪三阶呢?第一,latent缩放(分为按系数缩放和缩放至指定大小),无论图像与latent的编解码还是latent的放大,都对图像信息有损失,所以在放大完成后还会连接K采样器,这时denoise可适当调低,0.5-0.68即可。
1.latent按系数缩放
第二,SD放大,这里降噪幅度或者说加噪在0.2左右即可,这步是整个放大过程最耗时的,节点需要把图片按照分块一一放大。
2.SD放大(Ultimate SD Upscale)
第三就是模型放大,右键新建节点》图像》放大》图像通过模型放大,将SD的输出图像直接导入如下节点
3.通过模型放大
这里选择的模型放大倍数为4倍,很容易得到8K分辨率的图像,所以前面几个节点的放大倍数记得改小一点。
【2】更换背景+人物脸部替换。
这个工作流我在学习过程中对原作者的内容进行了整理
简介:输入图片A(主体)、图片B(背景)、图片C(脸部参考)、遮罩D(换脸遮罩)这四项来实现主体背景更换及人物换脸。
工作流一览,像不像一把AK
这个工作流来源如下,在此基础上做了部分组件的修改,整体页面布局更改等
Comfy Workflowscomfyworkflows.com/
输入主体图A及背景B
先从我区域1进行分析,也是最简单的一块
区域1.提示词及风格设置
这里用到的节点①SDXL风格化提示词,现在有更好的工具来做替代 Easyuse节点中的风格提示词,更全面更好用。②WD14反推提示词节点,置信度默认0.35,数值越大,所反推的内容越少,现在也有其他节点可以替代了,文本链接后已字符串形式传入正向提示词文本编码器中。
[基础操作1]这里在正向提示词CLIP文本编码器上右键,convert Widget to input>转换 文本 为输入,这样字符串就可以通过连线导入
转换 文本 为输入
这里还有一个操作[基础操作2]设置节点和获取节点,减少杂乱无章的飞线
设置节点
①在空白处双击,在弹出的对话框中选择设置节点,我认为这里翻译为端口可能更加恰当;②给这个端口起一个名字,③链接输出端口;三步之后在任意区域新建 获取节点 后下拉菜单选择节点名称即可完成引用。
获取节点
区域2.1 主图缩放及抠图
区域2.2蒙版生成
如同区域2的名称,这部分是实现蒙版制作这个功能的。这里面的节点有很多,我试着把重要的部分节点解释一下
区域2.1 关键节点1图像缩放 Essentials 插件下的节点
这里的目的是统一后续图像信息的尺寸,设定宽高,注意这里的条件对应的always选项,它的意义就是如果图像小于这个尺寸,则放大到设定尺寸,反之亦然。缩放的前提是固定图片比例,统一到尽可能大的尺寸。我输入的主体图片大小为1152*1824,高/宽=1.583,裁剪后为满足1.583比例,高取768,宽度只有485【注意,这里的宽高最好大于图片宽高,以防止后续蒙版计算错误】
区域2.1 关键节点2 任意切换 rgthree插件下的节点
这里先判断输入_01端口是否有信号(即我们是否人工导入一张遮罩图片),如果01没有则选择02的内
区域2.1 关键节点3 遮罩混合
遮罩混合模式选择相减(subtract),即白色为100,黑色为0,使用源遮罩减去目标遮罩;
区域2.2 关键节点4 移除背景 WAS Node Suite插件
不得不说,抠出人物的效果还不错,后续衔接几个蒙版扩展羽化,较好的实现主体蒙版制作;
区域3.CN-Inpaint,即使用contronet控制局部重绘的效果,这个节点对从conditioning进行加工,即告诉comfyUI需要重绘的区域是哪个部分。
区域3 局部重绘
目前comfyUI应该有很多局部重绘的方法,这里先学习一下CN控制重绘;这个节点中需要注意的是将提取出来的人物主体遮罩进行翻转,这样白色区域即为背景(重绘区域),在contronet加载器中使用inpaint模型;这个区域还涉及到对于强度的统一控制,通过简易运算控制多个CN的强度。
区域4-5脸部蒙版、手部蒙版生成
区域4 脸部蒙版
区域5 手部蒙版
生成蒙版使用seg分别检测面部和手部,很好理解。拓展一点内容,入下图在已有流程后加入CN去控制进行局部细化,可以实现手部或者面部修复
拓展1 配合CN进行面部修复
获得我们想要的面部和手部遮罩后,我们在CN中进行加工,进一步提升对手部和面部的指引(这是我的理解,即告诉comfyUI这是脸,这是手,是重点后面要考),这部分节点为区域6和区域7
区域6 CN对面部进行加强
区域7 CN对手部进行加强
使用inpaint告诉comfyUI这个脸需要换掉,由于原图是不存在手部的,所以检测出的遮罩为一片黑。紧接着我们进一步对图像画面进行约束,还是对conditioning进行加工,这里涉及到Openpose和Lineart对人物形象进行约束
区域8 CN-对人物姿势进行加强
区域9 CN-对人物形象进行加强
对人物控制这两个CN基本上是必不可少了,基操。为了更好的实现人物与背景的融合,继续使用CN-depth深度图来控制人物和背景的空间关系,
区域10 CN-depth生成深度图
区域11 对深度图进行加工
这里原作者贴心的提供了渐变生成来进一步提高主体与背景之间的空间融合关系,太棒了!区域6-11是对conditioning(条件)进行修饰整理,在进入采样器前,我们还需要对模型空间进行修饰。使用IPAdapter进行风格迁移
区域12 使用IPAdapter进行风格迁移
IPAdapter是必须要掌握的节点,太多工作流都用到了这个节点,这里我推荐教程大家可以学习一下
要是早点看到这个教程就好了,一个好的教程真的帮助很大!自注意力引导这个节点不太懂,后续了解后再来更新。
完成conditioning和model“初步修饰”后我们进入采样器进行第一次计算
区域13 初步生成图像
初步生成的图像基本上实现换背景效果,后续对图像再进行深入加工放大。
区域14 使用KSampler进行二次采样
区域15 使用CN对二次采样进行控制
区域14 首先对潜空间latent进行两倍放大,这里使用CN-Tile对图像进行控制,CN控制传递的管道始终是conditioning。这里控制强度给到0.6,开始位置0结束位置0.85给予一定的自由发挥空间。
区域16 面部迁移(换脸)
区域16 关键节点1 IPAdapterFaceID 与图像切换
使用IPAdapterFaceID进行面部替换,这里图像切换是由输入的数值控制,输入1则选择图像1(原图),输入2则选中图像2(换脸图)。我们选择2将要换脸的图像highlight,进一步对“模型空间”(或者说模型管道进行修饰指引)进而传入第三次K采样器中进行面部替换
区域17 第三次K采样
区域18 CN tile 控制图片进行放大
第三次采样,同时需要CN进行控制,采样器降噪(重绘幅度)0.68,CN的强度也适当降低。采样后输入的图片并没有想象中完成换脸(尽管部分信息已输入进model中,这点存疑后续解决);真正的换脸在下一步面部修复中
区域 19 面部修复
从这一节点输出的细化部分预览可以得知,通过面部细化这一节点实现换脸;按照我的理解就是将先前对conditioning及Model的加工提示进行具象化处理,原有的信息已经赋予到潜空间中,需要这个节点进行对应的展现。
区域20 高清放大
换脸后的图像进行模型放大,得到我们的效果图,这里任意切换节点值得学习,从上到下取值,这个节点是为了规避部分组停用后未能输出图像而设置的,在从01-05输入的分别为 手部修饰后图像、面部修饰后图像、第三次采样后、第二次采样后、第一次采样后(即从流程的后面图像向前面图像挂载)
图像对比
这里对初始图像和最终换背景换脸后效果进行查看,由于选择的脸型是个男士,按照原有脸型进行修饰,背景也进行了替换,存在一个严重的问题原有背景图像过小导致部分区域背景没有替换掉,底部还存在类似沙发一样的物体存在,这一问题主要是CN-depth对于原有空间的识别所导致的。要想实现较好的换背景效果,素材的主体要和背景相融合,这样不会出现较多的违和感
为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。
由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取
一、ComfyUI配置指南
-
报错指南
-
环境配置
-
脚本更新
-
后记
-
.......
二、ComfyUI基础入门
-
软件安装篇
-
插件安装篇
-
......
三、 ComfyUI工作流节点/底层逻辑详解
-
ComfyUI 基础概念理解
-
Stable diffusion 工作原理
-
工作流底层逻辑
-
必备插件补全
-
......
四、ComfyUI节点技巧进阶/多模型串联
-
节点进阶详解
-
提词技巧精通
-
多模型节点串联
-
......
五、ComfyUI遮罩修改重绘/Inpenting模块详解
-
图像分辨率
-
姿势
-
......
六、ComfyUI超实用SDXL工作流手把手搭建
-
Refined模型
-
SDXL风格化提示词
-
SDXL工作流搭建
-
......
由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取
【小结】
整体来说可以分为4个管线,管线1-conditioning(条件)、管线2-model、管线3-mask、管线4-采样器与面部细化;管线1挂载的如开头所述的CILP风格、提示词反推、CN组,对conditioning进行修饰约束;管线2-则为IPAapter、IPAapterFaceID对model空间进行约束;管线3是通过对mask的加工,从而对各部分功能所实现的区域进行有效控制,mask的有效调用也是重点;管线4则是采样器为主的操作加工区,这条路对潜空间(或者说其他节点给予的提示)进行可视化转化