首页 > 其他分享 >第十五期 04.ControlNet原理

第十五期 04.ControlNet原理

时间:2024-10-25 21:31:39浏览次数:8  
标签:ControlNet 04 训练 卷积 模型 生成 图像 第十五

一: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也是需要一个预处理器进行空间转换)   <iframe height="240" style="display: none !important" width="320"></iframe>

标签:ControlNet,04,训练,卷积,模型,生成,图像,第十五
From: https://www.cnblogs.com/ssyfj/p/18503314

相关文章

  • WPF入门_04绑定
    WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能。WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信息来设置目标对象的属性。目标属性总是依赖属性。然而,源对象可以是任何内容,可以是一个WPF......
  • ubuntu 22.04及以上版本永久关闭SWAP方法
    背景:同事说ubuntu22.04通过常规的方式方法关闭swap,开机后还是会自动挂在swap因为之前写过在ubuntu上ansible自动化部署kubernetes就发现了这个问题,当时就在playbook文件里面写了关闭方法,这里在拿出来细分下通过测试是完全支持ubuntu20版本及以上版本永久关闭swap查看系统......
  • PbootCMS 404 错误解决方法
    对于PbootCMS系统,404错误出现的原因确实通常有以下两种情况:当前栏目调用的页面模板不正确,导致链接不存在:解决方法:进入后台管理,导航至“栏目管理”。检查各栏目的模板设置,确保每个栏目都正确关联了对应的模板文件。如果发现有栏目调用了不存在的模板文件,可以手动选择正......
  • 录音笔芯片方案:NVF04M-SOP16高品质录音IC,捕捉每一个音节
    一、概述录音笔从最初的模拟录音,到如今的数字高清录音,再到集高清录音、录音转文字、同声传译、云端存储等功能于一体的智能录音笔,其演变历程见证了科技的飞速进步。现代录音笔小巧轻便,易于携带,无论是在商务会议、课堂学习,还是采访记录、音乐录制等场合,都能发挥出卓越的性能。NVF04M......
  • 代码随想录算法训练营第24天(补第13天)|226.翻转二叉树, 101. 对称二叉树,104.二叉树的最
    226.翻转二叉树文章链接:https://programmercarl.com/0226.翻转二叉树.html#算法公开课题目链接:https://leetcode.cn/problems/invert-binary-tree/description/迭代法:这里使用了前序遍历来交换左右孩子节点classSolution{public:TreeNode*invertTree(TreeNode*r......
  • vue 项目history模式刷新404问题解决办法
    前言vue项目history模式部署到服务器后,根路径访问没有问题,但是进入其他功能再刷新页面就会出现404,因为你没在nginx或者apache配置上面加上重定向跳转。解决办法,只需要加上这段配置:nginx配置内容:location/{try_files$uri$uri/@router;indexindex.html;}lo......
  • P1085 [NOIP2004 普及组] 不高兴的津津 难点:如何按要求实现打印最生气的天数.py
    """anger=0day=0foriinrange(7):inclass,extra=input(map(int,input().split()))anger=inclass+extraday+=1"""#将anger数组的大小排序,输出anger最大的那一天,但我无法将anger和day连接起来排序#解决办法是用max_anger和angriest_day两个变量,在七天的......
  • java基础day04:方法(函数),练习
    一、Java中的方法(函数)1.定义方法也叫代码块,用于实现代码的封装,方便调用。主要目的是实现代码复用。2、方法和函数关系方法和函数的关系定义方法(面向对象)在类中定义的成员。也可以叫成员方法,属于类创建出来的对象的功能函数(面向过程)3、定义方法        ......
  • 计算机毕业设计项目推荐,个人知识管理系统 79004(开题答辩+程序定制+全套文案 )上万套实
    摘 要尽管我们每天面临的信息越来越多,信息过载与信息噪音越来越严重,但只要我们能充分利用个人知识管理技能,借助有效的个人知识管理软件相信战胜海量信息不再是困难。本课题在分析了个人知识管理现状以及对现有的个人知识管理网站进行研究比较的基础上,针对网络交流互助的特......
  • 页面404超时,nginx配置方案
    只需要更改子域名下的配置文件vhosts.conf 文件,设置php读取超时时间即可fastcgi_read_timeout300;location~\.php(.*)${fastcgi_pass127.0.0.1:9002;fastcgi_indexindex.php;fastcgi_split_path_info^((?U).+\.php)(......