本次记录ControlNet(v1.1)的基础使用。
(资料图片)
有点事耽搁了,晚了好多天才开始,然后写到一半突然来了个v1.1的大更新,直接傻了...
又重新学了一遍.....主要是插件还天天更新修复,一会变这个一会变那个,真的欲哭无泪。此次学习记录以4月18日20a5310
版本为基准,已经关闭了插件自动更新,写完之前绝不打开,
说实话大佬们纷纷献言献策身体力行,插件越更新越专业,能参考的知识也越来越深奥,上手难度越来越大,感觉已经不是给普通人玩的了......
再有更新肯定还会有变化,大家参考下就行
因为不懂算法也不懂绘画,以下大部分内容只是通过结果进行的反推,说的不对轻喷...
前面几篇有需要的新手小伙伴可以去合集中看看:
(一)Windows本地搭建
(二)插件及模型安装
(三)基础使用教程
(三.5)提示词的进阶使用
(四)模型推荐
(五)图生图的基础使用1
(六)图生图的基础使用2
(七)ControlNet 1、2、3
新增的预处理器和模型
根据官方的说法,这应该是一个风格转换模型,类似t2i的style,我们按照官方给的两个示例测试。
洗牌:
打乱原图的特征,赋给新图。预处理器选择shuffle,模型选v11e_sd15_shuffle
左原图;右shuffle,因为是随机洗牌,所以每次的预处理图都是不一样的,我就放了第一次预览的↓
新图我们就输入1girl提示词吧↓
robot↓
哈哈,
没搞懂.....
再换一个,提示词写cyberpunk city,↓
像是把两者糅合在一起了,但应该还是赛博朋克city做主导。
试试输入一张线稿,↓
接下来不洗牌:
官方的示例中,使用了钢铁侠作为原图,然后提示词输入蜘蛛侠,于是得到了一个钢铁蜘蛛侠。
取消预处理器的选择,只选择模型
用上面的原图,cyberpunk city,↓
还是再换一个...
输入一个机器人,提示词就写cat吧↓
赞
输入一张线稿图↓
输入一张彩虹女孩图↓
输入一个足球图↓
输入一个汉堡包图↓
这个还是蛮有意思,可以创造出很多奇思妙想,我能玩一天
...
我玩了一天,发现大多数情况,只是将配色输出;原图的结构特点如果十分鲜明,会优先使用结构;使用fantasy标签的大模型会更有意思;可以先只使用模型,如果没啥效果再考虑预处理器+模型↓
猫猫头已经称霸宇宙
只有softedge_hed是旧版的hed边缘检测,softedge_pidinet虽然名字和旧版一样,但是效果完全不一样,softedge_hedsafe、softedge_pidisafe是新增的。四个预处理器共用control_v11p_sd15_softedge模型。
softedge就是最上面说的hed的那种软边缘效果,相比canny固定宽度的边缘,softedge使用粗细、明暗变化的线条表示边缘,线条更流畅,会保留更多的细节与内容。
虽然官方对safe模型做了介绍,但是完全看不懂,看看他们的效果。出图仍然不写提示词,也不使用无提示词模式。
softedge_hed,上:分辨率512;下:分辨率1024↓
不知道为啥1024的出图全是这样,调整了各个选项都没效果,不知道是不是bug。
分辨率提升,线条分的更细,层次更清晰。
整体还原度非常高。但是能看到hed还是会受到光照得到影响,那一片头发完全分不开,脸上多了一道沟。
softedge_hedsafe,上:分辨率512;下:分辨率1024↓
相比hed,多了一些灰色的部分,光照的头发终于分开了,脸上的沟也减轻了。但是背景消失了一部分。分辨率提升,灰色部分变少了,背景消失的更多。
仔细对比一下:上hed,下hedsafe↓
灰色填充的部分主要是hed中没完全分开混在一起的地方:比如受光照影响的头发、阴影,刘海头发之间的间隙。虽然台灯依旧没发光,safe还原了一些光照效果。有一个很细节的地方就是领子上的红色和头发正好交织,hed直接把它们放在一起,safe中给分开了。
虚化的背景几乎全部被灰色替代。也能很明显的察觉到safe少了一些细节,因为safe的线条更粗,而且没有了那种明暗的虚化效果(被灰色代替),脖颈处的头发、衣服上的褶皱都没有表现。
总的来看safe更适合有光影效果的原图。
softedge_pidinet,上:分辨率512;下:分辨率1024↓
pidinet线条更多更细,512甚至看着有些模糊。有点不合常理,按理说hed应该线条更多。
1024线条明朗了许多,但是内容有增加有减少。
对比一下,上hed,下pidinet↓
pidinet线条更柔和,因此头发的还原更好,其他的地方差不多。线条多我猜是图的原因,换个细节丰富的图对比,
左hed,右pidinet↓
1024分辨率↓
这次能够看出差距,显然是hed内容更多。pidinet更注重轮廓,轮廓内的细节丢失
softedge_pidisafe,上:分辨率512;下:分辨率1024↓
pidinet safe的效果和上面的hed safe的表现差不多,适用于光影的图。
看一下对比:上pidinet,下pidinetsafe↓
safe脸部全被灰色填充,出图不大一样了,睫毛没了,眼睛就感觉小了不少....
对比一下lineart,出图的大模型不一样,lineart当时用的写实模型
上lineart realistic;中softedge hed;下:softedge pidisafe↓
softedge系列更适合毛绒绒的原图↑
ip2p在sd上早就有大模型了,可以在wiki页看到
我也下载体验过了,并不怎么好用↓
很多都不好使
在v1.1中的ip2p
目前并没有预处理器,我们尝试下看看
Turn the cat into a mechanical cat↓
....
Let the cat wear the mech↓
....
Change cat fur color to red↓
....
gg
换个官方示例中的图↓
make it on fire↓
make it winter↓
make it dilapidated↓
make iron man on roof↓
这两张和原图根本就没关系啊↑
make it on riverbank↓
let the house be destroyed by cat↓
make the house black↓
目前还没啥用...
和图生图的inpaint差不多,不过图生图是只重绘蒙版区域,而cnet的inpaint是全图重绘,只是蒙版区域变化更大,其他区域变化小。
预处理器选择inpaint global,模型选择inpaint
遮住猫猫头,提示词输入dog↓
狗头太大了...puppy
有点模糊,没有景深,背景没区分开,其他地方虽然形状没变,但是颜色和纹理都变了
一样的问题
但是依然比图生图的要好,主要是衔接的比较协调,看一下图生图的效果
蒙版没有画到的地方衔接的不好,这还是简单背景的
换个复杂的看看↓
inpaint↓
图生图↓
换个更高难度的↓
提示词用body
看一下比例,有点不协调,原图的胳膊其实也有点不协调↓
主要是看衔接的地方↓
图生图↓
v1.1中新增,现在的预处理器为tile_gaussian,模型为tile
在图生图的局部重绘中,蒙版区域是重绘的区域,如果放入原图的提示词,它会在蒙版区域按照提示词生成一个和原图类似的图像。这个官方也是说,为了生成一张大图,把一个图片分成小块绘制,但是它会按照提示词在每个小块都生成差不多的内容,而tile可以解决这一问题。
先实验一下官方的示例
c站找一张图,使用图生图上传这个做原图,复制原始数据填充,修改出图尺寸为512*512。可以看到手不大好,编辑图像只剩手,比例差不多一比一,和512*512匹配。
使用tile时不需要在controlnet上传图片了,它会直接使用图生图我们调整那个图片。预处理器选择无,模型选tile
出图
不但没啥变化,画质还变差了,搞不懂....
难道要选预处理器?选上看看
预处理图
出图
还是搞不懂,因为这个模型是标记的未完成状态,不先管它了。
t2ia_color_grid、t2ia_sketch_pidi、t2ia_style_clipvision预处理器分别对应t2iadapter_color、t2iadapter_sketch、t2iadapter_style模型。t2i预处理器可以用t2i的模型,也可以用cnet的模型,但是类别要对应;同理,cnet的预处理器也可以用t2i的模型。
t2i和controlnet的原理不一样,只知道一个是前一个是后,具体是什么看不懂,但是一个显著的区别就是模型的大小不一样,t2i小,cnet大。
下面的示例都是用t2i的模型。
提取图片中的色彩,分辨率越大色块越小。出图方面没有cnet的模型效果那么好,需要提示词辅助
这个和旧版的pidinet边缘检测预处理是一摸一样的
这个和shuffle一样,都是风格转移类的,但效果不如shuffle,只能生成类似的风格,另外这个没有预览
左原图;右出图
输入线稿↓
输入彩虹女孩↓
输入发光小熊↓
输入二次元风景↓
输入猫猫头↓
大家自己尝试吧
出图的尺寸是固定的,我们在上面设置什么尺寸就是什么尺寸。但是在cnet中,如果原图和出图尺寸不匹配,可能会导致出现出图结果不符合预期。
前面说图生图的缩放模式的时候也提过,缩放模式是按照宽高比例就行缩放的,这里也是一样。
先说默认的裁剪后缩放
就是翻译的那种意思,裁剪后缩放。裁剪的是高度,缩放的宽度。
这个效果是以宽度为基准。
这里的缩放,是指的缩放画面,大了缩小,小了放大,内容不会改变。
看示例,为了便于观察,预处理器选无,只对比cnet的参考图和原图
出图尺寸512*512,原图尺寸512*768。↓
宽度一致的情况下,高度上下裁剪导致画面丢失。
出图尺寸512*512,原图尺寸672*1056。↓
出图尺寸768*768,原图尺寸672*1056。↓
出图尺寸1024*1024,原图尺寸512*768↓
出图尺寸768*512,原图尺寸512*512↓
宽度不一致的情况下,宽度直接缩放,内容没有丢失;裁剪高度,画面丢失。
正如上面说的,宽度是决定项。在保证宽度内容不丢失的情况下,会根据比例裁剪高度。
比如最后一张图,出图尺寸768*512,宽高比为1:0.67;原图尺寸是512*512,宽高比为1:1,那么原图的高度1就会被裁剪成0.67。
同理出图尺寸是512*512,比例1:1;原图尺寸512*768,比例1:1.5,那么1.5就会被裁剪成1。
这就是缩放和裁剪的意思。
这个比较直接,出图尺寸就是基准,直接缩放成出图尺寸,如果出图与原图比例差距过大,就会导致画面变形。
先举例说明:
出图尺寸512*512,宽高比例1:1;原图尺寸512*768,宽高比例1:1.5。使用 just resize ,这个比例会被强制变成1:1,也就是高度1.5会被压缩成1,会造成很有意思的结果。
示例
出图尺寸512*512,原图尺寸512*768。
左原图;左二预处理图;右二实际参考图;右出图↓
出图尺寸768*512,原图尺寸512*768。↓
我举的例子虽然不正经,但是用的好了也会有奇效。
缩放后填充,不够的地方用空白补全,空白代表没有内容,可以是黑色可以是白色可以是其他颜色,主要是看预处理图。
缩放是指的是以长边为基准,将全部内容都放到出图中,补短边。例如出图是768*1024,原图是512*768,那么会以长边为基准,将768缩放到1024,512缩放到682,682与768的差距,使用空白补全。
为了便于观察,找个带颜色的做示例
出图是768*1024,原图是512*768↓
出图是512*768,原图是512*512,这种一般是以相等的边为基准,不再举例。
关键词: