老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法

用户头像
成都/设计爱好者/1年前/6992浏览
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法
用户头像
野鹿志
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMxMDg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
今天我们要分享的内容视频版如下,视频已添加进度条及配音,想要原视频、文中对比图以及模型的可与我联系:
以下是图文版内容:
正文共:3568字 50图
预计阅读时间:9分钟
上一篇文章我们分享了ControlNet三维类控制,还没有看过的鹿友欢迎阅读:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MDQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
今天我们将围绕着ControlNet的对象类控制进行讲解,废话不多说,进入今天的正题吧!
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MDg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
01 
前言
对象类包括OpenPose(姿态)和Segmentation(语义分割)两种,主要用于控制场景中的对象。
原计划今天分享的内容可以提前两天发布,但由于整理Segmentation(语义分割)的颜色对照表花费了一些时间。
本着授之以鱼不如授之以渔的想法,今天最后我会简单分享一下我是如何整理Segmentation的颜色对照表的。
02 
OpenPose(姿态)
OpenPose(姿态)是鹿友们最常用的功能,顾名思义,它可以帮助我们控制对象的动作、手势等。我个人由于不常生成人物图,所以用得很少。
随着SD的更新,OpenPose新增了很多预处理器。截至2024年5月31日,共有9款预处理器:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MTI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
但其实大体可以分为三类:第一类是openpose类,包括早期的openpose、full、hand、faceonly、face,以及后面新增的dw openpose full:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MTY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
其中,使用dw_pose需要首先下载dw-ll_ucoco_384.onnx和yolox_l.onnx这两个预处理模型,并将它们放入ControlNet对应的openpose预处理器模型文件夹中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MjA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
这类预处理器的特点是通过提取图片中对象的骨架图,从而达到控制姿态的效果。
虽然openpose类有5种预处理器,但从名字就可以分清它们各自控制的范围:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MjQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
其中,我们着重对比一下openpose_full和dw_openpose_full。这两款预处理器都可以提取姿态、手部和脸部的所有信息。
通过这张对比图可以看到,dw_openpose_full在手部的提取上更加精准,而openpose_full在手部细节上有所缺失:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5Mjg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
就这个案例而言,dw_openpose_full生成的图也会比openpose_full更准确一些:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MzI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
最新版的ControlNet将openpose-editor插件整合在一起,因此在骨架类openpose的预处理结果预览框中,会有一个编辑按钮:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5MzY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
可以手动编辑骨架或者以参数的方式微调骨架。如果你对openpose识别出来的骨架不满意,可以使用这个功能进行调整:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NDA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
接下来是densepose类,对应的预处理器有densepose和densepose _parula:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NDQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
使用这类预处理器需要首先下载densepose_r50_fpn_dl.torchscript到ControlNet对应的densepose预处理器模型文件夹中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NDg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
并且下载controlnetFor_v10.safetensors模型到ControlNet的模型文件夹中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NTI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
这类预处理器与openpose最大的区别在于,它提取出来的是轮廓,能够处理姿态中重叠的部分。
densepose和densepose_parula的区别在于,densepose生成的是紫色背景和主体,而densepose_parula生成的是黑色背景和蓝色主体:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NTY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
两种预处理器对比,我感觉也无法评判好坏:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NjA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
下面是两种openpose和两种densepose生成图的对比。个人感觉在这个案例中,还是dw_openpose_full更胜一筹:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NjQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
最后一种是animal_openpose,这也是新增的预处理器。严格说来,它也算作openpose类,提取的是骨架图。
但由于它是专门针对四足动物的预处理器,所以我把它单独提出来分享:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5Njg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
使用它需要首先下载rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.onnx到ControlNet对应的openpose预处理器模型文件夹中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NzI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
然后再将control_sd15_animal_openpose_fp16.pth下载到对应的ControlNet模型文件夹中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5NzY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
下方就是原图,预处理结果以及生成图的对比:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5ODA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
03 
Segmentation (语义分割)
Segmentation(语义分割)可以将图片提取为色块图,看起来像我们在三维软件中渲染的对象ID图,但其实有很大区别。
Segmentation处理的色块图色值是有严格定义的,不同的色值代表着不同的物体:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5ODQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
Segmentation中有4个预处理器,其中anime_face是新增的处理动漫面部的预处理器:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5ODg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
要使用它,需要下载UNet.pth预处理器到对应的anime face segment预处理器文件夹中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5OTI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
下面是anime face segment生成图的效果。说实话,我没用过这个预处理器,就生成效果而言,也不太确定它的应用场景:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDI5OTY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
剩下的三个预处理器分别是ofade20k、ufade20k和ofcoco,其中of和uf分别代表oneformer和uniformer两种算法,ade20k和coco是两种数据集。
所以,通过名字可以理解,ade20k数据集使用了of和uf算法训练了两种预处理模型,而coco只使用了of算法。
通过对比图可以看到,由于训练集的不同,语义分割的颜色色值差异比较大:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMDA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
两种训练集的颜色对照表文后我也会分享给大家:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMDQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMDg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
根据官方文档解释,coco是ControlNet1.1新增的,ade20k支持150种颜色,coco有182种颜色:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMTI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
但我自己整理coco语义分割颜色对照表时,只找到133个对象,通过OneFormer的在线版也看到coco的对象数量是133,不知道官方文档是否有误:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMTY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
另外,有一个有意思的点我想和大家讨论一下。大家都知道,当我们手动上传一张根据颜色对照表绘制的色块图时,预处理器需要选择“无”。
因此,我推测ControlNet模型可以同时识别coco和ade20k两个数据集的颜色。换言之,当我们自己绘制色块时,可以混合使用两个对照表的颜色:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMjA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
在所有ControlNet的预处理结果预览框内,都有一个photopea的编辑按钮:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMjQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
需要科学上网,点击后会打开一个类似在线版的PS:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMjg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
虽然在其他预处理器中也有这个功能,但在Segmentation中,我觉得用它更加实用。例如,现在想要在场景中加一个人物,可以直接拖入一张人物照片:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMzI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
抠出来:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwMzY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
填充成色块:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNDA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
再导出png:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNDQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
加载到ControlNet里点击生成,这里就多了一个人物:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNDg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
再接下来是三种预处理器生成效果图的对比。我个人觉得还是要根据实际需求来选择使用哪种预处理器:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNTI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
04 
颜色对照表制作方法
最后来说说我是如何制作颜色对照表的吧。首先,我是不懂代码的,所以制作过程中用了很多取巧的方法。
对于ade20k这个颜色对照表,外网有现成的,我只是做了整理和翻译:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNTY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
coco的颜色对照表在外网没有找到现成的,所以花了些功夫。首先,coco的训练集是开源的,可以直接在官网下载2017年的数据集:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNjA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
解压后会得到一个JSON文件,用记事本打开它:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNjQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
在ChatGPT的帮助下,我知道可以从categories字段找到训练集里的所有类别:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNjg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
于是,我搜索并复制这个字段后的所有内容:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNzI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
把它们在新的文本文档中简单整理大概成这样:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwNzY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
然后再复制到Excel中初步整理成表格,现在对象的名称有了,但在官方资料中我没有找到与颜色相关的信息:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwODA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
所以我的方法是用现有的预处理器模型反推颜色。我先将这些对象名称使用SD的"从文本框或文件载入提示词"的功能批量生成图片:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwODQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
再用coco预处理模型将它们转换成色块图。这里我使用了ComfyUI进行批量处理并保存预处理结果图:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwODg=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
然后将这些色块图批量导入PS,根据表格中的名称吸取图片中对应的色块HEX色值,再复制到表格中:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwOTI=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
这个过程可能会比较麻烦,因为我们首先通过SD批量生成图,有些生成图不理想会导致色块图不易分辨。
例如,我在生成火车时,生成图总是火车内部的图,不便于语义分割,可能需要单独生成图并单独调整:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMwOTY=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
当所有图片的HEX色值都弄好以后,再批量复制到ChatGPT,让它帮我统一转换成RGB色值:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMxMDA=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
最后,将这些RGB数值填入表格中,再用ChatGPT告诉的方法,把表格中的RGB数值转化成填充色:
老鹿学Ai绘画:ControlNet对象类控制及语义颜色对照表制作方法(图ZMTQ4MDMxMDQ=) - 教程 - 站酷设计师野鹿志原创素材 - 站酷ZCOOL
Collect
以上就是我制作coco训练集颜色对照表的方法了。当然,最后少了验证的环节,133个对象全部验证确实太花时间。各位鹿友在实际使用过程中遇到任何问题也可以告诉我。
如果觉得对自己有所帮助,请不要吝啬自己的一键三连,你们的支持对我很重要,谢谢!
80
Report
|
144
Share
相关推荐
评论
用户头像
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
相关收藏夹
大家都在看
Log in