【ControlNet v3版本论文阅读】

网络部分最好有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.mzph.cn/news/796006.shtml

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

相关文章

Halcon的HWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)

Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍&#xff08;包括绘制ROI&#xff09; 文章目录 Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍&#xff08;包括绘制ROI&#xff09;一、 引入hSmartWindowControl控件二、 编写打开图像功能三、 编写绘制RO…

如何保护您的企业免受人工智能生成的深度伪造品的侵害

最近&#xff0c;网络犯罪分子利用一家跨国公司高管的“深度伪造”视频&#xff0c;说服该公司驻香港的员工汇出 2560 万美元。 根据包含多个 Deepfake 的视频电话会议&#xff0c;员工认为是他们驻英国的首席财务官要求转移资金。 据报道&#xff0c;警方已逮捕六名与该诈骗案…

操作系统②——内存管理

1. 栈、堆 1.1 程序的内存分配 栈区&#xff08;stack&#xff09;&#xff1a;由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈。堆区&#xff08;heap&#xff09;&#xff1a;一般由程序员分配释放&#x…

光猫桥接模式详细步骤

目录 一、前言 路由模式 &#xff08;宽带默认&#xff09; 桥接模式 二、桥接模式步骤 &#xff08;一&#xff09;图片记录备份 设备信息图 网络侧信息 远程管理密码 宽带上网设置 &#xff08;二&#xff09;桥接模式开始 光猫设置 路由器设置 一、前言 重点&a…

jQuery的链式编程

在jQuery中&#xff0c;如果一直对同一个元素进行函数操作&#xff0c;那么可以使用 函数操作名&#xff0c;一直写下去。 //这是普通的事件绑定$("button").click(function() {console.log("1")})$("button").mouseenter(function() {console.l…

存内计算技术在边缘计算、物联网设备中的应用及前景

存内计算技术简介 存内计算技术是一种新兴的计算范式&#xff0c;其核心理念是将存储和计算功能集成在同一硬件单元中。这种技术的优势在于能够在存储单元内部直接进行计算操作&#xff0c;从而减少数据在存储器和处理器之间的传输&#xff0c;提高计算效率。 以下是存内计算技…

2024-04-02 问AI:介绍一下深度学习中的 “迁移学习”

文心一言 迁移学习&#xff08;Transfer Learning&#xff09;是深度学习中一种重要的机器学习方法&#xff0c;其核心思想是将为某个任务A开发的模型作为初始点&#xff0c;重新使用在为任务B开发模型的过程中。这种方法的目的是通过从已学习的相关任务中转移知识&#xff0c…

2_5.Linux存储的基本管理

实验环境&#xff1a; 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称&#xff1a; SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

sharding‐jdbc之分库分表(mysql主从同步的数据库安装和使用)

水平分表 创建基础工程.. 引入sharding‐jdbc的maven依赖包 注意需要数据库连接池等依赖 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.0.0-RC1&l…

【JavaWeb】Day36.MySQL概述——数据库设计-DDL(三)

查询 关于表结构的查询操作&#xff0c;工作中一般都是直接基于图形化界面操作。 1.查询当前数据库所有表 2.查看指定表结构 3.查询指定表的建表语句 注意&#xff1a;23版的点击导航中的转到DDL 修改 关于表结构的修改操作&#xff0c;一般也是直接基于图形化界面操作。 添…

智能感应门改造工程

今天记录一下物联网专业学的工程步骤及实施过程 智能感应门改造工程 1 规划设计1.1 项目设备清单1.2项目接线图 软件设计信号流 设备安装与调试工程函数 验收 1 规划设计 1.1 项目设备清单 1.2项目接线图 软件设计 信号流 设备安装与调试 工程函数 工程界面: using System; …

半导体runcard(上)--基础知识精讲

半导体runcard是指在半导体制造过程中&#xff0c;用于记录和管理生产过程中的关键参数和数据的一种系统或方法。runcard可以是纸质的记录方式&#xff0c;也可以是电子化的管理系统。在半导体行业中&#xff0c;runcard的使用非常广泛&#xff0c;它涉及到从原材料检验、晶圆加…

【STM32】存储器和位带映射(bit band mapping)

文章目录 0 前言1 关于地址和存储器2 STM32内部存储器3 位带映射&#xff08;bit band mapping&#xff09;4 扩展&#xff1a;IAP 0 前言 最近在研究stm32标准库&#xff0c;对使用宏定义实现位操作的函数非常感兴趣&#xff0c;简单的一句PAout(1) 0;就能实现某个引脚电平的…

bash简化if-else

#!/usr/bin/env bashsource /bal/bash-simplify/dir_util.sh#测试_get_arg: #debug__get_argtrue; x$(_get_arg example.sh 37 "true ||") ; echo $x #_is_git_2xfunction _get_arg(){ ##若变量debug__get_arg为空&#xff0c;则设置其为false # [ "x" &…

Linux离线安装python3(源码编译)

1、下载python包 下载python3.9.6的源码包 python下载 下载后&#xff0c;解压&#xff0c;目录如下&#xff1a; -rw-------. 1 root root 1454 Aug 26 2023 anaconda-ks.cfg -rw-r--r--. 1 root root 25640094 Apr 4 21:52 Python-3.9.6.tgz drwxrwxr…

LeetCode 1049. 最后一块石头的重量 II

有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&…

C# 访问修饰符 默认

命名空间下的元素&#xff1a;类&#xff08;Class&#xff09;中的成员&#xff1a;结构&#xff08;Struct&#xff09;中的成员&#xff1a;接口&#xff08;Interface&#xff09;中的成员&#xff1a;接口&#xff08;Interface&#xff09;本身&#xff1a;枚举&#xff…

用TOMCAT部署web项目教程

文章目录 引言I 使用webapps文件夹II 利用server.xmlIII 自定义配置文件IV 预备知识引言 在开发阶段,一般使用IDE如MyEclipse来部署web项目,不要忘记手动部署的三种方式。 将编译好的项目 copy 到 webapps 目录下 在 server.xml 文件中配置,但从 tomcat5.0版本开始后,serv…

前端三剑客 —— JavaScript (第一天)

目录 回顾内容 1.弹性布局 2.网格布局 JavaScript 概述 发展 浏览器 什么是Javascript JavaScript 能干什么 JavaScript需要的环境 JavaScript初体验 基本数据 JS书写方式 行内JS 页面JS 外部JS 1&#xff09;创建外部JS文件 2&#xff09;编写页面 对话框 警…

彩虹易支付实名认证

实名认证接口主要分为3大类&#xff1a;支付宝扫码认证、微信扫码认证、运营商手机号三要素认证。 支付宝扫码认证 支付宝身份验证&#xff1a;申请地址&#xff0c;该接口费用1元/人&#xff0c;支持人脸识别&#xff0c;同一个人重复验证不重复收费。支付宝实名信息验证&am…