大家好,在之前的几篇文章中已经陆续地介绍过Stable diffusion的一些基础功能,接下来要介绍的是Stable diffusion中稍微难一点的,但同时也是比较实用的功能:ControlNet。
简单来说,ControlNet [1]是一个通过添加额外条件来控制稳定扩散模型中图像生成的神经网络。
额外条件怎么理解呢?在没有ControlNet之前,我们一般都是通过提示词
来生成图片,这里的提示词其实就是一种条件。而额外条件就是在提示词的基础上再增加一些参考条件,比如人物的姿势、轮廓、空间感等。
为什么要添加额外条件呢?是因为之前只通过提示词生成的图片随机性太强了,跟抽卡一样,如果是个人玩玩没啥关系,但如果是工作上用,那效率就太低了。而通过添加额外条件,可以达到对出图的一个更精细化的控制,大大提高了出图的效率。
比如下面这张图,在提示词的基础上我们还通过ControlNet生成了一张人物轮廓图,并一起交给了SD,在ControlNet的作用下最后生成的图片也是同样的轮廓。
ControlNet的用处非常多,比如线稿上色、生成固定姿势的人物照(如上图)、将涂鸦变成高质量的图像和艺术字等,具体的生成效果取决于你使用的控制器,所以ControlNet的控制器也非常多,下面我们也会讲到。
一、ControlNet的安装
因为我使用的是秋叶整合包,所以其实已经自带了ControlNet,或者说已经提前安装好了。
如果没有安装的朋友,也可以在扩展这里点击从网址安装,然后像这样输入,并重启即可。
地址: https://gitcode.net/ranting8323/sd-webui-controlnet
如果安装成功,在文生图选项卡应该能看到ControlNet
二、ControlNet的模型
ControlNet 的模型分为两大类,一类是适用于SD1.5模型的ControlNet,另一类是适用于SDXL模型的ControlNet。
适用于SD1.5模型的ControlNet地址在:
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
百度网盘地址:
https://pan.baidu.com/s/1VI6AJh2ozBpSeLOEZWAjlw提取码:8888
也可以通过名称是否包含sd15来辨认:
如果你显存不太够(4G以下),也可以使用修剪后的ControlNet模型(大约少了一半,而且是个别模型才有),地址在:
https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main
适用于SDXL模型的ControlNet地址在:
https://huggingface.co/lllyasviel/sd_control_collection/tree/main
我在网上有看到一张图,对这个SDXL仓库的模型做了一个很好的分类,需要注意的是,里面有3个是适用于SD1.5的。
注:图片来源于 https://www.uisdc.com/controlnet-3
最后注意SD的大模型版本一定要和ControlNet的匹配,比如SDXL大模型用了SD1.5的ControlNet就会报错:
三、在线体验
如果没有安装SD,但又想体验ControlNet的朋友,也可以访问HuggingFace(需要魔法),地址是:
https://huggingface.co/spaces/hysts/ControlNet-v1-1
注:使用的是SD1.5模型
四、参数说明
ControlNet的参数如下图,大致分为三部分,分别是基础参数、模型参数和控制效果参数:
4.1 基础参数
第一个参数是启用,这个非常简单,如果要使ControlNet生效记得勾选
第二个参数是低显存模式,一般是当你的显存比较低(如4G以下),或者出现爆显存的情况下勾选
第三个参数是允许预览,勾选后多一个图片框展示ControlNet预处理后的图像
第四个参数是Mask Upload
,是用来上传蒙版的
第五个参数是完美像素模式,决定了ControlNet预处理图像的分辨率
完美像素模式大家可能会比较迷,如果对这个有疑惑的朋友可以看下面这张图,箭头指向的就是ControlNet生成的预处理图像,而完美像素模式决定的就是这张图的一个分辨率(宽高)。
那完美像素模式是如何决定预处理图像的宽高呢?举个例子,比如我上面左边的图片像素是640x648,在不启用完美像素模式下,会多出一个Preprocessor Resolution
的选项
这个选项控制的是图片最短边的长度,比如我上述图片是600x648,最短的边长度是600,而生成的预处理图像像素不会跟原图保持一致,它的最短边等于Preprocessor Resolution
设定的值,也就是512,而长边也会进行等比缩放,所以最终像素就变成512x518。
而在启用完美像素模式的情况下,预处理图像的分辨率跟出图时设定的分辨率有关,所以Preprocessor Resolution
选项也会被隐藏。比如我出图设定的是400x400,那么预处理图像的分辨率就会变成400x405.
如果还是不懂的,可以看下这篇文章:https://blog.csdn.net/JuMengXiaoKeTang/article/details/136592864
一般来讲,如果你使用的是像Openpose
这样对精度要求不高的模型,可以适当调低预处理图像的分辨率以节约资源;但是对于Canny
、Lineart
、Depth
对精度有一定要求的模型时,建议勾选以获取更好的效果。
4.2 模型参数
这部分可以说是ControlNet中的核心。预处理简单来说就是从从输入图像中提取特定信息(比如边缘、姿态、脸部手部等)的过程,预处理器则是一个具体的实现。
目前预处理器非常多,所以SD也帮我们列举了一些常用
的预处理器,也就是上面的控制类型,使用控制类型可以帮我们快速选择预处理器和对应的模型。1
下图的红色爆炸按钮就是生成预处理图像的按钮。
而模型就是ControlNet所使用的模型了,也就是我们在第二部分提到的模型(一个模型可以对应多个预处理器)
除了上面的分类方式,我在之前收集的资料也看到其他的分类方式,具体出处已经找不到了,大家也可以看看。
4.3 控制效果参数
控制效果参数主要包括:控制权重、引导介入时机和引导结束时机和控制模式这四个。
因为我觉得这四个参数本质上就是在调节ControlNet的一个控制效果,所以起了这么一个名字。
控制权重:其实有点像提示词引导系数(CFG Scale),只不过这个控制的是ControlNet对出图的影响,数值越大,影响越大。
引导介入时机:什么时候开始使用ControlNet,为0就是一开始就介入。
引导终止时机:同理,什么时候结束使用ControlNet,为1就是一直介入直到结束。
控制模式:其实从它的选项也能看出来,就是更偏向提示词还是偏向ControlNet。
最后,由于ControlNet内容较多,所以打算分篇进行讲解,也希望本文能够帮到你!
写在最后
AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。
感兴趣的小伙伴,赠送全套AIGC学习资料和安装工具,包含AI绘画、AI人工智能等前沿科技教程,模型插件,具体看下方。
一、AIGC所有方向的学习路线
AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、AIGC必备工具
工具都帮大家整理好了,安装就可直接上手!
三、最新AIGC学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、AIGC视频教程合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
![](https://img-blog.csdnimg.cn/img_convert/639674927d25b719a94303491f9bae79.jpeg)