Uni-ControlNet: All-in-One Control toText-to-Image Diffusion Models——【论文笔记】

本文发表于NeurIPS 2023

项目官网:Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models

一、Introduction

        近两年来,扩散模型在图像合成任务中表现优异,尤其是文本到图像(T2I)扩散模型已成为合成高质量图像的流行选择。这些模型通过大规模数据集上的训练,能够创建与文本描述内容相似的图像,推动了文本和视觉领域之间的联系。这些模型在捕捉纹理细节和对象之间复杂关系方面表现出色,适用于各种现实应用,如内容创建、时装设计和室内装饰。然而,文本描述通常无法准确传达对生成结果的详细控制,因此需要结合更多控制模式,如用户绘制的草图或语义掩码。学术界和工业界纷纷表现出兴趣,将多种控制信号与文本描述集成进T2I扩散模型,以扩展生成范围。一些研究尝试探索可控T2I扩散模型的方法,如Composer,其需要大量GPU资源和巨大训练成本。为降低成本,一些方法通过引入轻量级适配器或额外模块,将条件信号纳入冻结的T2I扩散模型中,实现微调。然而,当前方法存在一些缺点,如每个条件需要一个独立适配器,导致微调成本和模型大小线性增加,不同条件之间的可组合性仍是挑战。

        本文提示了Uni-ControlNet,这是一个新的框架,利用轻量级适配器来精确控制预训练的T2I扩散模型。与现有方法相比,Uni-ControlNet可以在一个模型中处理不同条件,支持组合控制,并具有较好的可组合性。Uni-ControlNet将条件分为局部和全局两个组,只需添加两个额外适配器即可,这降低了微调成本和模型大小。针对本地控件,我们引入了多尺度条件注入策略;对于全局控件,使用全局条件编码器将其转换为条件标记,并与传入特征进行交互。这两个适配器可以单独训练,提高了Uni-ControlNet的灵活性和易用性。Uni-ControlNet展示了良好的保真度和可控性,通过深入的消融分析和与其他方法的比较,我们证明了适配器设计的优越性。这些成果为文本到图像生成领域带来了新的可能性和进展。

二、Related Work

        这部分首先介绍了Text to Image最近的一些发展情况,然后讲述了可控的图像生成的一些发展。

        可控扩散模型旨在为T2I扩散模型提供更多用户控制,以指导生成结果,并近年来受到越来越多关注。实现可控扩散模型通常采用两种策略:从头开始训练和在冻结的预训练T2I模型上微调轻量级适配器。从头开始训练的方法如Composer通过训练大型模型实现高度可控性,但伴随着巨大训练成本。相比之下,ControlNet、GLIGEN和T2I-Adapter等方法将轻量级适配器引入预训练模型中,通过微调适配器降低训练成本。然而,这些方法通常为每个条件使用独立适配器,导致处理更多条件时的成本和模型尺寸增加。同时,某些方法如GLIGEN不支持复合控制,影响了可组合性。我们的Uni-ControlNet方法采用微调适配器策略,解决了上述限制。Uni-ControlNet将条件分为本地控件和全局控件两组,并仅需两个额外适配器。由于论文所提出的新设计的适配器结构,Uni-ControlNet在训练成本、模型大小、可控性和生成质量方面均优于ControlNet、GLIGEN和T2I-Adapter。

三、Method

        这幅图展示了整个Uni-ControlNet的框架,主要被分为三个部分,基础扩散模型(论文所用的是Stable diffusion),以及两个适配器:全局适配器和局部适配器。局部控制适配用于将一些简单的控制条件输入,比如:Canny边缘,MLSD边缘,HED边界,草图,Openpose ,Midas深度和分割掩码等,这些都是通过辅助图像来对图像生成实现控制的方法。对于全局适配器,它主要用于将全局控制信息添加到生成过程中去,比如利用CLIP图像编码器提取的一个参考内容图像的全局图像嵌入,它提供了对条件图像的语义内容的更细致入微的理解。

首先我们来回顾一下ControlNet的核心思想,为了将额外的控制条件输入到SD模型中去,ControlNet的想法是将神经网络块复制一个可训练的副本,然后利用这些可训练的副本将额外的控制条件添加到SD模型中去,如此我们只需要训练可训练副本模块即可,为了更好的将额外的条件添加进去,它这里用了一个零卷积来将可训练的神经网络块连接到原SD模型对应的神经网络块中去。这就是ControlNet的核心思想。

上图主要展示的是全局控制适配器和局部控制适配器的结构, 首先我们来看局部控制适配器,这里主要是借鉴了ControlNet的思想,它将原本的SD的编码器模块和中间块复制了一个副本,用于将局部条件输入,我们只需要训练这个可训练的副本,然后通过零卷积将这个复制的模块连接到基础SD模型,但与ControlNet不同的点在于,它并没有直接将特征信息传入基础SD模型,而是在零卷积后选择了多尺度条件注入策略(FDN)。通过FDN可以在所有分辨率下注入条件信息。

这个FDN实现了不同分辨率下注入条件信息。FDN将条件特征用于条件噪声特征,文中这个噪声特征就是逐步添加高斯噪声的潜在张量Z,通过这种方式以实现对图像生成更加精细的控制。

然后我们来看全局控制适配器,这个全局控制适配器实际上就是要给条件编码器,主要是由一组堆叠的前馈网络构成,通过全局控制适配器,将全局条件转换成全局控制信号并与原来的文本嵌入相连。输入到基础的Stable diffusion以及复制模块的交叉注意力层中。(也就是上一页PPT中的Extended Prompt)

训练策略:

        论文提到,直接联合微调局部控制信号和全局控制信号的适配器会导致较差的可控性能。因此,选择分别对这两种类型的适配器进行微调,以确保它们都可以得到充分的训练,并有效地为最终生成结果做出贡献。在微调每个适配器时,采用预定义的概率来随机丢弃或保留每个条件信息,以促进模型学习基于一个或多个条件生成结果。通过在推理过程中直接集成这两个单独训练的适配器,Uni-ControlNet已经能够以可组合的方式很好地结合全局和局部条件,而无需进一步的联合微调。

四、Experiments

上面的图表展示的是将Uni-ControlNet与其他方法在添加不同的辅助控制方式后所生成的图像的效果进行比较,Style\Content来表示全局条件。所用的指标是FID。

下面的图是将Uni-ControlNet与其他方法在可控性方面进行的比较,由于所用的辅助控制方式不同,所用的评价指标也不相同。 所用的指标包括:SSIM(结构相似性)、mAP(目标关键点相似性)、MSE(均方误差)、mIOU(平均交并比)、CLIP Score

来看消融实验,图片部分展示的是不同的方法生成的图像效果之间的比较,上半部分是将论文所提的方法与其他通过直接注入方式添加控制的方法进行比较;下半部分,是将论文所提方法与微调训练方式的方法进行比较。而图表则表现了他们的性能。

Injection-S1,Injection-S2是使用了其他研究所提出的条件注入方法实现的效果。

对于Injection-S3,这里将论文所提出的方法与只将全局条件添加到控制适配器而不添加到基础SD模型中进行比较。

对于“Train-S1”,实际上就是同时微调全局控制适配器和局部控制适配器;  对于Train-S2,则是指先分别微调两个控制适配器然后再进行联合微调的方式。而论文所提出的Uni-ControlNet方法只需要将两个控制适配器进行分别的微调,而不需要进一步的联合微调。从实验结果看,Uni-ControlNe在大部分情况下的效果是比较好的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebGIS开发0基础必看教程:地图显示——根据地理范围换算出瓦片行列号

2.影像金字塔简介 我们之前反复提到了影像金字塔这个概念,但是没有对其做一个大概的介绍,这里我将这个概念补充一下。 2.1 为什么要出现影像金字塔这个概念 现在,我假设我们的服务器上有一个1G的影像,需要将其在前端进行显示。…

2024全网最全Excel函数与公式应用

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 引言 Excel是一款广泛应用于商业、教育和个人…

hnust 湖南科技大学 2022 数据挖掘课设 完整代码+报告+图源文件+指导书

hnust 湖南科技大学 2022 数据挖掘课设 完整代码报告图源文件指导书 目录 实验一 Apriori算法设计与应用 - 1 - 一、 背景介绍 - 1 - 二、 实验内容 - 1 - 三、 实验结果与分析 - 2 - 四、 小结与心得体会 - 3 - 实验二 KNN算法设计与应用 - 4 - 一、 背景介绍 - 4 - 二、 实…

头条小程序DIY源码系统 带完整的安装代码包以及搭建部署教程

在过去几年中,小程序市场经历了飞速的发展,各种小程序平台如雨后春笋般涌现。作为其中的佼佼者,头条小程序凭借其强大的用户基础和完善的生态体系,吸引了众多开发者的关注。然而,对于许多初学者和中小企业而言&#xf…

C语言qsort函数介绍

前言 学到了函数指针,那这篇博客我们可以根据函数指针,了解一个函数qsort的应用与模拟实现 欢迎关注个人主页:小张同学zkf 若有疑问 评论区见 目录 1.回调函数 2.qsort函数使用 3.qsort模拟实现 1.回调函数 讲这个东西之前我们来认识一下…

春日特惠,爱基百客限时放送,开启您的学术新篇章!

春回大地,万物复苏, 正是探索未知、启发新思的最佳时节。 在这个充满生机的季节里, 我们推出了春季大促活动, 旨在助力每一位科研工作者在新的一年里实现更多突破。 让我们一起迎接科研人的春天, 开启智慧的花朵…

基本设计模式

单例模式 ES5 function Duck1(name:string){this.namenamethis.instancenull }Duck1.prototype.getNamefunction(){console.log(this.name) }Duck1.getInstancefunction(name:string){if(!this.instance){this.instance new Duck1(name)} } const aDuck1.getInstance(a) const…

Jetpack Compose: Hello Android

Jetpack Compose 是一个现代化的工具包,用于使用声明式方法构建原生 Android UI。在本博文中,我们将深入了解一个基本的 “Hello Android” 示例,以帮助您开始使用 Jetpack Compose。我们将探讨所提供代码片段中使用的函数和注解。 入门 在…

C++ //练习 10.31 修改前一题的程序,使其只打印不重复的元素。你的程序应使用unique_copy(参见10.4.1节,第359页)。

C Primer(第5版) 练习 10.31 练习 10.31 修改前一题的程序,使其只打印不重复的元素。你的程序应使用unique_copy(参见10.4.1节,第359页)。 环境:Linux Ubuntu(云服务器&#xff09…

基于ERNIR3.0的文本多分类

还在用BERT做文本分类?分享一套基于预训练模型ERNIR3.0的文本多分类全流程实例【文本分类】_ernir 文本分类-CSDN博客 /usr/bin/python3 -m pip install --upgrade pip python3-c"import platform;print(platform.architecture()[0]);print(platform.machine…

深度学习500问——Chapter02:机器学习基础(3)

文章目录 2.10 主成分分析(PCA) 2.10.1 主成分分析(PCA)思想总结 2.10.2 图解PCA核心思想 2.10.3 PCA算法推理 2.10.4 PCA算法流程总结 2.10.5 PCA算法主要优缺点 2.10.6 降维的必要性及目的 2.10.7 KPCA与PCA的区别 2.11 模型评估…

什么是跨站脚本攻击(XSS)

厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OCP\CKA\K8S\ CISP\CISSP\PMP\ ​ 跨站脚本攻击(Cross-site Scripting,通常称为XSS)&#xf…

MCU设计--M3内核详解(2)

内核架构 FETCH取指单元DEC指令译码EXEC执行LSU内存取数ETM_INTF调试接口STATUS状态上报 内核-寄存器 不同指令集支持不同的寄存器分配。R13用于主堆栈指针(MSP),进程堆栈指针(PSP)R13 连接寄存器存储子程序指针,提高速度R15 程序计数器PC 剩下的一些 …

Gemma模型一些细节讲解

Gemma模型报告中提到的几个点进行代码细节解读一下: (1)Embedding层共享参数 (2)输入输出层均进行RMSNorm Embedding层共享参数 共享embedding的权重给最后的llm_head层。是词嵌入层的共享,与旋转位置编码…

羊大师揭秘羊奶探秘,不止于营养的美味饮品

羊大师揭秘羊奶探秘,不止于营养的美味饮品 羊奶作为一种古老而珍贵的乳制品,不仅具有丰富的营养价值,还拥有独特的口感和风味,使其成为一种不止于营养的美味饮品。以下是对羊奶的深入探秘: 独特的风味:羊…

【JavaEE进阶】 Linux搭建Java部署环境

文章目录 🍃前言🌴Linux权限🚩用户操作🚩三种角色🚩文件类型和访问权限🎈文件类型🎈基本权限 🚩修改文件权限 🎍搭建Java部署环境🚩apt🎈apt常用命…

【C++基础】STL容器面试题分享||上篇

🌈欢迎来到C基础专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C STL 1.请说说 STL 的基本组成部分2.详细的说&…

08 OpenCV 腐蚀和膨胀

文章目录 作用算子代码 作用 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。其卷积操作非常简单,对于图像的每个像素,取其一定的邻域,计算最大值/最小值作为新图像对应像素位置的像素值。其中,取最大值就是膨胀,取最小值就是腐…

Pytorch学习 day01(Jupyter安装、常用函数、三种编辑器的对比)

Jupyter 安装过程中遇到的问题: Anaconda的base环境会自动安装Jupyter,但是如果我们要在其他环境中安装Jupyter,就需要注意,该环境的python版本不能高于3.11,且用以下代码安装: conda install nb_conda_…

【深度学习】脑部MRI图像分割

案例4:脑部MRI图像分割 相关知识点:语义分割、医学图像处理(skimage, medpy)、可视化(matplotlib) 1 任务目标 1.1 任务简介 本次案例将使用深度学习技术来完成脑部MRI(磁共振)图像分割任务&#xff0c…