ControlNet-有条件图文生成论文阅读

news2024/10/2 8:36:32

文章目录

  • 摘要
  • 算法:
    • ControlNet
    • ControlNet in Image Diffusion Model
    • Training
    • Improved Training
  • 实验
    • Canny edges
    • Hough lines
    • Human scribbles
    • HED boundary map
    • Openpifpaf pose
    • Openpose
    • ADE20K segmentation map
    • COCO-Stuff segmentation map
    • DIODE normal map
    • Depth-to-Image
    • cartoon line drawings
  • 限制
  • 结论

论文: 《Adding Conditional Control to Text-to-Image Diffusion Models》
github: https://github.com/lllyasviel/ControlNet

摘要

ControlNet控制大的预训练扩散模型支持额外输入条件,ControlNet端到端的方式学习特定任务条件,即使训练集小(<50k),学习也比较鲁棒。作者基于Stable Diffusion训练ControlNets,可支持边缘map、分割map、关键点为条件输入;这丰富了控制扩散模型方法,为相关应用提供便利。

算法:

ControlNet

ControlNet通过控制神经网络模块输入条件进一步控制整个神经网络输出。如式1,神经网络模块F通过参数Θ将特征图x变换为另一个特征图y,即为图2a过程;
在这里插入图片描述
ControlNet应用于任意神经网络模块过程如图2b所示, c c c为额外条件向量, Θ Θ Θ为locked copy参数, Θ c Θ_c Θc Θ Θ Θ的clone,且可训练,没有直接训练是为了防止过拟合, Θ z 1 , Θ z 2 Θ_{z1}, Θ_{z2} Θz1,Θz2为ControlNet中两个零卷积 Z Z Z参数,零卷积表示初始化weight及bias为0的1*1卷积,该过程如式2,
在这里插入图片描述
由于两个零卷积 Z Z Z参数初始化为0,因此训练第一步时 y c = y y_c=y yc=y,如式3,
在这里插入图片描述
在这里插入图片描述
零卷积参数以一种可学习方式从零开始优化;

ControlNet in Image Diffusion Model

Stable Diffusion使用数十亿图片训练的文本图像生成模型,本质上为包含编码器、中间层、skip-connected解码器的U-net,整个模型有25个block,编码器和解码器各自有12个block,所有block中,8个为上采样或下采样卷积层,17个为主要block,每个包括4个resnet层、2个ViT。文本由CLIP进行编码,扩散时间步长使用位置编码。
Stable Diffusion类似VQ-GAN为了稳定训练过程,将512 * 512图片映射到64 * 64隐空间,因此需要ControlNet将基于图片的条件转换到64 * 64特征空间,该过程通过4个kernel=4,steide=2卷积实现,如式9.
在这里插入图片描述
如图3,ControlNet控制U-net每个层级,因为原始权重固定,因此计算高效;ControlNet使用与SD(Stable Diffusion)相同的12个编码block及1个middle block,其中12个block有4个分辨率(64 × 64, 32 × 32, 16 × 16, 8 × 8),每个分辨率3个block;输出部分增加12个skip-connections及1个middle block至U-net
在这里插入图片描述

Training

扩散模型学习图像逐渐去噪,生成样本;
对于图片 z 0 z_0 z0,通过扩散算法逐渐增加噪声生成噪声图 z t z_t zt,其中 t t t为噪声添加次数,给出step t、text prompt c t c_t ct及特定任务条件 c f c_f cf,扩散算法通过网络 ϵ θ \epsilon_θ ϵθ预测增加到噪声图 z t z_t zt上的噪声,如式10,L为整体损失函数:
在这里插入图片描述
训练过程中,作者随机替换50% test prompt c t c_t ct为空,使得SD模型编码器可以从输入的控制图 c f c_f cf学习更多语义信息。

Improved Training

Small-Scale Training:当资源有限时,作者发现断开ControlNet与SD Decoder Block 1,2,3,4训练速度提升1.6倍,当模型输出结果与条件相关联时,可重新连接Decoder Block 1,2,3,4进行训练;

Large-Scale Training:当训练资源充足,数据量大时,模型过拟合风险低,可先充分训练ControlNet,而后解锁SD模型权重,与ControlNet作为一个整体模型进行联合训练;

实验

实验设置,作者使用三种prompt:
1、No prompt;“”
2、Default prompt:无意义prompt
3、Automatic prompt:BLIP生成
4、User prompt:用户输入

Canny edges

在这里插入图片描述

Hough lines

在这里插入图片描述

Human scribbles

在这里插入图片描述

HED boundary map

在这里插入图片描述

Openpifpaf pose

在这里插入图片描述

Openpose

在这里插入图片描述
在这里插入图片描述

ADE20K segmentation map

在这里插入图片描述

COCO-Stuff segmentation map

在这里插入图片描述

DIODE normal map

在这里插入图片描述

Depth-to-Image

在这里插入图片描述

cartoon line drawings

在这里插入图片描述

限制

如图28,当输入分割容易引起歧义时,难以生成合理内容。
在这里插入图片描述

结论

ControlNet呈现效果比较惊艳,在SD模型基础上更进一步,支持多种条件控制文本至图像生成。

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

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

相关文章

蓝桥冲刺31天之第六天

今天是摆子的一天&#xff0c;明天我要肝一整天的第四题&#xff01;&#xff01;&#xff01; PS&#xff1a;一个普通的排序罢了 import java.io.*; import java.util.Arrays; import java.util.Scanner;/*** ClassName 考勤刷卡* Description TODO* Author 小怂很怂* Date 2…

DataX与DB2导入导出案例

DataX与DB2导入导出案例 文章目录DataX与DB2导入导出案例0. 写在前面1. DB2介绍2. DB2数据库对象关系3. 安装前的准备3.1 安装依赖3.2 修改配置文件 sysctl.conf3.3 修改配置文件 limits.conf4. 安装4.1 预检查4.2 添加组和用户4.3 创建实例4.4 创建实例库、开启服务4.5 连接5.…

在CentOS7上静默安装Oracle19c

1.下载Oracle 官方安装包下载路径&#xff08;需要登录Oracle账号&#xff09;&#xff1a; https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c 可选择windows/Linux平台对应的安装包&#xff0c;我选择Linux x86-64、ZIP包下载&…

分析linux内核移植中vmlinux可执行文件是如何生成的?以及 uImage/zImage/Image/vmlinx之间关系

一&#xff1a;分析linux内核移植中vmlinux可执行文件是如何生成的&#xff1f; 1&#xff1a;进入内核源码顶层目录下打开Makefile文件&#xff0c;搜索vmlinux 这里构建vmlinux的命令使用了makefile的内置函数call。这是一个比较特殊的内置函数&#xff0c;make使用它来引用…

Go语言学习编程实践:五种模式解决go中的并发问题

五种模式解决go中的并发问题For-Select-Done扇入模式从流中获取前 n 个值订阅模式地图模式过滤模式For-Select-Done 我们应该防止程序中发生任何泄露。所以我们应该对于留在程序中的go例程发送信号&#xff0c;让它知道它可以退出。 最常见的就是将for-select循环与通道结合起…

UEFI启动流程

以上是UEFI系统运行的7个阶段&#xff0c;下边是详细描述&#xff1a; SEC阶段&#xff1a;&#xff08;安全验证&#xff09; 1、接收和处理系统的启动&#xff0c;重启&#xff0c;异常信号&#xff1b; 2、SEC阶段特色功能“Cache As RAM&#xff08;CAR&#xff09;”&am…

英伦四地到底是什么关系?

英格兰、苏格兰、威尔士和北爱尔兰四地到底是什么关系&#xff0c;为何苏格兰非要独立&#xff1f;故事还要从中世纪说起。大不列颠岛位于欧洲西部&#xff0c;和欧洲大陆隔海相望。在古代&#xff0c;大不列颠岛和爱尔兰属于凯尔特人的领地。凯尔特人是欧洲西部一个庞大的族群…

Caddy2学习笔记——Caddy2反向代理Frp内网穿透和反向代理PVE

一、环境概述 本人拥有一个国内云服务商的云主机和一个备案好的域名&#xff0c;通过caddy2来作为web服务器。 我的云主机是公网ip&#xff0c;地址为&#xff1a;43.126.100.78&#xff1b;我备案好的域名是&#xff1a;hotgirl.com 。后面的文章都以上述的ip和域名来进行讲解…

Actipro WinForms Studio Crack

Actipro WinForms Studio Crack 已验证Microsoft.NET 7兼容性。 添加了MetroDark配色方案。 添加了支持MetroLight和MetroDark颜色方案的MetroScrollBarRenderer。 添加了IWindowsColorScheme接口&#xff0c;该接口将替换对WindowsColorScheme的大多数引用。 添加了IWindowsCo…

Zookeeper客户端ZkClient、Curator的使用,史上最详细的教程来啦~

1 前言 本文主要介绍了操作Zookeeper的几种客户端的基础使用&#xff0c;希望对老铁们会有所帮助。 可以去操作zookeeper创建、删除、查询、修改znode节点 2 Zookeeper服务器客户端分类 目前&#xff0c;Zookeeper服务器有三种Java客户端&#xff1a; Zookeeper、Zkclient和…

inquirerjs

inquirerjs inquirerjs是一个用来实现命令行交互界面的工具集合。它帮助我们实现与用户的交互交流&#xff0c;比如给用户一个提醒&#xff0c;用户给我们一个答案&#xff0c;我们根据用户的答案来做一些事情&#xff0c;典型应用如plop等生成器工具。 npm install inquirer…

软测面试了一个00后,绝对能称为是内卷届的天花板

前言 公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资也不低&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。令我印象最深的是一个00后测试员&#xf…

certum验证域名所有权

Certum证书支持 Email、文件上传、DNS解析 验证域名所有权。1 .Email 方式请确认自己域名已开通&#xff0c;域名邮箱。仅支持以下邮箱&#xff1a;adminyourdomain.comadministratoryourdomain.comwebmasteryourdomain.compostmasteryourdomain.comhostmasteryourdomain.com收…

深度学习笔记:卷积神经网络(1)

1 卷积神经网络整体结构 卷积神经网络&#xff08;CNN&#xff09;相比全连接网络多了卷积层和池化层。对于全连接网络&#xff0c;所有相邻层的神经元都用Affine层进行连接&#xff0c;如图中即为Affine-ReLU的连接组合。 卷积神经网络则包含卷积层和池化层与激活函数相连&a…

后端Java随机比大小游戏实战讲解

## - 利用print打印输出提示用户 ## - 利用Scanner函数抓取数据 ## - 利用Math方法实现随机数 #### 1.首先用到的是print函数&#xff0c;对用户进行提醒进一步的操作 通过System.out.print();提示用户进行选择买大买小。 #### 2.然后利用Scanner函数&#xff0c;对用户输出…

Spring Bean生命周期七大阶段-Java八股面试(七)

系列文章目录 第一章 ArrayList-Java八股面试(一) 第二章 HashMap-Java八股面试(二) 第三章 单例模式-Java八股面试(三) 第四章 线程池和Volatile关键字-Java八股面试(四) 第五章 ConcurrentHashMap-Java八股面试(五) 第六章 spring之refresh流程-Java八股面试(六) 提示&…

HTTPS是怎么加密数据的?

HTTPS是怎么加密数据的&#xff1f;对安全或密码学基础有了解的同学&#xff0c;应该知道常见的加密手段。一般来说&#xff0c;加密分为对称加密、非对称加密&#xff08;也叫公开密钥加密&#xff09;对称加密对称加密的意思就是&#xff0c;加密数据用的密钥&#xff0c;跟解…

儿童反复感染,是体质差还是免疫缺陷?

原发性免疫缺陷病&#xff08;PIDs&#xff09;它是一组由遗传因素或先天性免疫系统发育不良引起的免疫系统功能障碍综合征&#xff0c;可涉及固有免疫或适应性免疫。在中国&#xff0c;PID的中位发病率为6个月&#xff0c;男孩的发病率通常高于女孩。▼分类目前&#xff0c;国…

LearnOpenGL-光照-2.基础光照

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject 文章目录基础光照环境光照漫反射光照法向量计算漫反射光照最后一件事镜面光照基础光照 简介 现实世界的光照…

JavaEE初阶---初始进程

系统分配资源的最小单元--进程啥是进程看看进程操作系统如何管理进程PCB中的一些属性pid(进程id)内存指针文件描述符表进程调度并行和并发:进程调度的特性状态:优先级:记账信息:上下文:虚拟地址空间进程间交互我们日常使用计算机,大致可以抽象成如下形式:自上向下依次是 各种软…