ComfyUI系列教程(5)--ComfyUI基础节点Controlnet

2.ComfyUI基础节点Controlnet

本节主要介绍Controlnet简要原理,以及常见Controlnet模型方法。

2.2 Controlnet

2.2.1.Controlnet原理作用

Controlnet是一种“辅助式”的神经网络模型结构,通过在Stable Diffusion模型中添加辅助模块,从而引入“额外条件”来控制AI绘画的生成过程。其中锁定模型中的权重保持不变,保留了Stable Diffusion模型原本的能力;与此同时,使用额外数据对trainable copy进行微调,学习我们想要添加的条件。trainable copy的部分包括SD模型的Unet中Encoder和中间结构,训练ControlNet模型时也只训练了这部分参数。
在这里插入图片描述
常见的SD1.5版本的Controlnet1.1命名规则如下:首先是control表示contronet,v11表示v1.1版本,p/e/u表示状态,p为稳定版本,sd15表示对应的SD模型版本,最后一个表示Controlnet的类型。
在这里插入图片描述

2.2.2.ComfyUI示例

2.2.2.1.ComfyUI Controlnet用法

ComfyUI Controlnet节点下载:
ControlNet 预处理器插件:包含各种常用的ControlNet预处理器。
高级ControlNet:支持 ControlNet 调度和遮罩等高级特性。
Controlnet模型文件可以在Huggingface或者hf mirror下载:https://hf-mirror.com/lllyasviel/sd_control_collection/tree/main。
使用Controlnet时,需要用到3个节点,分别是应用Controlnet(红色),加载Controlnet(蓝色),预处理器(绿色)。选择不同的模型时,预处理器需要和加载Controlnet模型中对应的。如果输入的图像是已经处理过的图像(比如已经经过Openpose处理,提取出人物骨骼点的图片),则可以跳过预处理器,直接将图片连入应用Controlnet中的image。通过positive和negative连接正反向提示词和Ksampler,将controlnet加入文生图基础工作流中。
在这里插入图片描述
在ComfyUI的Apply Controlnet节点中,主要包括3个参数。

  1. strength(ControlNet权重):代表使用ControlNet模型辅助控制SD生成图片时的权重。
  2. Start percent(引导介入时机):表示在图片生成过程中的哪一步开始使用ControlNet进行控制。如果设置为0,就表示从一开始就使用ControlNet控制图片的生成;如果设置为0.5就表示ControlNet从50%的步数时开始进行控制。
  3. End percent(引导推出时机):表示在图片生成过程中的哪一步结束ControlNet的控制。和引导介入时机相对应,如果设置为1,表示使用ControlNet进行控制直到完成图片的生成。Ending Control Step默认为1,可调节范围0-1,如果设置为0.8时表示到80%的步数时结束控制。
2.2.2.2.CN功能
2.2.2.2.1. Canny

Canny边缘检测算法能够检测出原始图片中各对象的边缘轮廓特征,提取生成线稿图,作为SD模型生成时的条件。接着再设置不同的提示词,让SD模型生成构图相同但是内容不同的画面,也可以用来给线稿图重新上色。
在这里插入图片描述
目前SD1.5有多种Controlnet模型可以使用,为节省显存,推荐使用Control_v11p_sd15_canny_fp16模型。
使用Canny Controlnet工作流如下,在文生图的基础上,加入了Canny Edge,Load Controlnet Model和Apply Controlnet三个节点。6-1 Controlnet Canny(工作流见附件)
在这里插入图片描述
由下图可以看到CN的控制强度对生成结果的影响(横轴),而CN起始时间(纵轴)也会对图像产生影响。
在这里插入图片描述

2.2.2.2.2. OpenPose

OpenPose算法包含了实时的人体关键点检测模型,通过姿势识别,能够提取人体姿态,如人脸、手、腿和身体等位置关键点信息,从而在文生图时精准控制单人动作,或者多人的姿势。如下图,左边为输入的图像,中间是检测出的关键点,右边是根据关键点生成的图像。
在这里插入图片描述
使用方法与Canny类似,只需要替换为Openpose的CN模型和对应预处理器。6-3 Controlnet Openpose(工作流见附件)
在这里插入图片描述
除了Open Pose可以检测人类姿态,Aimal Pose模型可以检测动物关键点。

2.2.2.2.3. Lineart

ControlNet Lineart算法(线稿模型)与Canny算法大同小异,可以检测出输入图像中的线稿信息。可以搭配的预处理器有AnyLine Lineart、Anime Lineart等。
在这里插入图片描述
如下是示例工作流,6-4 Controlnet Lineart(工作流见附件)
在这里插入图片描述

2.2.2.2.4. Tile

Tile算法和超分算法部分类似,能够增大图像的分辨率。但不同的是,ControlNet Tile算法在增加图像分辨率的同时,还能生成大量的细节特征而不是简单地进行插值。在图片尺寸不变的情况下,优化生成图片的细节;在对图片尺寸进行超分的同时,生成相应的细节,完善超分后的图片效果。
在这里插入图片描述
比如在流行的AIGC字体海报中,就通常使用Tile来保证生成字体的稳定性和精细度。 6-5 Controlnet Tile(工作流见附件)
在这里插入图片描述

2.2.2.2.5. Depth

Depth算法提取原始图片中的深度信息,能生成和原图一样深度结构的深度图。颜色越浅的区域,代表距离镜头越近;越是偏深色的区域,则代表距离镜头越远。
深度预处理器常用的有Depth Anything和MiDas Depth Map。
在这里插入图片描述
下图是使用Depth Controlnet,根据左边图像生成的结果,生成图像深度结构与原图基本一致。
在这里插入图片描述
6-6 Controlnet Depth(工作流见附件)
在这里插入图片描述

2.2.2.2.6. NormalMap

法线图指定了物体表面的方向。NormalMap算法根据输入图片生成一张记录凹凸纹理信息的法线贴图,通过提取法线向量,依据法线贴图进行光影处理,生成参考图片。Normalmap与depth方法都传递图像的三维特征,但NormalMap通常能保留更多的原图细节。
在这里插入图片描述
6-7 Controlnet Normalmap(工作流见附件)
在这里插入图片描述

2.2.2.2.7. MLSD

MLSD是一种线条检测算法,对于提取具有直边的轮廓非常有用,例如室内设计、建筑物、街景、相框和纸张边缘,但是对人或其它有弧度的物体边缘提取效果很差。6-8 Controlnet MLSD(工作流见附件)
在这里插入图片描述

2.2.2.2.8. SoftEdge

SoftEdge算法的主要作用是检测图像的软边缘轮廓,与Canny算法相比检测出的边缘轮廓没有那么细致和严格,相对比较宽松和柔性。如果生成棱角分明或者机甲一类的图像,推荐使用Canny算法,如果生成人物和动物等图像,使用softedge预处理器效果会更好。
常用的SoftEdge处理器有PiDiNet Soft-Edge Lines和HED Soft-Edge Lines,其效果对比差别不大。但PiDiNet Soft-Edge Lines鲁棒性更高,所以使用者更多。6-9 Controlnet SoftEdge(工作流见附件)
在这里插入图片描述

2.2.2.2.9. Scribble

Scribble能够提取图片中曝光对比度比较明显的区域,生成黑白稿,再涂鸦生成图片,比Canny算法的自由度更高,也可以对手绘线稿上色。
常用的预处理器有Scribble Lines,Scribble XDoG Lines和Scribble PiDiNet Lines。6-10 Controlnet Scribble(工作流见附件)
在这里插入图片描述

2.2.2.2.10. Segment

Segment算法是计算机视觉里经典任务,为图像的语义分割。其效果为,将图像上同一种物体的所有像素点用同一种颜色表示。使用Segment Controlnet,可以基于语义分割处理后的图像,在对应的颜色区域生成对应物体。同样也可以自行绘制颜色分区,让Segment Controlnet在指定区域生成指定物体。颜色物体对应关系可以参考这里
下表是ComfyUI中三种不同的预处理器分割效果,可以根据要求的细节程度选择预处理器。Segment适合比较复杂的物体的组合,比如在室内设计、建筑等方面,会有较好的发挥空间。6-11 Controlnet Segment(工作流见附件)
在这里插入图片描述

2.2.2.2.11. Shuffle

Shuffle算法能够获取输入的参考图像的配色,并控制模型生成相似画风、结构的图像。
Shuffle模型首先将输入的图像拆分成多个小块或特征图,然后再将这些小块或特征图进行随机排列,重新组合成新的图像。这个过程中,神经网络会学习到输入图像中的各种风格和结构信息,例如线条、颜色、纹理等,并将这些信息应用于新图像的生成。6-12 Controlnet Shuffle(工作流见附件)
在这里插入图片描述

2.2.2.2.12. Inpaint

Inpaint算法与Stable DIffusion系列模型原生的Inapinting操作一样,使用mask对需要重绘的部分进行遮盖,然后进行局部的图像重新生成。
这部分需要额外对图像进行Mask操作(Load Image节点右键,选择Open in MaskEditor进行涂抹;或者使用yoloefficient等节点进行自动遮罩),并将mask输入InpaintPreprocessor中,同时提示词描述整体画面以及需要修改的内容。6-13 Controlnet Inpaint(工作流见附件)
在这里插入图片描述

2.2.2.2.13. InstryctP2P

InstryctP2P算法是一种通过提示词编辑图像的算法。这个Controlnet使用50%的指令提示和50%的描述提示进行训练的,如“一个可爱的男孩”是一个描述提示,而“让这个男孩变得可爱”是一个指令提示。目前仅有control_v11e_sd15_ip2p这一个模型,使用这个Controlnet时,不需要使用预处理器。6-14 Controlnet InstryctP2P(工作流见附件)
在这里插入图片描述

2.2.2.2.14. Recolor

Recolor算法主要起到对输入图像进行重新上色的效果,可以用于改变图像局部颜色,对老照片进行上色修复、给图片增加滤镜。在ComfyUI中,controlnet模型可以使用ioclab_sd15_recolor,sai_xl_recolor_128lora和sai_xl_recolor_256lora,不需要使用预处理器。6-15 Controlnet Recolor(工作流见附件)
在这里插入图片描述

2.2.2.2.15. QRcode controlnet

QRcode Controlnet可用于将二维码图片转化为风格化的图像,同时保留二维码功能。因为其学习到了较好的光影效果,也会被用于生成有光影变幻效果的文字海报,或者结合Animatediff,利用黑白动画变换效果,进行图生视频渐变转场。
在这里插入图片描述
在ComfyUI中,对于二维码图像进行QRcode不需要使用预处理器;对于普通图像,可以使用深度预处理器等能够产生黑白图像的方法,处理图像作为Controlnet的image输入。6-15 Controlnet QRcode(工作流见附件)

2.2.2.2.16. T2I类Controlnet

T2I-Adapter算法是由腾讯发布,和ControlNet模型一样,能够作为控制条件控制SD模型生成图片的过程。它们可以轻松地与SD模型结合,T2I-Adapter模型大约只有77M的参数和大约300M的存储空间。
ContorlNet中也集成了T2l-Adapter算法预处理器,如Color Pallete(对应WebUI的t2ia_color_grid)。
Color Pallete预处理器将输入参考图像缩小到原始大小的1/64,然后再将其扩大至回原始尺寸。最终效果是呈现出网格状的局部平均颜色块。然后使用t2i-adapter_color_sd14v1的Controlnet模型控制生成。6-16 Controlnet t2iColor(工作流见附件)
在这里插入图片描述

2.2.3附件

提及的ComfyUI工作流已经全部放入,均为基础工作流,欢迎交流:
通过百度网盘分享的文件:ComfyUI学习工作流
链接:https://pan.baidu.com/s/1LRnj56uy1ZLkRuFaC4JLMw
提取码:6vjr

文章内容整理总结自互联网,如有应引用未引用之处,烦请拨冗指正
1.参考:https://zhuanlan.zhihu.com/p/660924126

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值