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

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

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

相关文章

TDengine 在 DISTRIBUTECH 分享输配电数据管理实践

2 月 27-29 日,2024 美国国际输配电电网及公共事业展(DISTRIBUTECH International 2024)在美国-佛罗里达州-奥兰多国家会展中心举办。作为全球领先的年度输配电行业盛会,也是美洲地区首屈一指的专业展览会,该展会的举办…

08 OpenCV 腐蚀和膨胀

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

#QT(程序打包)

1.IDE:QTCreator 2.实验:打包到windows(exe文件) 3.记录: (1)切换工厂到"release",release模式基本没有调试信息,比较精简,debug模式有很多调试信…

Databend 开源周报第 134 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持多语句事务…

Redis 之六:Redis 的哨兵模式(Sentinel)

Redis 哨兵(Sentinel)模式是一种高可用性解决方案,用于监控和自动故障转移的集群系统。 在 Redis Sentinel 架构中,哨兵是一组运行在特殊模式下的 Redis 进程,它们可以监控一个或多个主从复制结构中的 Redis 主服务器以…

二叉搜索树题目:将有序数组转换为二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法证明代码复杂度分析 题目 标题和出处 标题:将有序数组转换为二叉搜索树 出处:108. 将有序数组转换为二叉搜索树 难度 4 级 题目描述 要求 给定整数数组 nums \texttt{nums}…

手写分布式配置中心(二)实现分布式配置中心的简单版本

这一篇文章比较简单,就是一个增删改查的服务端和一个获取配置的客户端,旨在搭建一个简单的配置中心架构,代码在 https://gitee.com/summer-cat001/config-center 服务端 服务端选择用springboot 2.7.14搭建,设计了4个接口/confi…

SLAM ORB-SLAM2(21)基础矩阵的计算和评分

SLAM ORB-SLAM2(21)基础矩阵的计算和评分 1. 前言2. 基础矩阵2.1. 对级约束2.2. 推导2.3. 计算原理 3. ComputeF214. CheckFundamental 1. 前言 在 《SLAM ORB-SLAM2(20)查找基础矩阵》 中了解到 查找基础矩阵主要过程&#xff1…

MySQL NDB Cluster 分布式架构搭建 自定义启动、重启和关闭集群Shell脚本

此次NDB Cluster使用三台虚拟机进行搭建,一台作为管理节点;而对于另外两台服务器,每一台都充当着数据节点和SQL节点的角色。注意不是MGR主从复制架构,而是分布式MySQL架构。 创建 /var/lib/mysql-cluster/config.ini Cluster全局…

NSSCTF Round#13 WEB

1.flask?jwt? 在忘记密码下面有提示secretkey,那么就可以jwt伪造 自己注册个账号然后登录 点击拿flag提示你不是admin,并且cookie里面有个session,用工具解密一下 python flask_session_cookie_manager3.py decode -s th3f1askisfunny -c .eJwlzjsOAyEMANG7UK…

阿里云打响“算力平价”第一枪

大数据产业创新服务媒体 ——聚焦数据 改变商业 2月29日,阿里云宣布了史上最大力度的一次降价,平均降价幅度超过20%,最高降幅达55%。通过此次降价,阿里云的核心云计算产品价格都击穿了全网最低价。 这次降价,涉及100多…

期货资管分仓软件系统开发的兼容性和可拓展性

国际期货分仓系统开发的兼容性分析 期货资管分仓软件系统(⼜称期货分账户系统、期货分账户软件、期货子账户系统 、期货资管软件)的兼容性是指其能够在不同的硬件平台、操作系统、数据库系统以及与其他系统的交互中正常工作的能力。为了确保系统的广泛适…