当前位置: 首页 > 快讯 > 正文

AI绘画:Stable Diffusion Web UI(七)ControlNet 4

2023-04-25 23:00:04哔哩哔哩

接上一章

本次记录ControlNet(v1.1)的基础使用。


(资料图片)

有点事耽搁了,晚了好多天才开始,然后写到一半突然来了个v1.1的大更新,直接傻了...

又重新学了一遍.....主要是插件还天天更新修复,一会变这个一会变那个,真的欲哭无泪。此次学习记录以4月18日20a5310版本为基准,已经关闭了插件自动更新,写完之前绝不打开,

说实话大佬们纷纷献言献策身体力行,插件越更新越专业,能参考的知识也越来越深奥,上手难度越来越大,感觉已经不是给普通人玩的了......

再有更新肯定还会有变化,大家参考下就行

因为不懂算法也不懂绘画,以下大部分内容只是通过结果进行的反推,说的不对轻喷...

前面几篇有需要的新手小伙伴可以去合集中看看:

(一)Windows本地搭建

(二)插件及模型安装

(三)基础使用教程

(三.5)提示词的进阶使用

(四)模型推荐

(五)图生图的基础使用1

(六)图生图的基础使用2

(七)ControlNet 1、2、3

⑨ shuffle / 随机洗牌(试验)

新增的预处理器和模型

根据官方的说法,这应该是一个风格转换模型,类似t2i的style,我们按照官方给的两个示例测试。

洗牌:

打乱原图的特征,赋给新图。预处理器选择shuffle,模型选v11e_sd15_shuffle

左原图;右shuffle,因为是随机洗牌,所以每次的预处理图都是不一样的,我就放了第一次预览的↓

新图我们就输入1girl提示词吧↓

robot↓

哈哈,

没搞懂.....

再换一个,提示词写cyberpunk city,↓

像是把两者糅合在一起了,但应该还是赛博朋克city做主导。

试试输入一张线稿,↓

接下来不洗牌:

官方的示例中,使用了钢铁侠作为原图,然后提示词输入蜘蛛侠,于是得到了一个钢铁蜘蛛侠。

取消预处理器的选择,只选择模型

用上面的原图,cyberpunk city,↓

还是再换一个...

输入一个机器人,提示词就写cat吧↓

输入一张线稿图↓

输入一张彩虹女孩图↓

输入一个足球图↓

输入一个汉堡包图↓

这个还是蛮有意思,可以创造出很多奇思妙想,我能玩一天

...

我玩了一天,发现大多数情况,只是将配色输出;原图的结构特点如果十分鲜明,会优先使用结构;使用fantasy标签的大模型会更有意思;可以先只使用模型,如果没啥效果再考虑预处理器+模型↓

猫猫头已经称霸宇宙

⑩ softedge /软边缘系列

只有softedge_hed是旧版的hed边缘检测,softedge_pidinet虽然名字和旧版一样,但是效果完全不一样,softedge_hedsafe、softedge_pidisafe是新增的。四个预处理器共用control_v11p_sd15_softedge模型。

softedge就是最上面说的hed的那种软边缘效果,相比canny固定宽度的边缘,softedge使用粗细、明暗变化的线条表示边缘,线条更流畅,会保留更多的细节与内容。

softedge_hed、softedge_hedsafe

虽然官方对safe模型做了介绍,但是完全看不懂,看看他们的效果。出图仍然不写提示词,也不使用无提示词模式。

softedge_hed,上:分辨率512;下:分辨率1024↓

不知道为啥1024的出图全是这样,调整了各个选项都没效果,不知道是不是bug。

分辨率提升,线条分的更细,层次更清晰。

整体还原度非常高。但是能看到hed还是会受到光照得到影响,那一片头发完全分不开,脸上多了一道沟。

softedge_hedsafe,上:分辨率512;下:分辨率1024↓

相比hed,多了一些灰色的部分,光照的头发终于分开了,脸上的沟也减轻了。但是背景消失了一部分。分辨率提升,灰色部分变少了,背景消失的更多。

仔细对比一下:上hed,下hedsafe↓

灰色填充的部分主要是hed中没完全分开混在一起的地方:比如受光照影响的头发、阴影,刘海头发之间的间隙。虽然台灯依旧没发光,safe还原了一些光照效果。有一个很细节的地方就是领子上的红色和头发正好交织,hed直接把它们放在一起,safe中给分开了。

虚化的背景几乎全部被灰色替代。也能很明显的察觉到safe少了一些细节,因为safe的线条更粗,而且没有了那种明暗的虚化效果(被灰色代替),脖颈处的头发、衣服上的褶皱都没有表现。

总的来看safe更适合有光影效果的原图。

softedge_pidinet、softedge_pidisafe

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 / 指令编辑(试验)

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 / 局部重绘

和图生图的inpaint差不多,不过图生图是只重绘蒙版区域,而cnet的inpaint是全图重绘,只是蒙版区域变化更大,其他区域变化小。

预处理器选择inpaint global,模型选择inpaint

遮住猫猫头,提示词输入dog↓

狗头太大了...puppy

有点模糊,没有景深,背景没区分开,其他地方虽然形状没变,但是颜色和纹理都变了

一样的问题

但是依然比图生图的要好,主要是衔接的比较协调,看一下图生图的效果

蒙版没有画到的地方衔接的不好,这还是简单背景的

换个复杂的看看↓

inpaint↓

图生图↓

换个更高难度的↓

提示词用body

看一下比例,有点不协调,原图的胳膊其实也有点不协调↓

主要是看衔接的地方↓

图生图↓

⑬ tile / 分块

v1.1中新增,现在的预处理器为tile_gaussian,模型为tile

在图生图的局部重绘中,蒙版区域是重绘的区域,如果放入原图的提示词,它会在蒙版区域按照提示词生成一个和原图类似的图像。这个官方也是说,为了生成一张大图,把一个图片分成小块绘制,但是它会按照提示词在每个小块都生成差不多的内容,而tile可以解决这一问题。

先实验一下官方的示例

c站找一张图,使用图生图上传这个做原图,复制原始数据填充,修改出图尺寸为512*512。可以看到手不大好,编辑图像只剩手,比例差不多一比一,和512*512匹配。

使用tile时不需要在controlnet上传图片了,它会直接使用图生图我们调整那个图片。预处理器选择无,模型选tile

出图

不但没啥变化,画质还变差了,搞不懂....

难道要选预处理器?选上看看

预处理图

出图

还是搞不懂,因为这个模型是标记的未完成状态,不先管它了。

⑭ t2i系列

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的模型。

t2ia_color_grid

提取图片中的色彩,分辨率越大色块越小。出图方面没有cnet的模型效果那么好,需要提示词辅助

t2ia_sketch_pidi

这个和旧版的pidinet边缘检测预处理是一摸一样的

t2ia_style_clipvision

这个和shuffle一样,都是风格转移类的,但效果不如shuffle,只能生成类似的风格,另外这个没有预览

左原图;右出图

输入线稿↓

输入彩虹女孩↓

输入发光小熊↓

输入二次元风景↓

输入猫猫头↓

大家自己尝试吧

2.4 画面缩放模式

出图的尺寸是固定的,我们在上面设置什么尺寸就是什么尺寸。但是在cnet中,如果原图和出图尺寸不匹配,可能会导致出现出图结果不符合预期。

前面说图生图的缩放模式的时候也提过,缩放模式是按照宽高比例就行缩放的,这里也是一样。

先说默认的裁剪后缩放

① crop and resize

就是翻译的那种意思,裁剪后缩放。裁剪的是高度,缩放的宽度。

这个效果是以宽度为基准。

这里的缩放,是指的缩放画面,大了缩小,小了放大,内容不会改变。

看示例,为了便于观察,预处理器选无,只对比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。

这就是缩放和裁剪的意思。

② just resize

这个比较直接,出图尺寸就是基准,直接缩放成出图尺寸,如果出图与原图比例差距过大,就会导致画面变形。

先举例说明:

出图尺寸512*512,宽高比例1:1;原图尺寸512*768,宽高比例1:1.5。使用 just resize ,这个比例会被强制变成1:1,也就是高度1.5会被压缩成1,会造成很有意思的结果。

示例

出图尺寸512*512,原图尺寸512*768。

左原图;左二预处理图;右二实际参考图;右出图↓

出图尺寸768*512,原图尺寸512*768。↓

我举的例子虽然不正经,但是用的好了也会有奇效。

③ resize and fill

缩放后填充,不够的地方用空白补全,空白代表没有内容,可以是黑色可以是白色可以是其他颜色,主要是看预处理图。

缩放是指的是以长边为基准,将全部内容都放到出图中,补短边。例如出图是768*1024,原图是512*768,那么会以长边为基准,将768缩放到1024,512缩放到682,682与768的差距,使用空白补全。

为了便于观察,找个带颜色的做示例

出图是768*1024,原图是512*768↓

出图是512*768,原图是512*512,这种一般是以相等的边为基准,不再举例。

因该是没了吧,如果还限制只能再分一章了

关键词: