Stable Diffusion—ControlNet原理及应用

须知

SD的相关笔记都是我看B站up主Nenly同学的教程整理的,里面的文字和图片很多都是教程里面的,整理这类文章主要是防止后期遗忘查阅。

有需求的同学可以去B站观看系列教程,讲的很透彻,很仔细,可以说是我见过最详细的教程了。

教程链接:Nenly同学的个人空间_哔哩哔哩_bilibili

一、ControlNet基本原理

1.核心作用

控制

2.作用结构

ControlNet根据一些额外的信息控制扩散生成走向

Annotator(预处理器):从图片中提取对ControlNet有用的额外信息

Diffusion:在ControlNet指导下生成图像作品

二、ControlNet安装与使用

1.安装

第一步

通过作者提供的安装包下载ControlNet,放在扩展文件夹extensions下,重启WebUI就可以看到

第二步

下载对应的ControlNet模型,不需要每一个都下载,推荐下载以下几个

下载的这些模型放在ControlNet文件夹内的models文件夹里,保证每一个模型有一个同名的Yaml,例如这两个是一对

资料链接

Up主提供的链接:

ControlNet扩展和模型下载:

🔗夸克:夸克网盘分享

🔗度盘:百度网盘 请输入提取码

(在SD10文件夹内,模型很大,正在陆续上传,可以先点收藏码住,后续有版本更新也会同步)

2.基本使用

首先写一个简单提示词,图片信息如下:

(sfw:1.2),absurdres, 1girl, ocean,white dress,long sleeves, sun hat,smile,

Negative prompt: NSFW, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.5), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), (unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers, (((extra arms and legs))),

Steps: 30, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2354501470, Size: 512x512, Model hash: 876b4c7ba5, Model: cetusMix_Whalefall2, Clip skip: 2, Lora hashes: "Clothing -: f038e3a5b67b", Version: v1.5.2-4-g624283b7

从网上下载一个图,找一个沙滩女生的图片,拖放至ControlNet的图片处理区域里

点击左边(Annotator)预处理器选单,用于处理姿势的叫做“Openpose”,openpose_face是带上脸部表情,其他名称也是这种命名方式,初学者使用open pose什么都不带的这种。选好预处理器以后也会多出一系列参数,这些参数保持默认即可。

选择好之后,点击右边模型刷新的小图标,刷新选单,选择和openpose对应的控制模型——openpose

其他操作先保持默认,最后勾选上方的启用就可以生成和当前图片姿势一致的图片。

参数详解

Control Weight:控制效应在图片中呈现出来的强度,多数时候维持默认不动

Starting Control Step和Ending Control Step:影响你在图片不断扩散的过程中什么时候加入ControlNet的影响。

Control Mode:控制你在提示词和ControlNet的信息之间更倾向于哪一个,多数时候会采用平衡模式BalanceMode,代表二者兼顾。

以上三个参数都是影响控制效果的强弱。

缩放模式:会在导入的图片和生成图片不吻合的时候进行起作用,包括拉伸,填充,剪裁。

Lookback:会在一些需要反复迭代的连续生成场景中使用,默认关闭

低显存模式:本身显存不够用,有效降低显存负担

Pixel perfect:自动计算预处理器产出图像最适合的分辨率,避免因为尺寸不合导致的尺寸变形,多数时候选中。选中之后就不用手动的选择预处理器的分辨率。

Allow Preview:会打开一个小的预览窗口,为预处理图像准备。点击爆炸小图标,就可以在预览窗口看到智能识别图片的姿势情况。

可以点击右上角的下载按钮将骨骼图下载下来,骨骼图也可以直接导入controlNet的窗口中。因为该图片已经被预处理器处理过了,所以不需要再次选择预处理器。后面的控制模型要保持和预处理器一致的那个模型。

三、ControlNet五大模型

1.Openpose

控制人物姿势、手、表情

2.Depth

主要应用于对于场景的描绘还原,尤其是富有空间感的多层次场景。选择一个空间照片,选择任意一个带有depth的预处理器。

点击爆炸预处理一下,在预处理窗口中会生成一张深度图片

其中Depth Leres++预处理的效果是最精细的,优先使用这种预处理器。

depth也可以用来生成人物,尤其是那种肢体交叠,人体透视的场景。

3.Canny

用于边缘检测,需要还原外形的情景下,如果图像有一些需要精细表达的内容,也可以使用canny,它可以保证你的文字、标识不变形。

如果使用canny的时候有些线条无法识别,尝试降低threshold数值,能将明暗差异不那么明显的部分线条识别进来。

canny现在主要应用于线稿上色,选择一个线稿。

选择预处理器

给定提示词,大致提点画面内容,选择好风格导向。

此时生成的图像边缘线条模糊,原因是重复提取边缘产生模糊。因为canny的识别规则比较清晰,黑色是背景,白色是边缘,与线稿的颜色相反。

解决方法选择预处理器里面的invert预处理器就可以清晰的显示线条了。

4.SoftEdge(Hed)柔和边缘

又叫做整体边缘线条检测,相较于canny精确的线条检测,softedge的检测更加柔和,会有更大的随机性,AI更大的发挥空间。

预处理器HED的质量比Pidinet质量好,两个带safe的是精简版,根据自己的配置和时间考虑挑选。

5.Scribble(涂鸦)

Scribble是一种更加随机的临摹,给AI充分的发挥空间。

自己可以在备忘录或者Photoshop中画上寥寥几笔,给上少量的提示词,AI就可以根据自己的想象,画出不一样的世界。例如up的例子:

导入这张图

因为白纸黑线,预处理器选择反转。

给出少量提示词

它就会有各种自己的“创作”

四、多重ControlNet应用

在设置选单里,找到ControlNet的设置选项,选择多重ControlNet的最大模型数量,将默认维持的调大,我们可以调整为,保存设置,重启WebUI,ControlNet就有了多个模块。

可以在不同模块上使用不同的预处理器,将对应的ControlNet的模块启用,例如可以同时启用Depth+Openpose选项,这样可以既能准确识别手部又可以识别位置关系。

预处理模型互相配合已达到满意的效果。需要注意的是电脑的显存,如果电脑的显存不太好,那么开启低显存模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值