Stable Diffusion教程|Controlnet插件详解和实战

不知道你是否发现,无论你再怎么精确使用文本提示词来指导SD模型,也无法描述清楚人物的四肢角度、背景中物体位置等等,因为文字的表达能力很有限。那么有没有一种通过图像特征来为扩散模型生成过程提供更加精细控制的方式,答案是肯定,那就是ControlNet!

目录

1 什么是ControlNet

2 安装ControlNet

3 ControlNet实战应用

**一、**什么是ControlNet

原理

ControlNet是一种能够嵌入任意训练好的扩散模型,并为这些扩散模型提供更多控制条件的神经网络结构。

ControlNet的基本结构如图

ControlNe的基本结构由一个对应的原先网络的神经网络模块和两个"零卷积"层组成。在之后的训练过程汇总,会"锁死"原先网络的权重,只更新ControlNet基本结构中的网络"副本"和零卷积层的权重。这些"副本"将学会如何让模型按照新的控制条件来生成结果,而被"锁死"的网络则会保留原先网络已经学会的所有知识。即使用来训练ControlNet的训练集规模较小,被"锁死"网络原本的权重也能确保扩散模型本身的生成效果不受影响。

这些零卷积层是一些权重和偏置被初始化为0的1×1卷积层,训练开始时,无论新添加什么控制条件,零卷积层都输出0,对扩散模型的生成结果无影响,但随着训练过程深入,Controlnet将学会逐渐调整扩散模型原先的生成过程,使得生成的图像逐渐向新添加的控制条件靠近。

Stable Diffusion + ControlNet

通过这种方式,ControlNet可以重用SD编码器作为一个深度,鲁棒和强大的骨干来学习不同的控制。许多证据验证了SD编码器是一个优秀的骨干。

注意连接层的方式是计算效率高的。原始SD编码器不需要存储梯度(锁定的原始SD编码器块1234和Middle)。所需的GPU内存并不比原来的SD大多少!

更多ControlNet的生成过程,感兴趣的朋友,可以看看原文:

https://github.com/lllyasviel/ControlNet

二、安装 ControlNet

下载ControlNet插件

你如果用的绘世启动器,最新版已经内置了ControlNet插件。

如果没有安装插件如图:

插件地址:https://gitcode.net/ranting8323/sd-webui-controlnet.git

安装后重启,在文生图或图生图里面可以找到对应的controlnet设置模块:

下载安装ControlNet模型

有了插件还不行,里面还需要使用各种模型,真正起作用的是这些模型,只需下载下来放在对应的目录,刷新SD即可。

下载地址:https://huggingface.co/lllyasviel/ControlNet-v1-1

安装目录:...\novelai-webui-aki-v3\models\ControlNet

设置ControlNet

如果想同时使用多个Contronet模型来微调图像,也很简单,到设置里多打开几个即可,重启WEB UI即可生效。

**三、**ControlNet实战应用

openpose生成制定人****物姿势的图片

setp1通过openpose我们可以参考图片的头像、姿态、手势生成图片,设置顺序如图:

  1. 上传一张人物图片。

  2. 选择"启用""pixel perfect""Allow preview"

  3. 选择"OpenPose"类型

  4. 选择预处理器模型"openpose_full",右侧自动出现模型完整名词。

  5. 选择爆炸小图标

  6. 预览生成的pose

  7. 选择Contrlnet更重要

setp2 选择写实类模型,尺寸也参考原图尺寸,其他设置如下,点击生成即可。

这时候,就生成了和原图一一样姿态的图片了。

Depth参考图片空间深度关系

setp3 上图人物手指有明显问题,两个手有重叠交叉前后关系的时候,openpose并不能解决,我们可以叠加第二个controlnet,设置如下:

setp4 重新生成图片。

考虑和openpose和depth生成图片

大家还可以换一张建筑图片,更适合用depth指定空间构图关系。

canny生成艺术字

setp1 用PS做一张白底黑字的艺术字图片。

setp2 controlnet选择"canny",上传这张图片,预览硬边缘。

setp3 选择国风的大模型,输入城市景观的提示词,生成图片。

linear线稿上色

setp1 给一张图片生成线稿。

setp2 给线稿重新上色。

线稿上色

写在最后

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

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

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

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

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!

三、最新AIGC学习笔记

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

四、AIGC视频教程合集

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

五、实战案例

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

若有侵权,请联系删除

相关推荐
搏博9 分钟前
神经网络问题之一:梯度消失(Vanishing Gradient)
人工智能·机器学习
z千鑫9 分钟前
【人工智能】深入理解PyTorch:从0开始完整教程!全文注解
人工智能·pytorch·python·gpt·深度学习·ai编程
YRr YRr17 分钟前
深度学习:神经网络的搭建
人工智能·深度学习·神经网络
威桑19 分钟前
CMake + mingw + opencv
人工智能·opencv·计算机视觉
爱喝热水的呀哈喽23 分钟前
torch张量与函数表达式写法
人工智能·pytorch·深度学习
肥猪猪爸1 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
LZXCyrus1 小时前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
我感觉。2 小时前
【机器学习chp4】特征工程
人工智能·机器学习·主成分分析·特征工程
YRr YRr2 小时前
深度学习神经网络中的优化器的使用
人工智能·深度学习·神经网络
DieYoung_Alive2 小时前
一篇文章了解机器学习(下)
人工智能·机器学习