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

news/2024/7/10 19:53:22 标签: 深度学习, 图像处理, stable diffusion

本文发表于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在大部分情况下的效果是比较好的。


http://www.niftyadmin.cn/n/5410274.html

相关文章

MyBatis操作数据库(SQL注入)

本文主要来讲解6大标签&#xff0c;以便更好的MyBatis操作数据库&#xff01; <if>标签<trim>标签<where>标签<set>标签<foreach>标签<include>标签 前提需求&#xff1a; MyBatis是一个持久层框架&#xff0c;和Spring没有任何关系&…

linux命令行与shell脚本大全——学习笔记(5-6章)

第五章 shell的类型 bash sh zsh csh&#xff0c;在命令行中&#xff0c;使用echo $0可以查看当前使用的shell shell的父子关系 输入bash进入子shell&#xff0c;可以无限套娃&#xff0c;退出使用exit; 使用ps --forest可以查看shell嵌套关系 查看进程列表 一系列命令可…

TypeScript 中,接口(Interface)

在 TypeScript 中&#xff0c;接口&#xff08;Interface&#xff09;是一种定义对象结构的类型。接口定义了对象应该具备的形状&#xff0c;即对象应该具有哪些属性和方法。 代码示例&#xff1a; // 定义一个接口&#xff0c;表示一个人的信息 interface Person { name:…

【刷题】双指针入门

双指针入门 双指针283.移动零1089. 复写零202. 快乐数11. 盛最多水的容器Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&#xff01;&#xff01;&#xff01; 双指针 双指针是非常经典的算法&#xff0c;包括但…

第一节 JDBC是什么?

JDBC代表Java数据库连接(Java Database Connectivity)&#xff0c;它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API&#xff0c;换句话说&#xff1a;JDBC是用于在Java语言编程中与数据库连接的API。 JDBC库包括通常与数据库使用相关&#xff0c;如下面提到的…

【DevSecOps】项目中总结出来提高NodeJS程序安全性的最佳实践

项目中总结出来提高NodeJS程序安全性的最佳实践 如今,Node.js 广泛应用于 Web 和移动应用程序,因为它填补了前端和后端应用程序之间的空白。不幸的是,Node.js 使用量的增加为攻击者利用错误配置和漏洞打开了新的大门。 作为开发人员,我们有责任提高应用程序的安全性以防止…

喜报|3DCAT成为国内首批适配Vision Pro内容开发者

近日&#xff0c;苹果在上海总部举办了国内首场 Apple Vision Pro 开发者实验室活动&#xff0c;3DCAT作为国内领先的实时渲染云平台参与了此次活动&#xff0c;成为国内首批适配 Vision Pro 的内容开发者之一。 Vision Pro是苹果于2023年6月发布的首个空间计算设备&#xff0…

被问爆了!多微信朋友圈一键转发大揭秘!

对于很多企业和个人而言&#xff0c;朋友圈是一个非常重要的营销渠道。不仅可以吸引潜在客户的关注&#xff0c;还能提高产品和服务的曝光率。 今天&#xff0c;就给大家分享一个能够多个微信号一键转发朋友圈的工具——微信管理系统&#xff0c;帮助大家提高工作效率&#xf…