Stable Diffusion教程!ControlNet 线条类控制

时间:2024-05-16
B站视频:av1254310592
类别:AIGC
水平:入门
设计师入站必刷的宝藏频道,掌握设计真本领与AI并肩 👉 立即点击

当视频无法加载时请刷新页面,
或前往PC获得最佳体验。

Stable Diffusion教程!ControlNet 线条类控制

教程作者: 野鹿志(授权转载)

交作业:微博搜索话题 #优设每日作业# 进入话题页即可发布作业

一、关于教程

嗨,各位鹿友,好久不见!之前因工作原因精力不足,再加上阅读量不理想,导致我曾一度考虑不再继续更新内容了。

这也是野鹿志停更近半年的原因。
不过内心还是放不下,毕竟已经做了6年多了,不是那么容易就放弃的。
因此我决定继续写下去,文章篇幅会缩短,这样能减轻压力,也能更好地兼顾工作和自媒体。

之前我们讲到了 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模型:

Stable Diffusion教程!ControlNet 线条类控制

生成图的效果是这样的:

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

点击生成,你会发现效果不好,并没有出现我们提示词中的各种美食:

Stable Diffusion教程!ControlNet 线条类控制

这是因为我们上传ControlNet的图本身就是一张轮廓图,这里可以看到经过Canny预处理器处理后的结果几乎和我们上传的轮廓图是一样的:

Stable Diffusion教程!ControlNet 线条类控制

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

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

02 Canny(边缘检测)

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

总的来说,Canny是一种比较精准的线条预处理器,其优点在于能够提取清晰的线条边缘,但缺点是不太擅长处理精细的线条,更适合处理外观简洁的对象。

无论是产品换色、真人转动漫或者动漫转真人,都可以尝试使用这个预处理器:

Stable Diffusion教程!ControlNet 线条类控制

03 Lineart(艺术线稿)

说完Canny我们再来说说Lineart,前面我们也提到了Lineart是线稿提取,当我们处理比较复杂线条的时候,就可以尝试使用Lineart。

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

因此虽然官方是把预处理器和模型分为了写实和动漫两个类别,但我觉得具体还是以图片素材实际情况而定。

对于复杂线条的场景、线稿上色、真人转动漫或动漫转真人也都可以尝试使用它。

04 Softedge(软边缘)

了解了Canny和Lineart,学习Softedge就更容易了,简而言之Softedge就是在控制上比它们宽松的一类线条预处理器。

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

05 Scribble(涂鸦)

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

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

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

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

Stable Diffusion教程!ControlNet 线条类控制

06 MLSD(直线检测)

最后一个预处理器是MLSD,相比其他线条类的预处理器,它比较特殊,主要是用于识别场景中的直线,这个预处理比较常用于建筑或者室内设计。

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

Stable Diffusion教程!ControlNet 线条类控制

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

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

Stable Diffusion教程!ControlNet 线条类控制

而MLSD距离阈值的作用是清除场景中的短线,随着数值的提高,大家注意看下图,我为大家标注的红色区域的短线就被清除了:

Stable Diffusion教程!ControlNet 线条类控制

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

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

Stable Diffusion教程!ControlNet 线条类控制

好了以上就是ControlNet线条类控制的所有内容。

如果觉得对自己有所帮助,请不要吝啬自己的一键三连,你们的支持对我很重要,谢谢!

欢迎关注「野鹿志」的微信公众号:

Stable Diffusion教程!ControlNet 线条类控制

学完这篇教程的人还在学…

1 收藏 7

非特殊说明,本站 UiiiUiii.com 上的教程均由本站作者及学员原创或翻译,原作品版权归属原作者,转载请联系 @优优教程网 授权。

转载时请在文首注明,来源 UiiiUiii.com 及教程作者,并附本文链接。谢谢各位编辑同仁配合。UiiiUiii 保留追究相应责任的权利。

复制本文链接
img

发表评论 快来秀出你的观点

还可以输入 800 个字
yzm
 
 
加载更多评论
没有更多评论了

优优教程网 365 天打卡计划

点击 #优设每日作业# 进入微博超话页面,上传并发布你的练习作业,话题微博格式【 优优教程网365打卡计划 – DAY 01 】,优秀作业将有机会被 @优优教程网 官方微博转发点评。

/

支持键盘 ← → 键翻阅图片