大家好,我是三石。
今天给大家带来的是 ComfyUI 的局部重绘的工作流,跟之前一样,我会通过一些理论知识来帮助大家对 ComfyUI 的工作流和节点有更深的认知,还是那句话,知其然,还要知其所以然。
相关教程:
为什么要写局部重绘,是因为我发现虽然市面上有很多 ComfyUI 的基础局部重绘的教程,我也看了很多,但老有一种隔靴搔痒的感觉,让我似懂非懂。
抱着“假设-验证-结果-总结”的探索精神,我看了大量相关的视频,教程和官方文档,终于把ComfyUI 的局部重绘的基础工作流给整明白的七七八八了,现在就开始吧。
本期是 ComfyUI 的入门级局部重新绘制的讲解,如果大家喜欢,我后面会再写一些高级的局部重绘的教程,但是,我们先从简单的讲起,简单的原理搞明白了,复杂的东西也就一通百通了,本质都差不多。
我总结了基础局部重绘的三种方法,分别是:VAE 内补编码器、设置 Latent 噪波遮罩和使用 ControlNet(重点讲解)
首先声明,这三种方法,没有优劣之分,用哪种要看具体的需求,我先简单列出这三种方法各自的使用场景,后面我们再用例子来补充说明。
一、理解局部重绘的基础概念
现在正式进入主题,要想理解局部重绘,我们需要首先理解“局部是怎么重绘的”?,如果大家之前学过 photoshop,就能很好地理解了,其实就是“蒙版”。
只不过是现在把这个手动的过程换到 ComfyUI 变成一个自动的过程了,我通过笔刷把需要改图的区域画出来,其余的地方(背景和周边的地面)保持不变,然后在蒙版区域画只猫,看下图:
二、局部重绘的蒙版处理方式
理解了局部重绘的基础概念,我们还需要理解下蒙版的处理方式,简单说就是蒙版里面的图是怎么生成的,官方用语是:通过采样重绘蒙版区域。
蒙版的采样不仅受蒙版区域内原图的影响(遮罩处理方式),也受蒙版区域外原图的影响(重绘区域)。结合 webui 大家看图:
在上图的基础上,我罗列了常见的 2 种搭配方式,分别是:
- 重绘区域参考(全图)+蒙版蒙住内容(空白潜空间)
- 重绘区域参考(全图)+蒙版蒙住内容(原图)
这两种方案分别对应了两种组最简单的局部重绘的方法:
- VAE 内补编码器
- 设置 Latent 噪波遮罩
- 这两种修改办法我简称为“大补和小补”
另外一种局部绘制的方法是 ControlNet,跟上面两种不一样,ControlNet 是严格控制蒙版内容的"框架",然后基于框架生成类似的画面,我们可以对比下面三张图:
三、三种局部重绘的工作流和案例
理解了上面的概念,我们就可以来有的放矢地搭建我们的工作流了,这里我还是想通过一些简单的例子和对比来帮助大家更好地区别。
1. 理解降噪和重绘幅度
图生图工作流如下:
原理是先将本地上传的图片解码成计算机能识别的语言(添加噪点),然后结合 Prompt,综合得到一张新的图片,简单地说就是生成的新图片是“图+字”的综合体。这里有个关键就是“降噪(denoise)”,简单理解就是“重绘幅度”,数值在 0-1 之间,数值越大,重绘幅度越高,直至完全偏离原图,数值越低,越接近原图,至于为什么是这个原理,为了方便大家理解,我画了张图,如下:
理解了这个之后,我们就可以开始搭建我们的重绘工作流了。
2. VAE 内补编码器局部重绘
本次实验的底模和 clip 文本编码器如下:
在这之前,先上传一张需要重绘的照片,然后画上蒙版,最后点击“save to node”,如下图:
然后我们需要对蒙版进行编码,将蒙版和图像一起上传到“VAE 内补编码器”中,这种重绘方式的原理是蒙版区域为空白潜空间,生成的图像跟之前蒙版的内容没有任何关系,只是参考了原图的风格和感受,所以适合重绘一个完全不想干的东西,工作流如下:
其中“VAE 内补编码器”中的遮罩延展,我们可以理解为 photoshop 中的“羽化”,一般设置为 6 即可,太小或者太大都不太合适,我做了实验如下,可以很明显的发现,羽化=0 时,猫咪的边缘很生硬,无法和画面如为一体,就像是“重新粘贴上去的”。
并且我们发现,VAE 内补编码器的重绘方式确实适合做一些比较大的调整,我们做个人像试试:
哈哈,确实蒙版区域的内容跟原来毫不相干,大概率有抽卡的成分,所以大家在用这种局部重绘时,最好是用在那种不是微调的,效果还是不错的。
备注:不建议降低降噪值,否则就会出现下图这种情况,原因:数值越低,越接近原图,现在蒙版区域又是空白潜空间,所以就没了参考了,所以就这样了。
小结:
3. Latent 噪波遮罩局部重绘
那如果我不想大调整,我只想微调局部,怎么办?
这时候 Latent 噪波遮罩的方法就非常管用,这种重绘方式的原理是蒙版区域参考了原蒙版内容,重绘区域还参考了原图,所以适合微调,能更好地理解需要重新生成的内容,工作流如下:
这里可以发现,因为这里的遮罩参考了原图,所以设置降噪幅度是有用的,
这是降噪=0.69 跟原图差的有点大,但还是跟原图保持了一个差不多的特征效果,不会很离谱。
换成降噪=0.55
再换成降噪=0.4
是不是很明显,降噪数值越低,跟原图越像,但提示词 “1 smiling girl”依然会表现出来,而上面的“VAE 内补编码器”则有点不尽如人意了,就像是直接搞了张“膏药”,哈哈。
所以,我们可以试着让这个女孩带上眼镜,其余保持不变,这就是典型的局部微调,我们看下效果:
再来一个,给鸟换个金色羽毛,是不是还不错。
小结:
4. ControlNet 局部重绘
到这,相信大家已经理解了最基本的两种重绘方式,现在有个新问题,当画面需要进行重大更改,但是又尽量不改变整体角色形象,比如人物外轮廓不变,在这个基础上进行重绘,又该如何呢?这里就需要用到 ControlNet 来传递原始图像的整体姿势。
如果我想把之前的女孩变成老奶奶,属于重大修改,但不能改变画面形象,姿势,综合来看,controlnet 的效果是最完美的,手部动作也还原了。三种处理方式的结果如下:
再比如换上另一个女孩,控制效果依然不错。
工作流如下:
这里我自己理解 ControlNet 重绘适合整体的大修改,但是还能保留原图像特性,我们看官方文档的示例就比较清楚了:
- ControlNet 官方介绍:https://github.com/lllyasviel/ControlNet-v1-1-nightly?tab=readme-ov-file
- ControlNet 1.1 模型下载:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
到这里,我把我理解的都告诉大家了,其实这三种办法简单讲就是在重绘时对画面的控制程度越来越高,越来越精细,如果我只想简单来个替换,第一种就很好,但是我想造型还是那个造型,但得换个人,咱就得用 ControlNet 来精准控制。
四、初步了解 ControlNet
上面的第三种局部重绘的方法,用到的是 ControlNet,那 ControlNet 的基本内容和原理又是什么呢?这里我先帮助大家做个简单的介绍,后面我会单独出一期文章详细讲解 ControlNet(现在本人还不理解地很到位),大家喜欢的可以先关注下。
ControlNet 说简单点就是在原图框架上出类似的图,官网上大概有以下几种模型:深度、曲线、直线、姿势等,不太明白的话,我给大家换个看法,来个“映射”,大家学设计的大学高中都学过素描和水粉吧,比如画水粉的时候,每个人的起稿方式都不一样,有打线稿的,也有平涂的,说白了,ControlNet 就是干这个事情的。
这些模型的具体用法和选择我也会在后面的文章做详细的介绍,这里我们了解个大概就差不多了。我自己总结了 COntrolNet 的出图原理如下:
简单来说,ControlNet 解决的一个最大的问题是:单纯的关键词控制方式无法满足对细节精确控制的需要。
总结
今天的分享就到这里了,本章内容主要讲解了在 ComfyUI 中基础的 3 种局部重绘的方法,以及每种方法的优缺点,其实这一块最难的是了解每种局部重绘的原理,知道原理之后,我们后面就可以随心所欲地进行自我创作了,还有就是每种方法没有优劣之分,重要的是摆在合适的位置,找到合适的场景,所以建议大家自己要多尝试几遍。
希望对大家有帮助,祝大家出图愉快!
谢谢