本日我们要分享的内容视频版如下,视频已添加进度条及配音,想要原视频、文中比拟图以及模型的鹿友"大众年夜众号后台撩我获取:
视频版稍后单独发送
以下是图文版内容:

正文共:3568字 50图
估量阅读韶光:9分钟
上一篇文章我们分享了ControlNet三维类掌握,还没有看过的鹿友欢迎阅读:
本日我们将环绕着ControlNet的工具类掌握进行讲解,废话不多说,进入本日的正题吧!
01
序言
工具类包括OpenPose(姿态)和Segmentation(语义分割)两种,紧张用于掌握场景中的工具。
原操持本日禀享的内容可以提前两天发布,但由于整理Segmentation(语义分割)的颜色对照表花费了一些韶光。
本着授之以鱼不如授之以渔的想法,本日末了我会大略分享一下我是如何整理Segmentation的颜色对照表的。
02
OpenPose(姿态)
OpenPose(姿态)是鹿友们最常用的功能,顾名思义,它可以帮助我们掌握工具的动作、手势等。我个人由于不常天生人物图,以是用得很少。
随着SD的更新,OpenPose新增了很多预处理器。截至2024年5月31日,共有9款预处理器:
但实在大体可以分为三类:第一类是openpose类,包括早期的openpose、full、hand、faceonly、face,以及后面新增的dw openpose full:
个中,利用dw_pose须要首先下载dw-ll_ucoco_384.onnx和yolox_l.onnx这两个预处理模型,并将它们放入ControlNet对应的openpose预处理器模型文件夹中:
这类预处理器的特点是通过提取图片中工具的骨架图,从而达到掌握姿态的效果。
虽然openpose类有5种预处理器,但从名字就可以分清它们各自掌握的范围:
个中,我们着重比拟一下openpose_full和dw_openpose_full。这两款预处理器都可以提取姿态、手部和脸部的所有信息。
通过这张比拟图可以看到,dw_openpose_full在手部的提取上更加精准,而openpose_full在手部细节上有所缺失落:
就这个案例而言,dw_openpose_full天生的图也会比openpose_full更准确一些:
最新版的ControlNet将openpose-editor插件整合在一起,因此在骨架类openpose的预处理结果预览框中,会有一个编辑按钮:
可以手动编辑骨架或者以参数的办法微调骨架。如果你对openpose识别出来的骨架不满意,可以利用这个功能进行调度:
接下来是densepose类,对应的预处理器有densepose和densepose _parula:
利用这类预处理器须要首先下载densepose_r50_fpn_dl.torchscript到ControlNet对应的densepose预处理器模型文件夹中:
并且下载controlnetFor_v10.safetensors模型到ControlNet的模型文件夹中:
这类预处理器与openpose最大的差异在于,它提取出来的是轮廓,能够处理姿态中重叠的部分。
densepose和densepose_parula的差异在于,densepose天生的是紫色背景和主体,而densepose_parula天生的是玄色背景和蓝色主体:
两种预处理器比拟,我觉得也无法评判好坏:
下面是两种openpose和两种densepose天生图的比拟。个人觉得在这个案例中,还是dw_openpose_full更胜一筹:
末了一种是animal_openpose,这也是新增的预处理器。严格说来,它也算作openpose类,提取的是骨架图。
但由于它是专门针对四足动物的预处理器,以是我把它单独提出来分享:
利用它须要首先下载rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.onnx到ControlNet对应的openpose预处理器模型文件夹中:
然后再将control_sd15_animal_openpose_fp16.pth下载到对应的ControlNet模型文件夹中:
下方便是原图,预处理结果以及天生图的比拟:
03
Segmentation (语义分割)
Segmentation(语义分割)可以将图片提取为色块图,看起来像我们在三维软件中渲染的工具ID图,但实在有很大差异。
Segmentation处理的色块图色值是有严格定义的,不同的色值代表着不同的物体:
Segmentation中有4个预处理器,个中anime_face是新增的处理动漫面部的预处理器:
要利用它,须要下载UNet.pth预处理器到对应的anime face segment预处理器文件夹中:
下面是anime face segment天生图的效果。说实话,我没用过这个预处理器,就天生效果而言,也不太确定它的运用处景:
剩下的三个预处理器分别是ofade20k、ufade20k和ofcoco,个中of和uf分别代表oneformer和uniformer两种算法,ade20k和coco是两种数据集。
以是,通过名字可以理解,ade20k数据集利用了of和uf算法演习了两种预处理模型,而coco只利用了of算法。
通过比拟图可以看到,由于演习集的不同,语义分割的颜色色值差异比较大:
两种演习集的颜色对照表文后我也会分享给大家:
根据官方文档阐明,coco是ControlNet1.1新增的,ade20k支持150种颜色,coco有182种颜色:
但我自己整理coco语义分割颜色对照表时,只找到133个工具,通过OneFormer的在线版也看到coco的工具数量是133,不知道官方文档是否有误:
其余,有一个故意思的点我想和大家谈论一下。大家都知道,当我们手动上传一张根据颜色对照表绘制的色块图时,预处理器须要选择“无”。
因此,我推测ControlNet模型可以同时识别coco和ade20k两个数据集的颜色。换言之,当我们自己绘制色块时,可以稠浊利用两个对照表的颜色:
在所有ControlNet的预处理结果预览框内,都有一个photopea的编辑按钮:
须要科学上网,点击后会打开一个类似在线版的PS:
虽然在其他预处理器中也有这个功能,但在Segmentation中,我以为用它更加实用。例如,现在想要在场景中加一个人物,可以直接拖入一张人物照片:
抠出来:
添补成色块:
再导出png:
加载到ControlNet里点击天生,这里就多了一个人物:
再接下来是三种预处理器天生效果图的比拟。我个人以为还是要根据实际需求来选择利用哪种预处理器:
04
颜色对照表制作方法
末了来说说我是如何制作颜色对照表的吧。首先,我是不懂代码的,以是制作过程中用了很多取巧的方法。
对付ade20k这个颜色对照表,外网有现成的,我只是做了整理和翻译:
coco的颜色对照表在外网没有找到现成的,以是花了些功夫。首先,coco的演习集是开源的,可以直接在官网下载2017年的数据集:
解压后会得到一个JSON文件,用记事本打开它:
在ChatGPT的帮助下,我知道可以从categories字段找到演习集里的所有种别:
于是,我搜索并复制这个字段后的所有内容:
把它们在新的文本文档中大略整理大概成这样:
然后再复制到Excel中初步整理成表格,现在工具的名称有了,但在官方资料中我没有找到与颜色干系的信息:
以是我的方法是用现有的预处理器模型反推颜色。我先将这些工具名称利用SD的"从文本框或文件载入提示词"的功能批量天生图片:
再用coco预处理模型将它们转换成色块图。这里我利用了ComfyUI进行批量处理并保存预处理结果图:
然后将这些色块图批量导入PS,根据表格中的名称吸取图片中对应的色块HEX色值,再复制到表格中:
这个过程可能会比较麻烦,由于我们首先通过SD批量天生图,有些天生图不理想会导致色块图不易分辨。
例如,我在天生火车时,天生图总是火车内部的图,不便于语义分割,可能须要单独天生图并单独调度:
当所有图片的HEX色值都弄好往后,再批量复制到ChatGPT,让它帮我统一转换成RGB色值:
末了,将这些RGB数值填入表格中,再用ChatGPT见告的方法,把表格中的RGB数值转化成添补色:
以上便是我制作coco演习集颜色对照表的方法了。当然,末了少了验证的环节,133个工具全部验证确实太花韶光。各位鹿友在实际利用过程中碰着任何问题也可以见告我。
如果以为对自己有所帮助,请不要吝啬自己的一键三连,你们的支持对我很主要,感激!
更多内容欢迎关注"大众年夜众号
本文由“野鹿志”发布
转载前请联系马鹿野郎