【SD】最强控制插件ControlNet(7)语义分割seg
作者:白马少年
介绍:SD实践派,出品精细教程
发布时间:2023-05-26 20:00
原文网址:https://mp.weixin.qq.com/s/HqCPBqxkRliZpMFkJ8rMgg
在画面创作中,构图是至关重要的。而在大部分的AI绘图中,人物往往都是处在画面中心,或者是随机生成,看天吃饭。
在ControlNet中,有一个语义分割的预处理器和模型,就能解决我们构图的问题。
# 简单理解seg
seg的主要作用就是把图像中的元素分类到对应的类别当中,并按色块区分出来。为了方便理解,我们从网上找一张上海的街景图做演示。
将图片拖入到ControlNet中,使用一个seg预处理器,进行预览。
可以看到,照片被处理成了很多的色块。天空、大楼、汽车、路灯、马路等等,每一种都被赋予了一个独特的颜色。
在最新的ControlNet版本中,seg预处理器有三个,它们对物体的区分会有区别。
我们用这三种算法分别做了一次预处理,第一张和第三张都是基于ADE20K协议,所以它们的颜色对应是一样的。而第二张是基于COCO协议,它的每个颜色所对应的含义不同。至于具体应该使用哪一种预处理器,主要还是看你需要的元素能否被准确地识别出来。
这两种协议中,每个颜色所代表的含义已经被整理成了两张表格,分别是由b站Up主“大江户战士”和“智能野人”整理完成。这两张完整的表格我也会放到百度云盘,有需要的朋友可以在我的公众号回复“sd”自行领取。
# 实例运用
那当我们通过seg做好语义分割之后,这张图到底有什么作用呢?我们添加正向提示词:城市,街道,夜晚,霓虹灯,广告灯箱,多彩,繁华,赛博朋克。使用“neverendingDreamNED”大模型,添加好seg模型,点击生成。
我们就得到了一张和原图构图一样,元素位置一样的图片。
接下来,我们将seg图导入到ps里面,来做一下调整。按照ADE20K协议的颜色对照表,找到树、水、船的色值。
用魔棒工具选择大楼的色块,填充为树的颜色。
以此类推,将马路换成了水面,汽车换成了船。
将文生图的关键词修改为:森林,河流,船。在ControlNet中导入我们修改好的seg图,因为不需要预处理,所以预处理器中填入none。选好模型,点击生成。
一张符合原构图的森林风景画就诞生了。理论上,我们可以在色块图上做任意的调整,比如增删某个色块的面积,添加其他物体元素的色块,来达到随意布局的效果。
# 人与景的融合
我们使用大模型“CounterfeitV30”先绘制一张公园的风景图,提示词为:((masterpiece,best quality)),no humans, grass, outdoors, Stone bench,on ground, sunlight, dappled sunlight, day, depth of field。
这次我们使用coco协议的seg进行语义分割,生成预处理器。
通过查表找到人物的颜色色值。
通过ps抠一张坐着的女孩的图片,按照色值填充成剪影,放入到图中,保存成一张新的seg图。
添加女孩的文字描述词:白色短发,白色裙子,坐着。 点击生成,因为添加的人物只是剪影,AI很难识别出真正的动作,所以很有可能会出现姿态错误。
此时,我们可以进入之前讲过的“3D openpose”插件(【Stable Diffusion】最强控制插件ControlNet(2)姿态约束)来增加一个人物的骨架约束。打开“3D openpose”插件,首先要设置好背景图片,这样就能对应着调整骨架。将刚才生成的图片放进来,然后点击“从图片中检测”,就可以得到大致的骨架,然后自定义调整一下,摆出自己想要的姿势。
生成的骨架图发送到ControlNet中。
此时的ControlNet由三个通道组成,一个seg通道做构图、一个renference定义风格、还有一个openpose骨架定义人物姿态。
再次生成,人物的姿态就比较正确了。
接着发送图生图,启用ControlNet中的tile模型,拉高重绘幅度到0.85,做进一步的细化。
完工,画面整体还是不错的,可惜手部还是出现了一些问题,有的时候确实单靠AI很难调整过来,所以当AI完成百分之九十工作之后,剩下百分之十的细节调整还是需要靠后期PS来完成。
好了,以上就是ControlNet插件当中语义分割seg的用法介绍,可以通过这个功能,完成我们自定义构图的梦想。一个色块就是一个元素,我们离神笔马良又进了一步。 如果想要语义分割的色彩对照表格的话,可以添加我的公众号【白马与少年】,回复【SD】即可。
-END-
白马与少年
Stable Diffusion、Blender等学习心得分享
139篇原创内容(持续更新中)
公众号
微信扫一扫 关注该公众号