浅析扩散模型与图像生成【应用篇】(十八)——ControlNet

18. Adding Conditional Control to Text-to-Image Diffusion Models

  现有的文生图模型如Stable Diffusion通常需要人工输入非常准确的提示词,而且生成的结果还是完全随机不可控制的,只能通过生成多个结果,再从中选取最佳方案。而ControlNet的提出就有效的解决了生成结果不可控的问题,通过引入更多的条件信息,例如:边缘图、深度图、法线方向图、语义分割图等,使得生成结果更接近我们的初衷。
在这里插入图片描述
  那么如何将条件信息引入到生成模型中呢?最常见的思路可能是,直接用新的数据对原始模型进行finetune,但是我们知道SD模型是在一个超大规模的数据集(LAION-5B)上训练得到的,现有的其他的图像数据集与其相比都有着数量级的差距。因此单纯的finetune模型很容易导致过拟合、模式崩溃和灾难性遗忘的问题。为了实现使用少量的数据(几万到几百万级别)就能将新的条件信息注入到SD模型中,且能够在普通显卡平台上完成训练,作者提出了一种新的网络结构ControlNet。
在这里插入图片描述

  其实现方式也并不复杂,如上图所示,一个普通的神经网络块,如残差块、Transformer块,都是输入一个 x x x,然后给出一个输出结果 y y y。而ControlNet为了保证原有模型的能力不受影响,将原有模型的参数锁定,并复制得到一个可训练的模型。然后将条件输入 c c c经过一个“零卷积层”处理后,与原本的输入 x x x相加,再输入到可训练模型中。输出结果再次经过“零卷积层”并于原始输出 y y y相加得到最终的输出结果 y c y_c yc。这里的“零卷积层”实际上就是普通的卷积层,只不过所有的权重和偏置初始化均为0。上述过程的数学化描述如下 y c = F ( x ; Θ ) + Z ( F ( x + Z ( c ; Θ z 1 ) ; Θ c ) ; Θ z 2 ) \boldsymbol{y}_{\mathrm{c}}=\mathcal{F}(\boldsymbol{x} ; \Theta)+\mathcal{Z}\left(\mathcal{F}\left(\boldsymbol{x}+\mathcal{Z}\left(\boldsymbol{c} ; \Theta_{\mathrm{z} 1}\right) ; \Theta_{\mathrm{c}}\right) ; \Theta_{\mathrm{z} 2}\right) yc=F(x;Θ)+Z(F(x+Z(c;Θz1);Θc);Θz2)单纯看公式容易让人眼花,我们借助“Stable Diffusion — ControlNet 超详细讲解”这篇博客里的插图来帮助理解
在这里插入图片描述
  从上往下, c c c是条件输入, Θ z 1 \Theta_{\mathrm{z}_1} Θz1是第一个零卷积层的参数,得到卷积后的条件 Z ( c ; Θ z 1 ) \mathcal{Z}\left(\boldsymbol{c} ; \Theta_{\mathrm{z} 1}\right) Z(c;Θz1);然后与输入 x x x相加输入到可训练模型 F \mathcal{F} F中,其权重参数表示为 Θ c \Theta_{\mathrm{c}} Θc;接着模型的输出再次经过权重为 Θ z 2 \Theta_{\mathrm{z}_2} Θz2的零卷积层,最后与原本的模型输出 y = F ( x ; Θ ) \boldsymbol{y}=\mathcal{F}(\boldsymbol{x} ; \Theta) y=F(x;Θ)相加得到最终的输出 y c \boldsymbol{y}_{\mathrm{c}} yc。值得注意的是,由于零卷积层初始的权重参数为0,因此第一次前向计算得到的 y c = y \boldsymbol{y}_{\mathrm{c}} = \boldsymbol{y} yc=y,随着梯度反向传播的过程,零卷积层上的权重参数也会不断更新。
在这里插入图片描述
  了解了单个模块中ControlNet是如何工作的,我们来看一下它是如何与StableDiffusion模型结合起来的,如上图所示SD模型是一个典型的UNet网络结构,由25个网络块构成,其中包含12个编码器、12个解码器和一个中间层。作者对12个编码器和一个中间层增加了ControlNet,即复制编码器块和中间层块的权重参数进行训练,并通过零卷积层与相应的解码器层进行连接。因为SD模型的前端有一个编码器将输入图像压缩至64*64尺寸的潜在特征,而输入的条件 c f c_f cf通常与输入图像尺寸相同,因此也需要一个额外的小模型 E \mathcal{E} E将其尺寸统一为64 *64, E \mathcal{E} E由四个卷积层构成在训练过程中与其他模块一起训练。
  模型的损失函数还是采用了扩散模型的目标函数 L = E z 0 , t , c t , c f , ϵ ∼ N ( 0 , 1 ) [ ∥ ϵ − ϵ θ ( z t , t , c t , c f ) ) ∥ 2 2 ] \left.\mathcal{L}=\mathbb{E}_{\boldsymbol{z}_{0}, \boldsymbol{t}, \boldsymbol{c}_{t}, \boldsymbol{c}_{\mathrm{f}}, \epsilon \sim \mathcal{N}(0,1)}\left[\| \epsilon-\epsilon_{\theta}\left(\boldsymbol{z}_{t}, \boldsymbol{t}, \boldsymbol{c}_{t}, \boldsymbol{c}_{\mathrm{f}}\right)\right) \|_{2}^{2}\right] L=Ez0,t,ct,cf,ϵN(0,1)[ϵϵθ(zt,t,ct,cf))22]其中 c f \boldsymbol{c}_{\mathrm{f}} cf表示输入的图像条件, c t \boldsymbol{c}_{\mathrm{t}} ct表示输入的文本条件。作者还提出了一种无分类器引导的分辨率加权技术(Classifier-free guidance resolution weighting,CFG-RW),将图像条件乘以不同的权重系数再作用于扩散模型的输出结果,权重系数根据每个网络块的分辨率来计算, w i = 64 / h i w_i=64/h_i wi=64/hi h i h_i hi为第 i i i个块的尺寸大小,如 h 1 = 8 , h 2 = 16... h_1=8,h_2=16... h1=8,h2=16...
  ControlNet在多种类型的图像条件下都取得了很好的生成效果,而且只需要10K左右的优化训练次数,目前ControlNet已经内置在SD软件中,并且提供了非常多类型的模型。最新的V1.1版本还增加了风格迁移、指令图像编辑等功能。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

竞争分析:波特五力模型

波特五力模型是分析企业竞争环境的一个分析模型。 根据波特的观点,每家企业都受到“直接竞争对手、顾客、供应商、潜在新进公司和替代性产品”这五个“竞争作用力”的影响。 我们用波特五力模型试着分析下实体书店竞争是否激励。 直接竞争对手:如果直接…

料堆体积测量新方案:激光雷达

激光雷达测量料堆体积是一种高效且精确的方法。激光雷达的工作原理与雷达相似,通过发射激光束探测目标的位置、速度等特征量。在测量料堆体积时,激光雷达系统向料堆发射激光束,然后接收从料堆表面反射回来的信号。通过对这些反射信号的处理和…

Linux网络之DNS域名解析

一、DNS概述 1.1什么是DNS 域名解析协议,将域名转换成IP地址 1.2为什么要用DNS IP地址不便于记忆,DNS使用户可以通过易记的域名快速访问各种网络资源。 192.168.0.0—— ip地址过长而且都是数字,不方便记忆就出现了域名 www.baidu.com—…

记一次线上日志堆栈不打印问题排查(附:高并发系统日志打印方案可收藏)

目录 一.线上的日志堆栈不打印了二.一步一步仔细排查三.最后搞定四.聊一聊线上日志到底应该怎么打印4.1 日志打印的诉求4.2 常见的系统日志上报方案4.2.1 ELK 方案4.2.2 自定义log appender 完成应用日志采集. 4.3 日志常见框架傻傻分不清4.4 日志在高并发系统中需要注意的 tip…

神仙级Python入门教程,手把手教你从0到精通,学不会算我输!

亲爱的朋友们,你是否对编程充满好奇,却觉得它遥不可及? 你是否想学习一门强大的编程语言,却不知从何下手? 那么,这篇“神仙级”Python入门教程就是为你量身打造的!不论你是编程小白还是有一定…

linux笔记4--shell命令1

文章目录 一. 目录1.说明2.盘符3.linux根目录(以Ubuntu为例)①说明②根目录下一些文件夹的解析/home/root/mnt/media/var/cdrom/etc/lib (/lib32--32位的,/lib64-64位的)/lostfound/boot/proc/bin/sbin/snap/srv/usr/opt/dev/run/tmp 二. ls命令--操作文件夹1.说明2…

探索阿里巴巴商品详情API接口:开启电商数据之旅

阿里巴巴商品详情API接口是阿里巴巴开放平台提供的一项服务,它允许开发者通过调用接口获取指定商品的详细信息,包括商品标题、价格、库存、描述、图片等。这些数据对于电商从业者来说具有极高的价值,可以帮助他们更好地了解市场动态&#xff…

层次分析法(AHP)计算原理解释

AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数&#xff0c…

vue下载文件时显示进度条

1.单个下载&#xff08;开始是导出按钮 下载显示进度条&#xff09; html <el-button click.stop"exportReport(scope.row, scope.index)" v-if"!scope.row.schedule" icon"el-icon-download"size"small" type"text"styl…

Linux第十五章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

系统思考—企业辅导咨询

从2004年、2014年到2024年&#xff0c;国九条政策的发布与变迁不仅影响了行业趋势&#xff0c;更深刻地改变了企业的风险预估和策略辅导。彼得杜鲁克曾经说过&#xff1a;“必须系统地抛弃旧知识。”这不仅是企业领导者的挑战&#xff0c;也是我们每个人的难题。难点不在于我们…

GITEE 基于OAuth2的API V5版本

为了构建更好的码云生态环境&#xff0c;我们推出了基于OAuth2的API V5版本。 API V5接口使用方式以及Url都参照GitHub&#xff0c;为了各位开发者更好的兼容已经存在的第三方应用。 API 使用条款 OSCHINA 用户是资源的拥有者&#xff0c;需尊重和保护用户的权益。不能在应用…

Spring AI 抢先体验,5 分钟玩转 Java AI 应用开发

作者&#xff1a;刘军 Spring AI 是 Spring 官方社区项目&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。 Spring Cloud Alibaba AI 以 Spring AI 为基础&#xff0c;并在此基础上提供阿里云通义系列大模…

XY_RE复现(二)

一&#xff0c;何须相思煮余年 0x55 0x8b 0xec 0x81 0xec 0xa8 0x0 0x0 0x0 0xa1 0x0 0x40 0x41 0x0 0x33 0xc5 0x89 0x45 0xfc 0x68 0x9c 0x0 0x0 0x0 0x6a 0x0 0x8d 0x85 0x60 0xff 0xff 0xff 0x50 0xe8 0x7a 0xc 0x0 0x0 0x83 0xc4…

编译Qt6.5.3LTS版本(Mac/Windows)的mysql驱动(附带编译后的全部文件)

文章目录 0 背景1 编译过程2 福利参考 0 背景 因为项目要用到对MYSQL数据库操作&#xff0c;所以需要连接到MYSQL数据库。但是连接需要MYSQL驱动&#xff0c;但是Qt本身不自带MYSQL驱动&#xff0c;需要自行编译。网上有很多qt之前版本的mysql驱动&#xff0c;但是没有找到qt6…

SiO2杂化纳米纤维膜

SiO2杂化纳米纤维膜是一种结合了二氧化硅&#xff08;SiO2&#xff09;纳米颗粒和其他材料&#xff08;如聚合物&#xff09;的复合纳米纤维膜。这种膜材料结合了SiO2的良好性能&#xff08;如高硬度、高耐磨性、热稳定性等&#xff09;和其他材料的特性&#xff08;如柔韧性、…

【XR806开发板试用】基于XR806实现智能小车

一、实验功能&#xff1a; 1、 基于XR806实现WIFI连接路由器 2、 XR806设备创建TCP socket服务器&#xff0c;局域网内通过PC端TCP客服端连接XR806 TCP服务器进行指令控制小车运行&#xff08;指令&#xff21;&#xff1a;前进、&#xff22;&#xff1a;后退、&#xff23;&…

等保测评有那些流程?为什么要做等保

根据《网络安全法》规定&#xff0c;网络运营者应当按照国家的网络安全技术标准和要求&#xff0c;采取技术措施保障网络安全&#xff0c;避免网络安全事件的发生。而等保测评是国家对企事业单位进行信息系统安全等级评定的一项重要制度&#xff0c;通过等级测评&#xff0c;可…

五一出去玩,随身WiFi纽曼和格行,哪个更值得选择?2024随身WiFi大流量全国通用,2024随身WiFi推荐第一名

临近五一&#xff0c;有太多的朋友需要出去游玩&#xff0c;但是会面临网络差&#xff0c;流量不够用等问题&#xff0c;从而选择随身WiFi。那么有非常多的朋友就纠结了&#xff0c;作为老牌企业的格行和纽曼到底选择哪个呢&#xff1f;下面我们将会从网速、续航、售后、客户评…

鸿蒙OpenHarmony【标准系统 烧录】(基于RK3568开发板)

烧录 烧录是指将编译后的程序文件下载到芯片开发板上的动作&#xff0c;为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能&#xff0c;操作简单&#xff0c;能快捷、高效的完成程序烧录&#xff0c;提升烧录的效率。 RK3568的镜像烧录通过Windows环境进行烧录&…