嗨,各位鹿友,好久不见!

之前因事情缘故原由精力不敷,再加上阅读量不理想,导致我曾一度考虑不再连续更新"大众年夜众号内容了。

这也是野鹿志停更近半年的缘故原由。

不过内心还是放不下,毕竟已经做了6年多了,不是那么随意马虎就放弃的。

老鹿学Ai绘画ControlNet线条类控制

因此我决定连续写下去,文章篇幅会缩短,这样能减轻压力,也能更好地兼顾事情和自媒体。

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

视频版稍后单独发送

以下是图文版内容:

正文共:4231字 49图

估量阅读韶光:11分钟

之前我们讲到了Stable Diffusion的ControlNet安装和通用参数:

然后写了两篇基于ControlNet的运用:

建议还没有学习过的鹿友先学习完上面的三篇文章再来阅读本日的内容。

关于ControlNet的内容,例如各种预处理器和模型,我们还没有分享过。
加上Stable Diffusion更新频繁,这半年来呈现了许多新内容,个中许多我也没有用过。

本来想跳过直接分享新的内容,但以为当鹿友把"大众号当作学习资料查阅时,内容不足完全。
因此打算先把ControlNet的部分补全。

好了,废话了这么多,进入我们本日的正题吧:ControlNet线条类掌握。

提示:文章所有关于ContrelNet的学习均基于SD1.5大模型,不涉及SDXL模型。

01

ControlNet模型与预处理器的关系及invert预处理器

线条类掌握是ControlNet中占比比较重的一类,紧张分为Canny(边缘检测)、Lineart(艺术线稿)、Softedge(软边缘)、Scribble(涂鸦)、MLSD(直线检测)。

每种掌握类型又有二个或者多个预处理器。

在开始学习之前,我们先来理解一下ControlNet预处理器与模型之间的关系。

模型决定了掌握的类型,而预处理器则是用于处理图片素材,帮助模型更准确地进行掌握。

例如我这里在正向提示词输入英文:托尼托尼乔巴、带着老虎帽子、3D模型、萌萌的。

负向提示词只用了一个BadDream Embedding模型:

天生图的效果是这样的:

这时我们固定住随机种子,上传一张我之前用C4D做的乔巴图片,启用ControlNet并且勾选完美像素:

掌握类型选择Lineart(艺术线稿),预处理器选择无:

点击天生后,虽然天生的图有点丑,但可以明显看到,纵然我们没有选择预处理器,但ControlNet依然有效果:

而当我们选择一种预处理器,比如我这里选择Lineart Realistic,可以看到天生的图掌握就更加准确了:

此外,例如我这里上传的是一个黑底白边的鹿字轮廓,掌握类型选择Canny(边缘检测),预处理器选择Canny:

正向提示词中写上各种美食,负向提示词不变:

点击天生,你会创造效果不好,并没有涌现我们提示词中的各种美食:

这是由于我们上传ControlNet的图本身便是一张轮廓图,这里可以看到经由Canny预处理器处理后的结果险些和我们上传的轮廓图是一样的:

当我们上传的ControlNet图本身靠近预处理器处理后的效果时,须要将预处理器选择为无。

这一点同样适用于我们今后要学的其他掌握类型,例如涂鸦、深度、姿势等。

因此这里我们须要将预处理器选择为无:

再次点击天生可以看到提示词中的内容就涌现了:

其余ControlNet识别的白色,因此当你上传的轮廓图是白底黑边时预处理器选择无,天生的图就会出问题:

这时你须要将预处理器选择为Invert,将黑白进行反转,才能得到精确的效果:

在线条类模型中,除了Softedge(软边缘)以外,其他四种线条类模型都有Invert的预处理器:

02

Canny(边缘检测)

Canny(边缘检测)预处理器处理后的图片,有点类似我们早期利用PS对图片提取轮廓:

Canny是一种边缘检测算法,比如素材是一条细线,利用Canny算法会沿着线条边缘提取边缘信息,天生的图像可能会呈现双线条效果,且线条均匀,没有明显的粗细之分。

这里我们和后面要讲到的Lineart(艺术线稿)进行比拟可能会更好理解。

Lineart是一种线条提取算法,同样如果素材是一条细线,Lineart就会直接提取这条线条,并且线条有粗有细,更类似于手绘线稿的效果:

在Canny中会有两个特有参数,高阈值和低阈值:

大于高阈值的线条将会被保留,换言之高阈值数值越低,保留的线条越多:

低于低阈值的线条将会被忽略,换言之低阈值数值越低,保留的线条越多:

总的来说,Canny是一种比较精准的线条预处理器,其优点在于能够提取清晰的线条边缘,但缺陷是不太善于处理风雅的线条,更适宜处理外不雅观简洁的工具。

无论是产品换色、真人迁徙改变漫或者动漫转真人,都可以考试测验利用这个预处理器:

03

Lineart(艺术线稿)

说完Canny我们再来说说Lineart,前面我们也提到了Lineart是线稿提取,当我们处理比较繁芜线条的时候,就可以考试测验利用Lineart。

Lineart中有五个预处理器,分别是Standard(标准)、Realistic(写实线稿)、Coarse(粗略线稿)、Anime_Denoise(动漫线稿去噪)和Anime(动漫线稿),并且有两个模型Lineart和Lineart_Anime:

个中Standard(标准)类似于我们前面提到的Invert,紧张用于对本身是白底黑线的线稿图进行处理。
如果直接用它对图片素材进行处理,会得到一个反色效果:

下图我首先用动漫图片作为素材为大家展示了不同预处理器处理后的效果。

可以看到,Standard会产生白色阴影,属于反色的效果;Anime在头发处可能会有一些噪点;Coarse在手部和领带位置的线条比较缭乱;Anime_Denoise的线条比较干净,但可能会丢失一些线条;而Realistic相对来说线条细节会多一些。

然后是我用自己的真实照片做的比拟图,Standard的反色更加明显,两种Anime预处理器得到的线条都比较少,而相对来说 Coarse和Realistic得到的线条细节要多一些:

下面我分别用了动漫图片和真实照片作为素材,对Lineart的所有预处理器和模型进行了XYZ图表比拟,利用的SD大模型是RevAnimated,一个2.5D模型。

可以看到对付这张动漫图片反而预处理器Realistic,模型选择Lineart效果最好:

而对付真实照片来说,预处理器选择Anime效果也还行:

因此虽然官方是把预处理器和模型分为了写实和动漫两个种别,但我以为详细还是以图片素材实际情形而定。

对付繁芜线条的场景、线稿上色、真人迁徙改变漫或动漫转真人也都可以考试测验利用它。

04

Softedge(软边缘)

理解了Canny和Lineart,学习Softedge就更随意马虎了,简而言之Softedge便是在掌握上比它们宽松的一类线条预处理器。

在Softedge中一共有五个预处理器,分别是PiDiNet、PiDiNetSafe、HED、HEDSafe、以及teed:

总的来说这五种预处理器便是算法上的不同,个中teed是新的预处理器。

要利用这个预处理器须要下载这个叫7_model.pth 模型,正常情形下当你点击预处理器旁的爆炸图标后台会自动下载。

如果由于网络缘故原由下载失落败,我文后也会分享给大家,大家手动下载下来往后放到ControlNet的预处理模型文件夹中,路径如图:

在teed预处理器中会有一个安全步数的参数,调度范围是0到10,默认数值为2:

我暂时没有查到网上关于这个参数的干系解释,下面是我从数值0到10的测试图。

可以看到当数值为0的时,相称于该参数不起浸染,画面会有灰度区域,这些灰度区域可能在实际生图时产生影响。

而当数值为1时,是完备没有灰度区域,属于比较硬的边缘,随着数值的增加,灰度区域逐渐增加:

PiDiNet和HED以及它们对应的Safe版本紧张也是对这些灰度区域进行了处理,Safe版本处理后的结果边缘都更加壮实,而非Safe版本更柔和。

五种预处理器比拟下来,teed识别到的线条信息更多,边缘更硬,而HED识别的背景信息会比PiDiNet更多:

同样利用RevAnimated 2.5D模型进行生图测试,HED的准确度是最高的,例如背景的天空部分,但哪个更好我以为看个人需求:

05

Scribble(涂鸦)

再接下来便是Scribble,顾名思义,这是一个能够识别涂鸦线稿的预处理器,在线条掌握度上更加宽松。

Scribble预处理器一共有三个,分别是PiDiNet、HED和XDoG,个中PiDiNet和HED与Softedge中的两个同名预处理器是采取的同样的技能。

模型里,你还会看到一个t2iadapter_sketch模型,这个和掌握类型里的T2I-Adapter有关,我们往后再分享:

在XDoG预处理器中会多出一个XDoG阈值的选项,默认数值是32,数值范围是1-64:

数值越低线条的细节越多,但须要把稳的是由于Scribble处理出来的涂鸦线条都比较粗,细节越多反而可能生图效果会不好:

下面是三种预处理器的处理结果,可以看出XDoG得到的线条也是最多的:

下方则是三种预处理器天生的比拟图,哪种更好大家各自评判吧,我自己是很少用Scribble类的预处理器的:

06

MLSD(直线检测)

末了一个预处理器是MLSD,比较其他线条类的预处理器,它比较分外,紧张是用于识别场景中的直线,这个预处理比较常用于建筑或者室内设计。

MLSD中会有MLSD数值阈值和MLSD间隔阈值两个参数,默认数值都为0.1:

MLSD数值阈值用于打消间隔紧密的线,下图中我们可以看到,在数值0.1的时候会有一些建筑识别出来的直线重叠在了一起。

而当数值增加到0.4的时候,这个情形就得到了改进,这个参数可调度的最大值是2,但常日到数值到达1时,就检测不到任何直线了:

而MLSD间隔阈值的浸染是打消场景中的短线,随着数值的提高,大家把稳看下图,我为大家标注的赤色区域的短线就被打消了:

下方生图过程中,我大略的在提示词里加入了对场景的描述:左边是屋子,右边是街道,场景中有些树。

可以看到单从建筑方面来说,是有一定还原的:

好了以上便是ControlNet线条类掌握的所有内容。

如果以为对自己有所帮助,请不要吝啬自己的一键三连,你们的支持对我很主要,感激!

更多内容欢迎关注公众号

本文由“野鹿志”发布

转载前请联系马鹿野郎