SD入门教程七:ControlNet篇-Canny边缘检测预处理器
AI魔法学院
2024-10-23
分享海报

在本篇中,我来讲讲如何使用预处理器和辅助模型,分别都有些什么作用。

1.     

当已载入SD1.5的模型时,CannyXL的辅助模型不会显示;

2.     

当已载入SDXL的模型时,CannySD1.5的辅助模型不会显示;

3.     

\extensions\sd-webui-controlnet\models在这个路径下检查下模型是否在models文件夹下;

需要了解的一些知识:

1.     

目前最新的ControlNet模型分为ControlNet 1.1模型和ControlNet XL模型;

2.     

ControlNet 1.1模型支持基于SD1.52.1训练的大模型上。而ControlNet XL模型支持基于SD XL训练的大模型上;

3.     

它们虽然是属于两个不同版本的模型,但是使用方法和原理都是一样的;

4.     

SD1.52.1的模型无法使用XLControlNet模型,SDXL的模型无法使用SD1.52.1ControlNet模型

5.     

预处理器的作用是对提供的参考图片进行处理,提取出图内的特征,后面我们将用“提取图”这个词作为统一代名词;

6.     

ControlNet模型,与预处理器配合使用,每种预处理器都会有好几种模型,而这些模型又会有不同作用,后面我会讲。

Canny(边缘检测预处理器)


如何使用

首先我们来看第一个预处理器Canny,在控制类型区域选中一个预处理器,预处理器和模型会自动切换,如果辅助模型显示为无,则参考上面的几种原因。

那么我们来走一遍使用流程,以Canny预处理器为例(以后讲的大多数预处理器使用流程基本是一样的)

1.     

先上传要控制图片的参考图;

2.     

选择一个预处理器控制类型;

3.     

启用该预处理器,打开允许预览,打开完美像素;

4.     

选择预处理器(有些预处理器有多种子类别),选择辅助模型(有多种子类别模型精度不同效果也不一样,FP16/FP32指的就是精度),点击预览按钮,运行后预览区域就会显示预览结果;

5.     

预处理器分辨率,在未开启完美像素,手动调整参数,参数值64-2048,默认 512,数值越高线条越精细,数值越低线条越粗糙。

6.     

Canny低阈值与高阈值,数值越低线条越复杂,数值越高线条越简单,也就是提取图线段的强弱,或者说线段的粗细,这样更好理解。

执行完以上基础步骤后,就可以提取出图片了,如果满意,则结合文生图或图生图使用。

控制权重、引导介入时机、引导终止时机等基础参数在上一篇都已经讲过,所以这篇就不讲了。

SD入门教程六:ControlNet基础入门


作用与效果

接下来我们先调整参数,这样更直观地了解这些参数对于控图的作用。下图是Canny提取图与原图对比。

预处理器分辨率(Preprocessor Resolution)参数效果:未开启完美像素模式的情况下,可自己调整参数以便得到最佳效果的提取图,以512像素的原图为例,数值越大,线条越细,如图:

Canny低阈值/高阈值参数效果:在一张图中,Canny预处理器会识别出各种各样的线段信息,如图L1/H1,当设置L1/H1参数时,Canny会把所有线段提取出来,其中有大部分线段对于图片是无用的,至少在视觉上是无用的,那我们就可以通过调整参数阈值来获得最佳线稿。通俗地讲就是想要图片保留的细节多一些可以降低阈值,图片保留细节少一些可以提高阈值,一般默认就行。

Canny的作用:能够很好地识别出图像内各对象的边缘轮廓,将人物边缘或物体的边缘提取出来,虽然提取后的图像是看似是线稿图,但其实与线稿完全不一样。


应用场景

图片重绘也就是线稿图上色,通过提示词与控制权重改变图片内容。


总结

ControlNet的预处理器和模型能够很好的帮我们控制图片结构,Canny预处理器相对于其他预处理器控图自由度更高,效果更好,不过呢,这也是分应用场景的。下一篇我们来讲Depth(深度图)预处理器等。

最后,感谢ControlNet作者,张吕敏,他是2021年本科毕业,目前正在斯坦福读博的中国人,于2023210日由张吕敏和马内什·阿格瓦拉共同发表的一篇论文。几日后就发布了训练好的模型,在GitHub上可以找到,传送门:https://github.com/lllyasviel/ControlNet

出自:https://mp.weixin.qq.com/s/iAR35K3YtxtFmm_KCQR6Dw

© THE END

转载请联系本网站获得授权

投稿或版权问题请加微信:skillupvip