【ControlNet v3版本论文阅读】

news2024/11/20 0:24:12

网络部分最好有LDM或者Stable Diffusion的基础,有基础的话会看的很轻松

Abstract

1.提出了一种网络结构支持额外输入条件控制大型预训练的扩散模型。利用预训练模型学习一组不同的条件控制。
2.ControlNet对于小型(<50k)或大型(>1m)数据集都是稳健,可以促进更广泛的应用控制图像扩散模型。

Introduction

现有问题:
1.仅通过文本提示很难准确表达复杂的布局、姿势、形状和形式去生成所需图像,通常需要多次文本编辑。
想法:
提供额外的空间控制(条件)以生成想要的图像组合且深度到图像、姿势到图像等问题需要端到端学习和数据驱动的解决方案。
挑战:
1.特定条件的训练数据数量可能明显小于通用文本到图像训练的数据。(直接对大模型进行微调可能会导致过拟合和灾难性遗忘等问题)
->解决 设计更深或更定制的神经架构处理具有复杂形状和步同高级语义的图像。

ControlNet

1.端到端的神经网络架构学习大型与训练文本到图像扩散模型的条件控制
2.锁定大模型的参数以保留质量和功能,并使其成为其编码层的可训练副本
3.可训练副本和原始锁定模型通过零卷积层相连,且权重初始化为0(训练期间主键增长),保证训练开始时不会将有害噪声添加到大型扩散模型的深度特征中,并保护可训练副本中的大规模预训练主干不被此类噪声破坏。
实验结果:
1.可多种条件控制
2.可不同大小数据集
3.省显卡
贡献:
1.我们提出了 ControlNet,这是一种神经网络架构,可以通过有效的微调将空间局部输入条件添加到预训练的文本到图像扩散模型中
2.我们提出了预训练的 ControlNets 来控制稳定的扩散,以 Canny 边缘、Hough 线、用户涂鸦、人类关键点、分割图、形状法线、深度和卡通线条图为条件
3.我们通过消融实验验证该方法,并与几种替代架构进行比较,并开展用户研究专注于跨不同任务的几个先前基线。

Method

3.1 基本结构

在这里插入图片描述
神经块输入特征图x,输出特征图y,参数为在这里插入图片描述,公式为:在这里插入图片描述
ControlNet中锁定原始块参数在这里插入图片描述,并克隆为可训练副本参数为在这里插入图片描述,输入外部条件向量c,用两个不同参数的初始化为零的零卷积层在这里插入图片描述
将副本连接到主干网络。公式为:在这里插入图片描述
总结: 其实就是将输入条件先进行零卷积,然后将加上输入的x的结果输入克隆网络得到结果,将结果再进行零卷积后与x进入主干网络得到的结果y相加。

3.2 如何将ControlNet应用于图像扩散模型稳定扩散

使用stable diffusion(U-Net)作为大型预训练扩散模型,包括:编码器、中间块和跳过连接解码器,具体包含什么块可以看图片或者源码。文本提示使用CLIP进行编码,扩散时间步使用一个时间编码器使用位置编码。
controlnet的具体结构如图所示。
补充: ControlNet类似LDM,在将原始条件输入网络之前先使用卷积等操作将特征转化到隐式空间在这里插入图片描述,然后再输入到ControlNet。

在这里插入图片描述

3.3 训练,推理过程中额外因素

网络的损失函数:
在这里插入图片描述
1.训练;训练过程中将50%文本提示随机替换为空字符串以增加直接识别条件图像语义的能力。
2.零卷积不会向网络添加噪声,模型应始终能够预测高质量的图像。
3.会有突然收敛现象(不到10K优化步骤)

3.4 组合多个ControlNets

Classifier-free guidance resolution weighting.

Composing multiple ControlNets.

可以直接将相应的ControlNets的输出添加到稳定扩散模型中(图6)。这种组合不需要额外的加权或线性插值。

实验

消融实验

1.不同卷积层和不同提示的效果对比:
在这里插入图片描述

定量评价

1.用户调研
在这里插入图片描述
2.与工业模型比较
stable diffusion需要:在这里插入图片描述
controlnet需要在这里插入图片描述
发现结果差不多
3.条件重建和 FID 分数。
在这里插入图片描述
在这里插入图片描述

讨论

训练数据集大小的影响: 小数据集也行,大了更好
在这里插入图片描述

解释内容能力:
在这里插入图片描述

可用于各种扩散模型
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经典机器学习模型(九)EM算法在高斯混合模型中的应用

经典机器学习模型(九)EM算法在高斯混合模型中的应用 EM算法的推导可以参考&#xff1a; 经典机器学习模型(九)EM算法的推导 若随机变量X服从一个数学期望为 μ μ μ、方差为 σ 2 σ^2 σ2的正态分布&#xff0c;可以记为 N ( μ &#xff0c; σ 2 ) N(μ&#xff0c;σ2)…

二叉树进阶——手撕二叉搜索树

troop主页&#xff1a;troop 手撕二叉搜索树 1.二叉搜索树的定义2.实现&#xff08;非递归&#xff09;补充结构2.1查找2.2插入2.3删除&#xff08;重要&#xff09;情况1(无孩子&&一个孩子&#xff09; 3.二叉搜索树的应用3.1K模型3.2KV模型3.2.1KV模型的实现 总结二叉…

「每日跟读」英语常用句型公式 第4篇

「每日跟读」英语常用句型公式 第4篇 1. I’ve decided to ____ 我决定要____了 I’ve decided to take a vacation (我决定要去度假) I’ve decided to change my lifestyle (我决定要改变我的生活方式) I’ve decided to adopt a dog (我决定要收养一条狗了) I’ve dec…

【AOSP】手把手教你编译和调试AOSP源码

一、下载AOSP源码 在开始之前&#xff0c;我们先安装编译AOSP需要的一些系统基本依赖&#xff0c;如下命令 sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 lib32ncurses5-dev x11proto…

三子棋游戏----C语言版【超级详细 + 视频演示 + 完整源码】

㊙️小明博客主页&#xff1a;➡️ 敲键盘的小明 ㊙️ ✅关注小明了解更多知识☝️ 文章目录 前言一、三子棋的实现思路二、三子棋的实现步骤2.1 先显示游戏的菜单2.2 游戏的具体实现2.2.1 棋盘的初始化2.2.2 展示棋盘2.2.3 下棋&#x1f534;玩家下棋&#x1f534;电脑下棋2.2…

OpenHarmony开发-系统烧录

本文详细介绍了烧录OpenHarmony系统到开发板的操作流程。从基础的硬件准备和软件环境设置入手&#xff0c;详细说明了如何配置开发环境、构建系统镜像等过程&#xff0c;详细描述了烧录过程中的关键步骤&#xff0c;以及如何使用专用工具将OpenHarmony系统镜像传输到开发板。同…

【Rust】环境搭建

Rust 支持很多的集成开发环境&#xff08;IDE&#xff09;或开发专用的文本编辑器。 官方网站公布支持的工具如下&#xff08;工具 - Rust 程序设计语言&#xff09; 本课程将使用 Visual Studio Code 作为我们的开发环境&#xff08;Eclipse 有专用于 Rust 开发的版本&#…

vue使用iview导航栏Menu activeName不生效

activeName不生效 一、问题一、解决方案&#xff0c; 一、问题 根据ivew官网的提示&#xff0c;设置了active-name和open-names以后&#xff0c;发现不管是设置静态是数据还是设置动态的数据&#xff0c;都不生效 一、解决方案&#xff0c; 在设置动态名称的时候&#xff0c…

docker笔记(一):安装、常用命令

一、docker概述 1.1docker为什么会出现 各种环境配置十分繁琐&#xff0c;每一个机器都需要配置环境&#xff0c;难免出现各种问题。 发布一个项目jar需要配置&#xff08;MySQL、redis、jdk、…&#xff09;&#xff0c;项目不能都带上环境安装打包&#xff1a; 传统&…

Redis实战篇-集群环境下的并发问题

实战篇Redis 3.7 集群环境下的并发问题 通过加锁可以解决在单机情况下的一人一单安全问题&#xff0c;但是在集群模式下就不行了。 1、我们将服务启动两份&#xff0c;端口分别为8081和8082&#xff1a; 2、然后修改nginx的conf目录下的nginx.conf文件&#xff0c;配置反向代…

前端:注册页面(后端php实现)

效果 代码 Regist.php <!-- 内部员工注册 --> <?php require_once get_db_conn.php; $conn db_connect();?> <?php //设置变量的默认值 if (!isset($_POST[UserID])) {$_POST[UserID] ; } if (!isset($_POST[Password])) {$_POST[Password] ; } if (!i…

数据字典

文章目录 一、需求分析二、表设计&#xff08;两张表&#xff09;三、功能实现3.1 数据字典功能3.1.1 列表功能3.1.2 新增数据字典3.1.3 编辑数据字典 3.2 数据字典明细3.2.1 列表功能3.2.2 新增字典明细3.2.3 编辑字典明细 3.3 客户管理功能3.3.1 列表功能3.3.2 新增用户3.3.3…

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型(包括Pro版本的Opus)!亲测比GPT好用!

亲测可用&#xff0c;镜像地址&#xff1a;Claude 3 镜像 使用方法 访问镜像&#xff1a;Claude 3 镜像 2. 点击设置&#xff0c;配置授权码&#xff0c;关闭设置。这里免费赠送一个体验版的授权码 sk-SZcJyvx3RXRID624E2D3795578Df44C7Af03F2909a8f5eA0 即可发起对话啦&…

总包不足80w的高龄Android程序员,被面试官diss混得太差,网友狂吐槽……

有网友直言&#xff1a;90%的人一辈子一年也拿不到80万 有网友分析到&#xff1a;看面试情况&#xff0c;没什么希望就直接其实我觉得30岁年薪低于1000万的都是loser&#xff0c;你我都是 有网友说&#xff1a;这几年互联网行业极大发展&#xff0c;让互联网行业成为了明星行…

Python-VBA编程500例-033(入门级)

角色定位(Role Positioning)在编程中的实际应用场景主要体现在以下几个方面&#xff1a; 1、权限管理&#xff1a;在开发企业级应用或复杂的系统时&#xff0c;角色定位用于定义和管理用户的权限。例如&#xff0c;一个系统可能有管理员、普通用户、访客等不同角色&#xff0c…

CSS设置字体样式

目录 前言&#xff1a; 1.font-family&#xff1a; 2.font-style&#xff1a; 3.font-weight&#xff1a; 4.font-size&#xff1a; 5.font-variant&#xff1a; 6.font&#xff1a; 前言&#xff1a; 在网页中字体是重要的组成部分&#xff0c;使用好字体可以让网页更…

手动实现Tomcat底层机制+自己设计Servlet

文章目录 1.Tomcat整体架构分析自己理解 2.第一阶段1.实现功能2.代码1.TomcatV1.java 3.调试阶段1.阻塞在readLine导致无法返回结果 4.结果演示 3.第二阶段1.实现功能2.代码1.RequestHander.java2.TomcatV2.java 3.调试阶段1.发现每次按回车会接受到两次请求 4.结果演示 4.第三…

基于Spring Boot的简历系统设计与开发

基于Spring Boot的简历系统设计与开发 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 部分系统展示 前台首页界面 简历模板管理界面 用户管理界面 管理员登录界…

C++设计模式:策略模式(二)

1、定义与动机 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可互相替换&#xff08;变化&#xff09;&#xff0c;该模式使得算法可独立于使用它的客户程序&#xff08;稳定&#xff09;而变化&#xff08;扩展&#xff0c;子类化&#xff09; 在软…

pinia 的介绍和使用

pinia是vue2,vue2 尤其是vue3官方推荐的状态管理器&#xff0c;和vuex类似&#xff0c;但使用起来更为简单&#xff0c; 概念&#xff1a; state:定义响应式共享变量 getter&#xff1a;相当于计算属性 actions&#xff1a;相当于方法 npm安装 npm install pinia创建pinia ,注…