Adding Conditional Control to Text-to-Image Diffusion Models

news2024/11/25 11:44:03

安全验证 - 知乎知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。https://zhuanlan.zhihu.com/p/605761756

ModelScope 魔搭社区https://modelscope.cn/models/dienstag/cv_controlnet_controllable-image-generation_nine-annotators/summarycontrolnet的核心在于给stable diffusion施加了精准控图,stable diffusion生成的图本质上是通过prompt进行引导从噪声中生成的,text是唯一的输入,controlnet输入了text之外额外的一个维度,目前论文支持canny边缘图,hough线条,hed边缘图,简笔图,pose人体姿态,分割图,深度图等。在流程上,依然是输入图片和prompt,controlnet会先从图片中提取线框图,再输入prompt和线框图即可生成新图。从技术上,controlnet对stable diffusion进行微调,核心通过两个零卷积对权重部分进行映射调整,具体来说,对于预训练好的模型(比如作者使用sd1.5-unet里encoder和middlelayer的resenet和transformer层)里的一层结构,作者固定其参数,并将该层的输入额外添加一个全连接映射后的条件c,输入到一个和该层结构一致的复制网络里,再映射一次后重新添加回原结构里的输出。在训练上,需要成对的text-线框和原图这种数据对。此外作者也提出了小规模训练和大规模训练,力争将stable diffusion的微调平民化。

1.introduction

        基于提示的大模型是否满足我们特定的要求?在图像领域已经有明确范式的任务,大模型是否可以应用促进这些特定任务?我们应该构建什么样的框架来处理大范围的条件问题和用户的控制需求?在具体任务中,大模型能否保留从数十亿张图像中获得的优势和能力?

        为了回答这些问题,我们的调查有三个发现。1.特定任务领域中的可用数据并不总是像一般图像-文本领域中那么大。许多特定问题(目标形状/normal,姿态理解等)的最大数据往往在100k以下,laion-B有5b的数据对。2.大型计算集群并不是谁都有的,预训练权重的迁移微调是可利用的。3.各种图像处理问题具有不同形式的定义,用户控制或者图像注释。尽管扩散算法可以以程序性方式来调节,这些问题本质上需要将原始输入解释为对象级别或者场景级别的理解,人工规则往往行不通,并且很多任务都是希望端到端进行的。

上图输入是canny边缘图,输出是符合控制条件的图。

        本文介绍controlnet,这是一种端到端的神经网络结构,它控制大型图像扩散模型来学习特定任务的输入条件。controlnet将大型扩散模型权重克隆为trainable copy(可训练副本)和locked copy(锁定副本),锁定副本保留从数十亿图像中学习的能力,而可训练副本在特定任务的数据集上训练,以学习条件控制。可训练和锁定的模块与zero convolution连接,其中卷积权重以学习的方式从零逐渐增长到优化的参数。由于保留了production-ready weights,因此训练在不同规模的数据集上是稳健的。由于零卷积不会向深层特征添加新的噪声,因此与从头开始训练新图层相比,训练和微调扩散模型一样快。我们用不同条件的各种数据集训练控制王,小数据集(50k,甚至1k)效果也不错,在rtx3090ti上也可以训练。

2.related work

2.1 hypernetwork and neural network structure

        hypernetwork用于训练一个小的递归网络来影响一个较大的神经网络的权重。controlnet使用一个特殊的卷积,zero convolution,在扩散模型中缩放几个卷积层的初始权重以改善训练的方法。

2.2 diffusion probabilistic model

        扩散模型对训练和采样方法进行优化,采样方式包括DDPM/DDIM/score-based diffusion。本质上使用u-net作为架构,为了降低训练扩散模型所需的计算能力,提出LDM(潜在扩散模型)。

2.3 text-to-image diffusion

        扩散模型可以用于文本到图像生成,通过使用clip将文本输入编码成潜在向量实现。

2.4 personalization,customization,and control of pretrained diffusion model

        因为图像扩散模型是文本到图像的方法主导的,所以增强对扩散的控制最直接的方式是文本引导,这种类型的控制也可以通过操作剪辑特征实现。

2.5 image-to-image translation

       尽管controlnet和图像到图像的翻译可能有一些重叠的应用,但是他们的动机本质是不同的,图像到图像的翻译旨在学习不同领域中的图像之间的映射,而控制网络旨在控制具有特定任务条件的扩散模型。

3.method

3.1 controlnet

如上图所示,我们锁定中的所有参数将其克隆到可训练副本中,复制的副本用外部条件c训练,在本文中,我们将原始参数和新参数成为锁定副本和可训练副本,制作这种副本而不是直接训练原始权重的动机是为了避免数据集较小时的过拟合,并保持从数十亿张图像中学习的大型模型的production-ready quality。神经网络块通过zero convolution的卷积层来连接,其权重和偏差都用零初始化。在一开始训练时,神经网络块中可训练和锁定副本中所有输入和输出都与不存在控制网络时情况一致。换句话说,当控制网络被应用在一些神经网络块时,在任何优化之前,它不会对深层神经网络的特征造成任何影响,任何神经网络块的能力、功能和结果质量都被保留,且任何进一步的优化将变得与微调一样快。

上述公式是零卷积的梯度计算,虽然对输入I的梯度初始为0,但是权重和偏差都不受影响,只要输入I不为0,权重将在第一次梯度下降中被优化为非0矩阵。

w※是一次梯度下降之后的,对输入I求导,获得非0梯度。以这种方式,零卷积成为一种独特类型的连接层,从零逐渐增长到优化的参数。 

3.2 controlnet in image diffusion model

        stable diffusion是在数十亿张图像上训练的大型文本到图像扩散模型。如上所示,本质上是一个u-net,有编码器、中间模块和解码器,中间进行跳跃连接,编码器和解码器都有12个,包括中间模块一共有25个模块,这些模块中,8个是上下采样的卷积层,17个主要的模块,每个包括4个resnet层和2个vision transformer,每个vit包括几个cross-attention或者self-attention。文本采用openai clip编码,扩散时间步长采用位置编码。

        stable diffusion使用和vq-gan相似的预处理方法,将512x512图像转成64x64的潜在图像,controlnet将image-based condition(就是从图像中获取线框图)转成64x64,我们使用4个4x4核和2x2strides的卷积层(后接relu,通常数分别是16,32,64,128,Guassian weights)将image-space condition转成特征图。该网络将512x512转成64x64。

        如上图所示,使用controlnet来控制u-net的每一层,锁定权重是不计算梯度的,使用controlnet训练大概只增加23%的内存和34%的一次迭代时间。具体来说,使用controlnet来创建stable diffusion的12个编码块和1个中间层的可训练副本,4个快采用4中分辨率,每个块有三个。        

        作者的安排十分有意思。笔者在做相关实验时会联想到学术界已经形成的一些共识来设计实验:比如由去年八月份论文prompt to prompt提出后,文生图里图片布局几何关系很大程度上由cross-attn时文本对不同位置的像素点的激活程度所决定。所以笔者初始时会思考是否可以直接将text embedding添加融合模块与sketch info(或其余模态的信息)交互,微调整个模型使其学会兼顾新的模态信息。笔者也会思考是否直接像GLIGEN的方式直接在attn层附近添加融合模块会取得好的效果。但论文作者没有如此安排。论文作者的思路更加类似于《Plug-and-Play Diffusion Features for Text-Driven Image-to-Image Translation》这篇论文的思路。即对于一张模型生成的图片,其UNet的decoder一定已经包含了其生成的一些空间信息,语义信息等。直接抽取decoder相关的特征,添加到当前的生成能够影响当前生成的布局语义等。这是笔者觉得非常有意思的一点。

3.3 training

        在训练过程中,我们随机将50%文本提示词替换为空字符串,这有助于controlnet从输入条件图中识别语义内容的能力,如涂鸦和边缘图,这主要是因为当提示对stable diffusion不可见时,编码器倾向于从输入控制映射中学习更多的语义作为提示词的替代。

3.4 implement

        文本-条件图-图像对。

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

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

相关文章

Java要学到什么程度才能找工作?小白怎么去面试Java岗位?

作为一个Java初学者,到底要学哪些知识点才能找到月薪过万的工作?或者说,怎样才能适应企业的开发流程,不至于进了公司都不知道怎么把需求转换成代码。甚至,唯唯诺诺的加班,一点自信都没有。本期文章&#xf…

STM32开发(18)----CubeMX配置RTC

CubeMX配置RTC前言一、什么是RTC?RTC时钟源RTC备份域二、实验过程1.CubeMX配置2.代码实现3.实验结果总结前言 本章介绍使用STM32CubeMX对RTC进行配置的方法,RTC的原理、概念和特点,配置各个步骤的功能,并通过实验方式验证。 一、…

Linux常见漏洞修复

一、nginx 修复TLS1.0,TLS1.1协议漏洞 1、漏洞描述 服务端口漏洞名称加固建议nginx443TLS版本1.0协议检测启用对TLS 1.2或1.3的支持,并禁用对TLS 1.0的支持。nginx443TLS版本1.1协议检测启用对TLS 1.2或1.3的支持,并禁用对TLS 1.1的支持。 …

Linux27 -- 通过抓包观察三次握手和四次挥手、链接的状态(tcp状态转移图)、TIME_WAIT 存在的原因

tcp协议的特点: 面向连接的,可靠的,流式服务 //面试常问: 一、通过抓包观察三次握手、四次挥手 工具:tcpdump 命令 抓冲我到他从他到我的数据包。 需要管理员权限。 运行示例: 进入管理员权限&#xff…

使用Advanced Installer打包程序及运行环境

Advanced Installer 工具版本:20.1.1 设置产品信息 选中右侧【Product Details】输入产品信息 设置文件和文件夹 添加使用VS发布之后的程序文件夹 设置文件夹刷新 选中文件夹,右键选择属性,选中Synchronize标签。启用“Synchronize conten…

InfluxDB 2 介绍与使用 flux查询 数据可视化

一、关键概念 相比V1 移除了database 和 RP,增加了bucket。 V2具有以下几个概念: timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization 新增的概念&…

微服务 分布式搜索引擎 Elastic Search RestAPI

文章目录⛄引言一、RestAPI⛅导入数据⏰mapping映射分析⚡初始化RestClient二、索引库操作⌚创建索引库✒️删除索引库⚡判断索引库是否存在⛵小结⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能&#x…

synchronized 与 volatile 关键字

目录1.前言1.synchronized 关键字1. 互斥2.保证内存可见性3.可重入2. volatile 关键字1.保证内存可见性2.无法保证原子性3.synchronized 与 volatile 的区别1.前言 synchronized关键字和volatile是大家在Java多线程学习时接触的两个关键字,很多同学可能学习完就忘记…

QSGS四参数随机生长2D软件 quartet structure generation set

软件简介 AbyssFish四参数随机生长2D软件采用四参数随机生长算法quartet structure generation set (QSGS),可用于构建二维随机孔隙图。 软件提供图片长度、宽度;随机生长算法的分布概率、生长概率、概率密度(暂不考虑多相材料相互作用&…

可视化项目管理,控制项目进度,项目经理需要做好以下工作

对于项目的管理者来说,项目信息透明,能够更容易让管理者发现项目中的问题,及时找到问题的原因和相关任务的责任人。 当项目信息能相对精准地呈现给管理者时,也能促进项目成员也能更加认真负责的完成任务,不会找借口推…

Elasticsearch使用——中级篇

在上一篇,已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。本篇,研究下elasticsearch的数据搜索功能。分别使用DSL和RestClient实现搜索。1.DSL查询文档elasticsearch的…

电子技术——功率耗散

电子技术——功率耗散 如今许多集成电路系统都是电池供电的,对于功率耗散限制很严格。其他高性能电路,例如计算机服务器机房产品,有着严格的热耗散功率限制。所以,减小IC中的功率耗散变成了IC设计中最重要的挑战性的设计。 本节…

层次聚类:BIRCH 聚类、Lance–Williams equation

前言 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 BIRCH 聚类 要求数据为向量形式,则通过构建 CF-tree (Clustering Feature Tree) 实现可扩展地高效聚类&#x…

嵌入式linux物联网毕业设计项目智能语音识别基于stm32mp157开发板

stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7核和1个Cortex-M4 核,A7核上可以跑Linux操作系统,M4核上可以跑FreeRT…

数据结构之二叉树(上)

文章目录前言一、二叉树的定义二、二叉树的几种情况三、特殊的二叉树1. 满二叉树2. 完全二叉树四、二叉树的存储结构1. 顺序存储2. 链式存储五、二叉树的性质总结前言 本文主要介绍了二叉树的基本概念以及二叉树的存储结构 一、二叉树的定义 一棵二叉树是结点的一个有限集合&…

Fortinet 发布《2022下半年度全球威胁态势研究报告》,七大发现值得关注!

全球网络与安全融合领域领导者Fortinet(NASDAQ:FTNT),近日发布《2022 下半年度全球威胁态势研究报告》。报告指出,相对于组织攻击面的不断扩大以及全球威胁态势的持续演进,网络犯罪分子设计、优化技术与战术…

助你加速开发效率!告别IDEA卡顿困扰的性能优化技巧

在现代软件开发中,IDE(集成开发环境)是一个必不可少的工具。IntelliJ IDEA是一个广受欢迎的IDE,但有时候IDE的性能可能会受到影响,导致开发人员的工作效率降低。本文将介绍一些可以提高IDE性能的技巧,帮助开…

yii2项目使用frp https2http插件问题

yii2内网项目,使用frp进行内网穿透,使用 https2http插件把内网服务器http流量转成https,会存在一个问题:当使用 $this->redirect(...) 或 $this->goHome() (其实用的也是前者)等重定向时,…

JavaScript 高级3 :函数进阶

JavaScript 高级3 :函数进阶 Date: January 19, 2023 Text: 函数的定义和调用、this、严格模式、高阶函数、闭包、递归 目标: 能够说出函数的多种定义和调用方式 能够说出和改变函数内部 this 的指向 能够说出严格模式的特点 能够把函数作为参数和返…

Spring Boo集成RocketMQ

一、介绍 Producer:生产者,用来发送消息Consumer:消费者,用来消费消息NameServer:服务注册中心,用于注册生产者、消费者,存储Broker路由 并提供给生产者和消费者Broker:用于存储消息…