在前几篇文章中讲述了如何在ComfyUI中使用Embeddings和LoRA,不知道有没有小伙伴们去尝试一下。其实出图的效果是不错的,只是像我这样用习惯了WebUI的人来说ComfyUI并不是我的首选。
像是这样的图片可能第一眼看上去没什么问题,甚至我都知道你们在往哪看,但是眼尖的小伙伴们可能发现了,这个AI画出来的手好奇怪。
其实这个并不是个例,AI画手画不好一直是个困扰着业界许久的问题:
即便在提示词中加入了避免手指出现问题的关键词,还是会因为AI的随机性导致上图类似的情况发生。
而能够很大程度上解决这一问题的就是我们今天的主角:ControlNet,相信已经学过WebUI部分的同学已经不陌生了,这个东西在学习Stable Diffusion的道路上属于是绕不开的大山了。
ControlNet
在ComfyUI中ControlNet是以一个“扩展插件”的形式出现的,当然核心还是那些加载在里面的ControlNet模型。
在生成时会根据输入的“控制信息”动态调节Unet层来改变生成结果,从而实现姿势、轮廓等要素的迁移。在官方提供的示例中有Control的工作流可以参考:
https://comfyanonymous.github.io/ComfyUI_examples/controlnet/
只需要将官方提供的这张图另存为,然后打开ComfyUI后将其拖拽进去即可。
比起之前使用的文生图,ControlNet多出了两个组件,一个是ControlNet的模型加载器Load ControlNet Model;另一个是应用ControlNet模型的节点Apply ControlNet。
核心就是这个Apply ControlNet,它负责接受预处理的图像信息并按照加载的模型来实现控制要素。这个节点上只有一个参数Strentgth,这个参数是用来调节ControlNet的权重也就是效果的强弱。
如果要控制开始和结束的时机,则是需要用另一个节点Apply ControlNet(Advanced)
Apply ControlNet输出的信息是以CONDITIONING也就是条件的方式,会和输入的正面提示词一起输入进KSampler里。
ControlNet操作
操作也很简单,先下载一个包含预处理器功能的自定义节点,在Manager-Install Custom Nodes里面搜索ComfyUI’s ControlNet。
这个节点包含了近乎所有的控制类型,下载好后这些预处理器就会出现在右键菜单的“ControlNet Prerocessor”选项里,直接双击空白处搜索会更快些。
例如我想要OpenPose的节点,这样直接输入Preprocessor就可以找到了。
在选择完OpenPose处理器后再加载一个Load Image节点,这里挑选一张有比较喜欢的姿势的图片上传即可,然后将Load Image节点里的IMAGE和OpenPose Pose节点的image连接起来。
OpenPose处理器里面的这些选项和在WebUI里面的是一样的,就是识别hand(手部姿势)、body(身体姿势)、face(面部表情)。
然后将OpenPose节点上的IMAGE链接到Apply ControlNet节点的image上:
如果不放心输出结果的话,还可以加一个预览图片的节点Preview Image与IMAGE连接。
这样就能简单控制生成啦!
大部分情况下ControlNet是用一个就行,有的时候为了追求更完美的出图会选择多个ControlNet同时进行,当然这对设备也是一种考验希望大伙量力而行。
多个ControlNet(有节点包需额外下载)
其实也不难,先创建一个Apply ControlNet节点,需要开几个ControlNet就创建几个,我这里为了能直观点我就加载两个。
然后搜索想要的预处理器类型并加载进来,然后再创建一个Load ControlNet Model节点,选择对应的模型。
1、先将Load Image的IMAGE连接到第一个预处理器也就是OpenPose的image上。
2、然后OpenPose预处理器的IMAGE连接到Apply ControlNet的image上。
3、然后把Load ControlNet Model的CONTROL_NET与Apply ControlNet的control_net连接。
要加载多少个ControlNet就把以上的操作重复多少次,直到每一个Apply节点都匹配了对应的预处理器和模型。
4、在正向提示词的编码器里CONDITIONING连接到第一个Apply ControlNet的conditioning上,之后Apply节点之间的CONDITIONING与conditioning相互连接。
5、最后一个Apply ControlNet节点的CONDITIONING连接到KSample的positive上。
当然忙活了半天,上篇笔记的LoRA有stack,ControlNet也有stacker。感兴趣的小伙伴可以去看文末原教程的27:56秒开始,节点包的下载链接也会放在文末。
当然,一般情况下1-2个ControlNet就足够用了,过多的ControlNet也会加重设备的负担甚至爆显存。
今天的内容就到这里结束啦!
ControlNet这个扩展真的是我学习Stable Diffusion开始到现在使用频率第二高的扩展,用得最多还是高清放大。
那么大伙就下篇笔记见啦!拜了个拜。
论ControlNet的重要性
masterpiece, best quality,<(realistic:1.3), intricate details>,1girl,(0d),full body,black pantyhose,mary janes, pleated skirt, black_footwear,serafuku,sitting,desk,looking at viewer,class,day, <lora:hsod:0.4>, <lora:yjk:0.6>
Negative prompt: bag,(worst quality:2),(low quality:2),(normal quality:2),lowres,watermark,badhandv4,ng_deepnegative_v1_75t,
- Steps: 30
- Sampler: DPM++ SDE
- Schedule type: Karras
- CFG scale: 7
- Seed: 971660482
- Size: 512×512
- Model hash: 7c819b6d13
- Model: majicmixRealistic_v7
- Denoising strength: 0.7
- Clip skip: 2
- ControlNet 0: “Module: openpose_full
- Model: control_v11p_sd15_openpose [cab727d4]
- Weight: 1
- Resize Mode: Crop and Resize
- Low Vram: False
- Processor Res: 512
- Guidance Start: 0
- Guidance End: 1
- Pixel Perfect: True
- Control Mode: Balanced
- Hr Option: Both
- Save Detected Map: True”
- Hires upscale: 2
- Hires upscaler: R-ESRGAN 4x+
- Lora hashes: “hsod: e15569ee4fdd”
- Version: v1.9.3
评论0