Stable Diffusion基本教程 :ControlNet控图功能

ControlNet 官方模型,最早时候开源的模型只有 depth、hed、normal、scribble、seg、openpose、mlsd、canny 这 8 种,随着这半年的迭代已经更新到 14 种之多。每种模型都有各自的特点,对新手来说想每个都完全记住实在有点困难,因此这里我按照模型的控图方向分为 4 种类型,分别是轮廓类、景深类、对象类和重绘类。

插件安装

  1. 打开“扩展”选项卡。

  2. 打开选项卡中的“从 URL 安装”选项卡。

  3. 输入“扩展的 git 存储库的 URL”。https://github.com/Mikubill/sd-webui-controlnet.git

  4. 按“安装”按钮。

  5. 等待 5 秒钟,您将看到消息“已安装到 stable-diffusion-webui\extensions\sd-webui-controlnet。使用“已安装”选项卡重新启动”。

  6. 转到“已安装”选项卡,单击“检查更新”,然后单击“应用并重新启动UI”。(下次您也可以使用这些按钮更新 ControlNet。

  7. 完全重新启动 A1111 webui,包括您的终端。(如果您不知道什么是“终端”,则可以重新启动计算机以达到相同的效果。

模型安装

   ControlNet1.1目前开源的模型包括14 种,作为 ControlNet 的布道者,我们可以将这些称之为经典的官方模型。 

ControlNet 1.1.4官方一共列举了 43 种新的控制模型,其中 3 款是用于 SD1.5 的,其余的都是 XL 系列的控制模型。因为这些模型来自多个不同的开发方,有很多的功能是重复的,所以我们不需要全部下载,只选择一个系列使用即可。比如 Stability AI 推出的 sai_xl 256 系列,或者腾讯推出的 t2i 系列。控制模型下载完成后,放到到根目录的 extensions\sd-webui-controlnet\models 文件夹。回到 WebUI 中, 刷新 controlnet 模型列表,即可看到安装的控制模型。

  • 名称带 xl 的控制模型只能与 SDXL 系列的大模型配合使用;

  • 名称带 xl 的控制模型没有配对的 yaml 预处理器;

  • Revision 和 Reference 这 2 款预处理器同样适用于 SDXL,但需要控制模型

    ControlNet v1.1.0模型下载:

    https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

    ControlNet v1.1.4模型下载:https://huggingface.co/lllyasviel/sd_control_collection/tree/main

功能介绍

1. Canny 硬边缘

Canny 硬边缘,它的使用范围很广,被作者誉为最重要的(也许是最常用的)ControlNet 之一,该模型源自图像处理领域的边缘检测算法,可以识别并提取图像中的边缘特征并输送到新的图像中。

Canny 中只包含了 canny(硬边缘检测)这一种预处理器。下图中我们可以看到,canny 可以准确提取出画面中元素边缘的线稿,即使配合不同的主模型进行绘图都可以精准还原画面中的内容布局。

2. Depth 深度检测

深度图也被称为距离影像,可以将从图像采集器到场景中各点的距离(深度)作为像素值的图像,它可以直接体现画面中物体的三维深度关系。学习过三维动画知识的朋友应该听说过深度图,该类图像中只有黑白两种颜色,距离镜头越近则颜色越浅(白色),距离镜头越近则颜色越深(黑色)。

Depth 模型可以提取图像中元素的前后景关系生成深度图,再将其复用到绘制图像中,因此当画面中物体前后关系不够清晰时,可以通过 Depth 模型来辅助控制。下图中可以看到通过深度图很好的还原了建筑中的空间景深关系。

3. Lineart线稿

在 ControlNet 插件中,将 lineart 和 lineart_anime2 种控图模型都放在「Lineart(线稿)」控制类型下,分别用于写实类和动漫类图像绘制,配套的预处理器也有 5 个之多,其中带有 anime 字段的预处理器用于动漫类图像特征提取,其他的则是用于写实图像。

在下图中我们可以看到,Canny 提取后的线稿类似电脑绘制的硬直线,粗细统一都是 1px 大小,而 Lineart 则是有的明显笔触痕迹线稿,更像是现实的手绘稿,可以明显观察到不同边缘下的粗细过渡。

4.MLSD 直线边缘

MLSD 直线。MLSD 提取的都是画面中的直线边缘,在下图中可以看到 mlsd(M-LSD 直线线条检测)预处理后只会保留画面中的直线特征,而忽略曲线特征。

5. Normal Map 法线贴图

NormalMap 法线贴图,要理解它的工作原理,我们需要先回顾下法线的概念。

我们在中学时期有学过法线,它是垂直与平面的一条向量,因此储存了该平面方向和角度等信息。我们通过在物体凹凸表面的每个点上均绘制法线,再将其储存到 RGB 的颜色通道中,其中 R 红色、G 绿色、B 蓝色分别对应了三维场景中 XYX 空间坐标系,这样就能实现通过颜色来反映物体表面的光影效果,而由此得到的纹理图我们将其称为法线贴图。由于法线贴图可以实现在不改变物体真实结构的基础上也能反映光影分布的效果,被广泛应用在 CG 动画渲染和游戏制作等领域。

6. OpenPose 姿态检测

OpenPose 特点是可以检测到人体结构的关键点,比如头部、肩膀、手肘、膝盖等位置,而将人物的服饰、发型、背景等细节元素忽略掉。它通过捕捉人物结构在画面中的位置来还原人物姿势和表情。

7. SoftEdge 软边缘

Soft Edge 是一种比较特殊的边缘线稿提取方法,它的特点是可以提取带有渐变效果的边缘线条,由此生成的绘图结果画面看起来会更加柔和且过渡自然。

8. Scribble 涂鸦

Scribble 涂鸦,也可称作 Sketch 草图,同样是一款手绘效果的控图类型,但它检测生成的预处理图更像是蜡笔涂鸦的线稿,在控图效果上更加自由。

  1. Seg 语义分割

Segmentation 的完整名称是 Semantic Segmentation 语义分割,很多时候简称为 Seg。和以上其他线稿类控制类型不同,它可以在检测内容轮廓的同时将画面划分为不同区块,并对区块赋予语义标注,从而实现更加精准的控图效果。

10. 局部重绘

ControlNet 中的 Inpaint 相当于更换了原生图生图的算法,在使用时还是受重绘幅度等参数的影响。如下图的案例中我们使用较低的重绘幅度,可以实现不错的真实系头像转二次元效果,且对原图中的人物发型、发色都能比较准确的还原。

11.Tile 分块

Tile 可以说是整个重绘类中最强大的一种模型,绘制超分辨率的高清大图一直是很多极客玩家的追求,但限于显卡高昂的价格和算力瓶颈,通过 WebUI 直出图的方式始终难以达到满意的目标。后来聪明的开发者想到 Tile 分块绘制的处理方法,原理就是将超大尺寸的图像切割为显卡可以支持的小尺寸图片进行挨个绘制,再将其拼接成完整的大图,虽然绘图时间被拉长,但极大的提升了显卡性能的上限,真正意义上实现了小内存显卡绘制高清大图的操作。

但这个过程中始终有个问题困扰着很多开发者,那就是分块后的小图始终难以摆脱全局提示词的影响。举个例子,我们的提示词是 1girl,当图像分割为 16 块进行绘制时,每个块都会被识别成一张独立的图片,导致每个块中可能都会单独绘制一个女孩。而 ControlNet Tile 巧妙的解决了这个问题。在绘制图像时启用 Tile 模型,它会主动识别单独块中的语义信息,减少全局提示的影响。具体来说,这个过程中 Tile 进行了 2 种处理方式:

  1. 忽略原有图像中的细节并生成新的细节。

  2. 如果小方块的原有语义和提示词不匹配,则会忽略全局提示词,转而使用局部的上下文来引导绘图。

在之前图生图给大家介绍重绘幅度参数时,有提到增大重绘幅度可以明显提升画面细节,但问题是一旦设定重绘幅度画面内容很容易就发生难以预料的变化,而配合 Tile 进行控图就能完美的解决这个问题,因为 Tile 模型的最大特点就是在优化图像细节的同时不会影响画面结构。

基于以上特点,ControlNet Tile 被广泛用于图像细节修复和高清放大,最典型的就是配合 Tile Diffusion 等插件实现 4k、8k 图的超分放大,相较于传统放大,Tile 可以结合周围内容为图像增加更多合理细节。关于图像放大还有很多玩法可以给大家介绍,后面会单独给大家出一期文章。理论上来说,只要分得块足够多,配合 Tile 可以绘制任意尺寸的超大图。

Tile 中同样提供了 3 种预处理器:colorfix、colorfix+sharp、resample,分别表示固定颜色、固定颜色+锐化、重新采样。下图中可以看到三种预处理器的绘图效果,相较之下默认的 resample 在绘制时会提供更多发挥空间,内容上和原图差异会更大。

12.InstructP2P 指导图生图

InstructP2P 的全称为 Instruct Pix2Pix 指导图生图,使用的是 Instruct Pix2Pix 数据集训练的 ControlNet。它的功能可以说和图生图基本一样,会直接参考原图的信息特征进行重绘,因此并不需要单独的预处理器即可直接使用。

下图中为方便对比,我们将重绘幅度降低到 0.1,可以发现开启 InstructP2P 后的出图效果比单纯图生图能保留更多有用细节。

IP2P 目前还处于试验阶段,并不是一种成熟的 ControlNet 模型,平时使用并不多,大家大致了解其功能即可。

13. Shuffle 随机洗牌

随机洗牌是非常特殊的控图类型,它的功能相当于将参考图的所有信息特征随机打乱再进行重组,生成的图像在结构、内容等方面和原图都可能不同,但在风格上你依旧能看到一丝关联。

14.Reference 参考

Reference 使用时不需要使用模型,它的功能很简单,就是参考原图生成一张新的图像,想使用它需要将 ControlNet 更新到至少 v1.1.153 以上。

  1. Recolor 重上色

Recolor 也是近期刚更新的一种 ControlNet 类型,它的效果是给图片填充颜色,非常适合修复一些黑白老旧照片。但 Recolor 无法保证颜色准确出现特定位置上,可能会出现相互污染的情况,因此实际使用时还需配合如打断等提示词语法进行调整。

Recolor 无需配合模型使用,这里也提供了 intensity 和 luminance2 种预处理器,通常推荐使用 luminance,预处理的效果会更好。

  1. T2I-Adapter 文生图适配器

T2I-Adapter 由腾讯 ARC 实验室和北大视觉信息智能学习实验室联合研发的一款小型模型,它的作用是为各类文生图模型提供额外的控制引导,同时又不会影响原有模型的拓展和生成能力。名称中 T2I 指的是的 text-to-image,即我们常说的文生图,而 Adapter 是适配器的意思。

T2I-Adapter 被集成在 ControlNet 中作为某一控制类型的选项,但实际上它提供了 Lineart、Depth、Sketch、Segmentation、Openpose 等多个类型的控图模型来使用。

T2I-Adapter 的特点是体积小,参数级只有 77M,但对图像的控制效果已经很好,且就在 9 月 8 日,它们针对 SDXL 训练的控图模型刚刚发布,是目前最推荐用于 SDXL 的 ControlNet 模型,但需要注意的是 SDXL 类模型对硬件要求较高,官方建议至少需要 15GB 的显卡内存,想体验的小伙伴可在下面地址中自行下载安装到本地。

  1. IP-Adapter 图生图适配器

IP-Adapter 是腾讯的另一个实验室 Tencent AI Lab 研发的控图模型。名称中的 IP 指的是 Image Prompt 图像提示,它和 T2I-Adapter 一样是一款小型模型,但是主要用来提升文生图模型的图像提示能力。IP-Adapter 自 9 月 8 日发布后收到广泛好评,因为它在使用图生图作为参考时,对画面内容的还原十分惊艳,效果类似 Midjourney 的 V 按钮。它也同样内置了多种控图模型,下图中是官方提供的绘图案例。

IP-Adapter 的参数级比 T2I-Adapter 更小,只有 22MB。IP-Adapter 也发布了针对 SDXL_1.0 的控图模型,感兴趣的小伙伴可以通过下方的链接下载尝试。

IP-Adapter 控图模型代码仓库地址: https://huggingface.co/h94/IP-Adapter

18.Revison

类似提示词的作用,输入一张图片,无需提示词。直接生成。

效果

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

若有侵权,请联系删除
  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stable diffusion controlnet是一个用于网络技术的源码,它主要用于实现网络中的扩散控制功能。扩散控制是指通过调整网络节点之间的通信速率,以实现网络资源的平衡利用和避免网络拥塞的技术。 源码分析是指对该源码进行深入的研究和解析。 首先,stable diffusion controlnet的源码可以从开源社区或者相关的资源库中获取。我们首先需要对源码进行编译和构建,确保可以成功地在我们的环境中运行。 然后,我们可以对源码的结构进行分析。通常,源码会包含多个文件和目录,其中主要包括各种类、函数和变量的定义和实现。我们需要仔细阅读每个文件和目录的功能和作用,了解它们之间的关联和调用关系。 在阅读源码的过程中,我们可以关注以下几点: 1. 网络扩散控制算法:源码中会实现网络扩散控制的核心算法。我们需要了解算法的原理和实现方式,以及它如何根据网络环境的变化来动态地调整节点之间的通信速率。 2. 数据结构:源码中通常会定义一些数据结构,用于存储和处理网络中的节点信息、拓扑结构和通信状态。我们需要了解这些数据结构的定义和使用方式,以及它们在算法中的作用。 3. 调度和控制逻辑:源码中可能会包含一些调度和控制逻辑,用于管理网络中各个节点的通信行为。我们需要分析这些逻辑的实现方式和策略,了解它们如何协调和控制节点之间的通信行为,以保证网络资源的平衡利用和避免拥塞。 4. 代码的可读性和健壮性:除了功能实现外,源码的可读性和健壮性也是需要关注的。我们可以评估源码的编码规范、注释和错误处理机制等方面,以确保代码的可维护性和稳定性。 总之,通过对stable diffusion controlnet源码的分析,我们可以深入了解网络扩散控制技术的实现方式和原理,为实际应用和二次开发提供参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值