第十五期 04.ControlNet原理

news/2025/3/18 10:46:42/文章来源:https://www.cnblogs.com/ssyfj/p/18503314

一:ControlNet模型的概念

ControlNet 是一个控制预训练图像扩散模型(例如 Stable Diffusion)的神经网络。它允许输入调节图像,然后使用该调节图像来操控图像生成
  • 原始SD模型的输入:prompt、source image
  • ControlNet模型的输入:canny边缘、语义分割图、关键点、涂鸦等

(一)ControlNet控制类型

这里的调节图像类型众多,例如涂鸦、边缘图、姿势关键点、深度图、分割图、法线图等,这些输入都可以作为条件输入来指导生成图像的内容。 下面是一些例子:
  • 按照原图边缘线稿绘画
  • 使用hed边界检测
  • 使用图像深度生成
  • 使用法线图生成图像
  • 使用姿势检测
  • 使用人类涂鸦进行生成
  • 使用语义分割:将图像分割为约 150 种颜色代表的物体,可单独处理天空、建筑、树木等要素
  • 使用m-lsd直线检测算法绘图
  • 其他高级应用场景(图片增亮、个性二维码生成等)

(二)ControlNet优点

与传统的 Img2Img 技术不同,ControlNet 引入了一种突破性的途径来管理生成图像中的姿势、纹理和形状等元素, ControlNet的多功能性有助于应对不同的场景。ControlNet的存在不仅提高了生成图像的定制化能力,还保持了生成的快速和高效。通过这种方式,不论有无大规模数据集,都能够训练出反映输入条件的模型,并且生成忠实于这些条件的高质量图像。

二:ControlNet模型原理

(一)如何控制Stable Diffusion

下图可以看到ControlNet控制Stable Diffusion的过程,就是将Encoder复制训练,decoder部分进行skip connection(跳跃连接)
“skip connection”指的是在网络中跳过某些层直接将前面的特征传输到后面的层的连接。这种连接通常用于卷积神经网络(CNN)中,特别是在那些很深的网络中,比如残差网络(ResNet)。

1.Encoder部分

ControlNet包含了Encoder的一个可训练的复制版本,这意味着创建了Encoder的副本,并且这个副本的权重是可以在训练中更新的这样做是为了让ControlNet能够学习怎么根据不同的条件修改或调整这些特征,以便对图像生成过程中的内容进行条件化控制

2.Decoder部分

ControlNet不会去修改Decoder原有的网络结构,而是使用skip connection来将ControlNet学习到的特征与原SD模型的特征结合。通过这种方式,不仅保留了SD原有的生成能力,还引入了外部条件的控制。

(二)ControlNet简易架构

ControlNet 通过将主要扩散模型的权重复制到“可训练副本”和“锁定副本”中来实现这一目标。锁定副本保留了从大量图像数据中学习到的网络能力,而可训练副本则在特定于任务的数据集上进行训练以掌握条件控制
此过程使用称为“零卷积”的特殊卷积层连接可训练和锁定的神经网络在这一层中,卷积权重通过学习方法逐渐从零发展到最佳设置。该策略保持了细化的权重,确保在各种数据集规模上都有强大的性能。重要的是,由于零卷积不会给深层特征引入额外的噪声,因此训练速度与微调扩散模型的速度相匹配,这与从头开始训练全新层的漫长过程形成鲜明对比。
ControlNet模型的最小单元结构(如上图)中有两个zero convolution模块 ,它们是1×1卷积,并且权重和偏置都初始化为零。
  1. 在我们开始训练ControlNet之前,所有zero convolution模块的输出都为零,使得ControlNet完完全全就在原有Stable Diffusion底模型的能力上进行微调训练,不会产生大的能力偏差
  2. 只有在加入自己的数据训练之后,上图(b)中的trainable copy以及zero convolution中的可学习参数值才会发生变化,使整个网络学习到用户指定的任务。
换句话说,当 ControlNet 应用于某些神经网络块时,在进行任何优化之前,不会对深度神经特征造成任何影响。

(三)zero convolution模块的有效性推导(反向传播)

(四)1X1卷积层作用

https://blog.csdn.net/qq_27278957/article/details/120209780

1.为网络增加非线性,增加网络表达功能(带入激活函数)

2.维度变化,不改变尺寸

在尺寸 3x3,64通道个数的卷积核后面添加一个尺寸1x1,28通道个数的卷积核,就变成了尺寸3x3,28尺寸的卷积核。 原来的64个通道就可以理解为跨通道线性组合变成了28通道,这就是通道间的信息交互。

3.使用更少的权重参数数量

而1x1卷积核 与 3x3 或 5x5 等尺寸更大的卷积核相比有什么优势呢?

(五)ControlNet整体架构

由于 Stable Diffusion 的 UNet 接受潜在特征 (64 × 64) 而不是原始图像,因此我们还必须将基于图像的条件转换为 64 × 64 的特征空间以匹配卷积大小
ControlNet整体架构如下:(需要和SD一致,所以ControlNet也是需要一个预处理器进行空间转换)
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821912.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java的gc为什么要分代

Java的垃圾回收机制(GC)采用了分代策略,其背后的原因有:1.不同对象的生命周期;2.优化内存管理效率;3.降低GC暂停时间;4.更精细的资源分配;5.适应不同应用的需求。这种分代机制充分利用了大多数对象都会很快变得无用的“弱代假说”,从而提高了内存使用和回收的效率。1.…

GDB 奇技淫巧

GDB 奇技淫巧 本文面向读者为使用 NOI Linux 的 OIer,因此只介绍 OIer 可能会使用到的功能,对于工程上的功能不会讲述。今天是 \(\text{CSP-S 2024 Day 0}\),不知道有没有人因为平时依赖 vscode,担心考场上没有合适的调试器呢。 笔者就是这样一个 Joker,但是没有关系,NOI…

py网络工具编程

从各项网络协议开始了解 分析其用途以及攻击价值 通过py构造数据包自动化的实现攻击过程 scapy模块: 该模块非常强大 可以构造绝大部分数据包:上图构造了一个tcp的数据包 其分片为零 协议为tcp再次构造一个数据包 通过调用show()查看默认构造数据包结构如何对数据包的属性值进…

半导体测试行业的相关术语

ATE = Automatic Test Equipment. 是自动化测试设的缩写,于半导体产业意指集成电路(IC)自动测试机, 用于检测集成电路功能之完整性, 为集成电路生产制造之最后流程, 以确保集成电路生产制造之品质。DUT = Device Under Test. 待测设备,半导体行业一般是电子元器件/芯片。P…

Go 实现 LRU 和 LFU

0. 前言 缓存是一个非常大的 topic。常用的缓存算法有 LRU(Latest Recently Used)最近最少使用和 LFU(Latest Frenquency Used)最不经常最少使用算法。 本文会介绍这两种算法,并且给出缓存使用的一些介绍。 1. LRU 首先,LRU 是最近最少使用算法,根据时间的顺序淘汰最久没…

高级语言程序设计第四次作业

一开始没注意题目要求写错了我的写法有点麻烦不知道能不能更简便一开始把循环条件给写错了写了好久才找出来一开始的改正的不对,而且赋值会出现错误;这题没有遇到什么问题一开始不会用getchar想了好久这下面的几题这题不知道为什么前一个数输出了一个负数,但是却不影响结果这…

windows无法访问共享电脑怎么办

当Windows无法访问共享电脑时,您可以采取以下措施:1. 检查网络连接和设置;2. 校验文件和打印机共享设置;3. 考虑网络发现设置;4. 重新配置防火墙规则;5. 检查用户帐户和权限设置。在共享过程中,确保系统和网络配置正确是至关重要的。1.检查网络连接和设置 当Windows无法…

机器视觉的主要功能分别是什么

机器视觉的主要功能包括图像采集、图像处理与分析、特征提取、物体识别与分类、三维重建、以及动作控制和决策输出。其中,特征提取是关键步骤,通常用于识别物体的不同属性,如形状、颜色或纹理。这些功能合作,使机器视觉系统能够模拟人类视觉进行信息处理,并用于各种应用场…

软件开发与测试模型

软件开发模型软件开发生命周期模型是软件产品从最初构思到退役的过程。常见的软件开发模型 大爆炸模型直接开发(有想法直接编程无计划性)。边写边改模型变对需求进行分析边对软件进行编程。 先简单的设计来回编程来回测试来回修改直至觉得足够才发布产品。 无计划与文档可以迅…

第9课—项目管理工具禅道

一、禅道的介绍 (1)定义禅道是一个项目管理工具,也是一个bug管理工具,还是一个用例管理工具。 (2)作用:为了解决众多企业在管理中出现混乱,无序的现象,开发出来 (3)来源:禅道属易软天创公司 (4 )禅道是集于产品管理,项目管理,测试管理于一身,同时包含事务管理…

求中位数应经常联想到二分

题目链接:https://codeforces.com/contest/2008/problem/H首先想了一会,随后想到了取模,但是由于这个q太大于是考虑是否可以实现动态变化最后还是没得出结果,遂看了题解。 原来这道题由于n的限制,所以可以对求出取模所对应的余数的取模区间 \([k*x,k*x+m]\),于是复杂度到…

IDEA如何配置Java环境,jdk路径

前言 我们在使用IDEA开发Java应用时,一般第一步就是需要配置好我们的jdk环境,并且在IDEA里面配置jdk的安装路径。 那么,我们应该如何配置呢? 如何配置jdk路径 首先,我们点击【File】,再点击【Project Structure】。然后,我们点击下【Project】,点击【Edit】,选择jdk的…