论文阅读_条件控制_ControlNet

name_en: Adding Conditional Control to Text-to-Image Diffusion Models
name_ch: 向文本到图像的扩散模型添加条件控制
paper_addr: http://arxiv.org/abs/2302.05543
date_read: 2023-08-17
date_publish: 2023-02-10
tags: [‘图形图像’,‘大模型’,‘多模态’]
author: Lvmin Zhang
code: https://github.com/lllyasviel/ControlNet

读后感

ControlNet 几乎是 Stable Diffusion 中最重要的功能插件,利用它可对画面内容进入精准控制。本文介绍了 ControlNet 的原理和具体功能。

ControlNet 是一种对文本生成图像的优化方法。比如:生成 AI 画作时,画面中人体的形态,面部表情都难以精准控制,ControlNet 基于图生图的操作方式,从另一图中提取对应元素,用于新图像的生成,大幅提升了人对大模型的控制力。

具体方法是调整网络结构,基于预训练的扩散模型,根据新输入的描述和指定任务对应的条件进一步训练模型。使模型既可以在小数据量(<50K)时在个人设备上训练,也可以在大数据量时在集群中训练。

其核心技术是在原大网络参数不变的情况下,叠加一个小型网络,以实现最终的调参。

背景知识

对于文本生成图片的大模型,往往需要考虑以下因素:

  • 数据问题:在训练数据量不够大的情况下,解决过拟合/泛化问题。
  • 资源问题:解决训练时间和内存问题,使模型在个人电脑上也能训练。
  • 形式问题:支持各种图像处理问题具有不同形式的问题定义、用户控件或图像注释。

方法

ControlNet是一种网络结构。如图所示:

原始网络结构如图 2-a 所示,输入为x,输出为y,theta为网络参数;
y = F ( x ; θ ) y=F(x;\theta) y=F(x;θ)
加入了ControlNet的网络如图 2-b 所示,它将大模型的权重复制为“可训练副本”和“锁定副本”:锁定副本用于保留原网络能力,被锁定不参与调参;可训练副本在特定任务的数据集上根据条件c进行训练,以学习有条件控制;网络输出 y 为“可训练副本”和“锁定副本”两部分叠加的结果。

其中还加入了两个"零卷积"层 zero convolution(公式中的 Z),它是1x1且初始值为0的卷积层。
y c = F ( x ; θ ) + Z ( F ( x + Z ( c ; θ z 1 ) ; θ c ) ; θ z 2 ) y_c = F(x;\theta)+Z(F(x + Z(c;\theta_{z1});\theta_c);\theta_{z2}) yc=F(x;θ)+Z(F(x+Z(c;θz1);θc);θz2)
可想见,开始调参时,由于Z网络初值是0,y值只有等式左边部分,即保留了原始网络;后面逐步调参后,等式右边部分开始变化。

将该结构应用到扩散模型,如图-3所示:


左侧是基础网络,权重被锁定,右侧为 ControlNet 部分,只对其 Encoder 部分进行了调整,使模型训练仅需要增加约 23% 的 GPU 内存和 34% 的时间;同时由于左侧的原始网络参数不变,又使用了零卷积的方法,有效避免了直接在网络上调参带偏网络的问题,同时还可以使 ControlNet 的影响可调节。

其它

文章的 3.5 节及附录部分列出了几种常见的 ControlNet 控制方法,包含:控制人物表情和动作,控制场景深度,控制画面中的线条等,并展示了相应的效果图。可视作功能介绍和效果展示。

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

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

相关文章

RabbitMQ默认监听的ip地址

RabbitMQ 默认监听所有可用 ip 地址&#xff0c;当Rabbitmq 所在的服务端节点上存在多 ip 时&#xff0c;只要客户端能与服务端任一 ip 通信&#xff0c;即可向 RabbitMQ 发送消息

Java“牵手”天猫商品销量API接口数据,天猫API接口申请指南

天猫平台商品销量接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品销量接口API是一种用于获取电商平台上商品销量数据的接口&#xff0c;通过…

使用WSL修改docker文件存储位置

按照以下说明将其重新定位到其他驱动器/目录&#xff0c;并保留所有现有的Docker数据。 首先&#xff0c;右键单击Docker Desktop图标关闭Docker桌面&#xff0c;然后选择退出Docker桌面&#xff0c;然后&#xff0c;打开命令提示符&#xff1a; wsl --list -v您应该能够看到&a…

EWM怎么取消pinking,SAP_EWM取消拣配报错处理方式

EWM是SAP的一个模块&#xff0c;代表扩展仓库管理&#xff08;Extended Warehouse Management&#xff09;&#xff0c;是SAP企业资源计划&#xff08;ERP&#xff09;的一部分。它提供了一个完整的、高级的仓库管理解决方案&#xff0c;支持企业在全球范围内的仓库管理、订单管…

如何将pdf文件转换成word文档?

如何将pdf文件转换成word文档&#xff1f;PDF文档是我们日常办公中最为常用的电子文档格式的文件&#xff0c;也是在会议、教育培训以及商业营销中经常使用的文档格式。所以说PDF文档的功能较强&#xff0c;且应用场景较多。但是也有例外的时候&#xff0c;比如我们需要将PDF文…

LinkedList

LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09;LinkedList使用 LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09; 无头双向链表&#xff1a;有两个指针&#xff1b;一个指向前一个节点的地址&#xff1b;一个指向后一个节点的地址。 节点定…

【LeetCode-中等题】48. 旋转图像

文章目录 题目方法一&#xff1a;使用辅助数组矩阵 行列的规律方法二&#xff1a;原地修改 递推公式 题目 方法一&#xff1a;使用辅助数组矩阵 行列的规律 public void rotate(int[][] matrix) {int n matrix.length;int[][] matrix_new new int[n][n];for(int i 0 ; i<…

Linux学习笔记-Ubuntu系统下配置ssh免密访问

Ubuntu系统下配置ssh免密访问 一、基本信息二、ssh安装2.1 查看是否已经安装ssh2.2 安装ssh2.3 查看ssh安装状态 三、启动、停止&#xff0c;及开机自启动3.1 启动ssh3.2 关闭ssh3.3 使用systemctl设置ssh服务自启动3.4 使用systemctl关闭ssh开机启动 四、配置通过密钥进行免密…

香港服务器是什么?

香港服务器是指位于香港地区的云服务器或物理服务器。香港作为一个重要的国际金融和商业中心&#xff0c;具有良好的地理位置和先进的网络基础设施。香港服务器提供稳定的网络连接和高性能&#xff0c;可用于托管网站、应用程序和数据存储等各种互联网服务。 香港服务器具有以…

研磨设计模式day10中介者模式

目录 场景 思考 解决思路 模式讲解 调用示意图 中介者模式的优缺点 中介者模式的本质 何时选用 场景 如果没有主板&#xff0c;电脑各个配件怎么交互呢&#xff1f; 有些配件接口不同&#xff0c;必须把数据接口进行转换才能匹配上,无敌复杂。 有了主板之后就是下面这…

【leetcode 力扣刷题】链表基础知识 基础操作

链表基础知识 基础操作 链表基础操作链表基础知识插入节点删除节点查找节点 707. 设计链表实现&#xff1a;单向链表&#xff1a;实现&#xff1a;双向链表 链表基础操作 链表基础知识 在数据结构的学习过程中&#xff0c;我们知道线性表【一种数据组织、在内存中存储的形式】…

java八股文面试[多线程]——合适的线程数是多少

知识来源&#xff1a; 【并发与线程】 合适的线程数量是多少&#xff1f;CPU 核心数和线程数的关系&#xff1f;_哔哩哔哩_bilibili

03.sqlite3学习——数据类型

目录 sqlite3学习——数据类型 SQL语句的功能 SQL语法 SQL命令 SQL数据类型 数字类型 整型 浮点型 定点型decimal 浮点型 VS decimal 日期类型 字符串类型 CHAR和VARCHAR BLOB和TEXT SQLite 数据类型 SQLite 存储类 SQLite 亲和类型(Affinity)及类型名称 Boo…

如何使用PHP实现多语言网站功能

如何使用PHP实现多语言网站功能 在全球化的今天&#xff0c;开发多语言网站成为了一个必要的需求。PHP作为一种常用的编程语言&#xff0c;可以很方便地实现多语言网站功能。本文将介绍如何使用PHP实现多语言网站功能&#xff0c;并提供相应的代码示例。 一、创建语言文件 首先…

如果将PC电脑变成web服务器:使用python3监测公网IP实现DDNS

如果将PC电脑变成web服务器&#xff1a;使用python3监测公网IP实现DDNS 上一篇文章中&#xff0c;我们使用Nignx的反向代理和端口转发实现域名访问家里主机上的web了。 由于家庭宽带基本都是动态IP&#xff0c;每当你重启一次光猫&#xff0c;IP地址就会变化一次。当光猫因为…

ubuntu修改默认文件权限umask

最近在使用ubuntu的过程中发现一个问题&#xff1a; 环境是AWS EC2&#xff0c;登录用户ubuntu&#xff0c;系统默认的umask是027&#xff0c;修改/etc/profile文件中umask 027为022后&#xff0c;发现从ubuntu用户sudo su过去root用户登录查询到的umask还是027&#xff0c;而…

C++动态库编程 | C++名称改编、标准C接口、extern “C”、函数调用约定以及def文件详解

目录 1、导入导出声明 2、C函数名称改编与extern "C" 3、函数调用约定与跨语言调用 3.1、函数调用约定 3.2、跨语言调用dll库接口 3.3、函数调用约定以哪个为准 4、def文件的使用 5、在C程序中引用ffmpeg库中的头文件链接报错问题 6、最后 VC常用功能开发汇…

基于RUM高效治理网站用户体验入门-价值篇

用户体验 用户体验基本包含访问网站的性能、可用性和正确性。通俗的讲&#xff0c;就是一把通过用户访问测量【设计者】意图的尺子。 本文目的 网站如何传递出设计者的意图&#xff0c;可能收页面加载时间太长、或者页面在用户的浏览器中渲染时间太慢&#xff0c;或者第三方设…

使用Maven父工程构建spring boot子工程

1.父工程删除src目录&#xff0c;pom文件配置parent为spring-boot-starter-parent 2.创建子工程&#xff0c;子工程引入一个springboot相关依赖 注意&#xff1a;子工程引入springboot相关依赖之后子工程才能被解析为springboot模块