SD入门教程七:ControlNet篇-Canny边缘检测预处理器
发布时间:2024年10月24日
在本篇中,我来讲讲如何使用预处理器和辅助模型,分别都有些什么作用。
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.5、2.1训练的大模型上。而ControlNet XL模型支持基于SD XL训练的大模型上;
3.
它们虽然是属于两个不同版本的模型,但是使用方法和原理都是一样的;
4.
SD1.5、2.1的模型无法使用XL的ControlNet模型,SDXL的模型无法使用SD1.5、2.1的ControlNet模型;
5.
预处理器的作用是对提供的参考图片进行处理,提取出图内的特征,后面我们将用“提取图”这个词作为统一代名词;
6.
ControlNet模型,与预处理器配合使用,每种预处理器都会有好几种模型,而这些模型又会有不同作用,后面我会讲。
Canny(边缘检测预处理器)
如何使用
首先我们来看第一个预处理器Canny,在控制类型区域选中一个预处理器,预处理器和模型会自动切换,如果辅助模型显示为无,则参考上面的几种原因。
那么我们来走一遍使用流程,以Canny预处理器为例(以后讲的大多数预处理器使用流程基本是一样的)
1.
先上传要控制图片的参考图;
2.
选择一个预处理器控制类型;
3.
启用该预处理器,打开允许预览,打开完美像素;
4.
选择预处理器(有些预处理器有多种子类别),选择辅助模型(有多种子类别模型精度不同效果也不一样,FP16/FP32指的就是精度),点击预览按钮,运行后预览区域就会显示预览结果;
5.
预处理器分辨率,在未开启完美像素,手动调整参数,参数值64-2048,默认 512,数值越高线条越精细,数值越低线条越粗糙。
6.
Canny低阈值与高阈值,数值越低线条越复杂,数值越高线条越简单,也就是提取图线段的强弱,或者说线段的粗细,这样更好理解。
执行完以上基础步骤后,就可以提取出图片了,如果满意,则结合文生图或图生图使用。
控制权重、引导介入时机、引导终止时机等基础参数在上一篇都已经讲过,所以这篇就不讲了。
作用与效果
接下来我们先调整参数,这样更直观地了解这些参数对于控图的作用。下图是Canny提取图与原图对比。
预处理器分辨率(Preprocessor
Resolution)参数效果:未开启完美像素模式的情况下,可自己调整参数以便得到最佳效果的提取图,以512像素的原图为例,数值越大,线条越细,如图:
Canny低阈值/高阈值参数效果:在一张图中,Canny预处理器会识别出各种各样的线段信息,如图L1/H1,当设置L1/H1参数时,Canny会把所有线段提取出来,其中有大部分线段对于图片是无用的,至少在视觉上是无用的,那我们就可以通过调整参数阈值来获得最佳线稿。通俗地讲就是想要图片保留的细节多一些可以降低阈值,图片保留细节少一些可以提高阈值,一般默认就行。
Canny的作用:能够很好地识别出图像内各对象的边缘轮廓,将人物边缘或物体的边缘提取出来,虽然提取后的图像是看似是线稿图,但其实与线稿完全不一样。
应用场景
图片重绘也就是线稿图上色,通过提示词与控制权重改变图片内容。
总结
ControlNet的预处理器和模型能够很好的帮我们控制图片结构,Canny预处理器相对于其他预处理器控图自由度更高,效果更好,不过呢,这也是分应用场景的。下一篇我们来讲Depth(深度图)预处理器等。
最后,感谢ControlNet作者,张吕敏,他是2021年本科毕业,目前正在斯坦福读博的中国人,于2023年2月10日由张吕敏和马内什·阿格瓦拉共同发表的一篇论文。几日后就发布了训练好的模型,在GitHub上可以找到,传送门:https://github.com/lllyasviel/ControlNet
出自:https://mp.weixin.qq.com/s/iAR35K3YtxtFmm_KCQR6Dw
如果你想要了解关于智能工具类的内容,可以查看 智汇宝库,这是一个提供智能工具的网站。
在这你可以找到各种智能工具的相关信息,了解智能工具的用法以及最新动态。
机器之心是中国领先的人工智能科技媒体,提供最新的AI新闻、研究论文和产业动态,专业的人工智能信息服务平台。