【论文笔记-ECCV 2024】AnyControl:使用文本到图像生成的多功能控件创建您的艺术作品
AnyControl:使用文本到图像生成的多功能控件创建您的艺术作品

图1 AnyControl的多控制图像合成。该研究的模型支持多个控制信号的自由组合,并生成与每个输入对齐的和谐结果。输入到模型中的输入控制信号以组合图像显示,以实现更好的可视化。
摘要:近年来,文本到图像(T2I)生成领域取得了重大进展,主要是由扩散模型的进步驱动的。语言控制使有效的内容创建成为可能,但对图像生成的细粒度控制却很困难。在很大程度上,通过结合额外的用户提供的空间条件(如深度图和边缘图),然而,多控制图像合成仍然面临着一些挑战。具体而言,现有方法在处理不同输入控制信号的自由组合方面受到限制,忽略了多个空间条件之间的复杂关系,并且通常无法保持与提供的文本提示语义对齐。这可能导致次优的用户体验。为了解决这些挑战,该研究提出了AnyControl,一个多控制图像合成框架,支持各种控制信号的任意组合。AnyControl开发了一种新颖的多控制编码器,提取统一的多模态嵌入来指导生成过程。这种方法能够全面理解用户输入,并生成高质量,通过大量的定量和定性评估,在多功能控制信号下获得可靠的结果。该研究的项目页面可在https://any-control.github.io上找到。
关键词:可控图像合成·多控制·文本到图像
主要挑战:多控制图像合成的任务在以下方面仍然具有挑战性:(1)适应输入条件的自由组合,(2)建模多个空间条件之间的复杂关系,以及(3)保持与文本提示的兼容性。该研究将这三个挑战分别称为输入灵活性、空间兼容性和文本兼容性。
输入灵活性。第一个挑战来自基于用户需求的可用控制信号的任何组合。用户提供的控制信号的数量和模态是变化的,对模型的输入灵活性提出了很高的要求。然而,现有方法通常采用固定长度的输入通道,限制了它们适应不同输入的能力。其他方法采用MoE设计来解决变数条件,这可能导致在处理不可见的输入组合时出现不可预见的伪影。
空间兼容性。第二,控制信号不是孤立的;考虑这些控制信号之间的关系是至关重要的,特别是在管理多个空间条件之间的遮挡时。不幸的是,当前的算法通常通过加权求和和手工权重来组合多个条件,容易导致不期望的混合结果,或者甚至导致低响应控制信号在处理阻塞时消失。
文本兼容性。最终,文本兼容性成为影响用户体验的一个重要因素。通常,文本管理生成图像的内容,而空间条件补偿结构信息。然而,文本和空间条件之间缺乏通信通常导致当前算法优先考虑适应空间条件,从而忽视文本提示的影响。
研究概述:综上所述,生成既满足文本提示又满足多种空间条件的全面和谐的结果是多控制图像合成的一个重大挑战,为了解决输入灵活性、空间兼容性和文本兼容性的挑战,该研究提出了AnyControl,一个支持多种控制信号任意组合的可控图像合成框架。
AnyControl的核心是Multi-Control Encoder,它在确保连贯、空间和语义对齐的多模态嵌入方面发挥着至关重要的作用。这个新颖的组件允许AnyControl从各种控制信号中提取统一的表示,从而实现真正通用和高性能的多控制图像合成框架。
具体来说,多控制编码器由多控制融合(multi-control fusion)模块和多控制对齐(multi-control alignment)模块轮流驱动,并通过一组query tokens将两者无缝地统一起来。
多控制融合模块通过query tokens聚合来自多个空间条件的兼容信息,并对query tokens和从预训练的视觉编码器中提取的空间条件视觉tokens进行交叉注意力Transformer计算,从而将丰富的空间可控信息传递给query tokens,并将其用于多控制对齐模块.
多控制对齐通过将所有其他控制信号对齐到文本信号来保证所有形式的控制信号之间的兼容性,在query tokens和文本tokens上使用自注意Transformer块。query tokens包含空间可控信息,文本tokens包含语义信息,通过query tokens和文本tokens之间的信息交换,两种tokens都能表示兼容的多模态信息。
通过交替的多控制融合和对齐块,query tokens实现了对来自多个用户输入的高度对齐和兼容信息的全面理解。这种能力使该研究的方法能够处理条件之间的复杂关系,并保持与文本提示的强兼容性。因此,这种方法促进了对生成的图像的更平滑和和谐的控制。此外,具有注意机制的Transformer块固有地擅长于适应各种控制信号,并且因此使得能够自由组合用户输入。
主要贡献:
-
AnyControl提出了一种新的多控制编码器,包括一系列替代多控制融合和对齐块,以实现对复杂的多模态用户输入的全面理解。
-
AnyControl支持用户输入的灵活组合,无论不同控制信号的数量和形式如何。
-
AnyControl产生更和谐、更自然的高质量结果,展示了多控制图像合成的最新性能。

图2 AnyControl和多控件编码器。左显示了该研究的AnyControl的整体框架,它开发了一个多控件编码器,用于基于文本提示和多个空间条件提取全面的多控件嵌入。然后利用多控件嵌入来指导生成过程。右图显示了该研究的多控制编码器的详细设计,该编码器由交替的多控制融合和对齐块驱动,其中定义了query tokens,以从空间条件的文本tokens和视觉tokens中提取兼容信息。
AnyControl
Multi-Control Encoder 与ControlNet类似,在该研究的AnyControl中,该研究也锁定了预先训练好的稳定扩散模型,并设计了一个Multi-Control Encoder来理解复杂的控制信号。该研究首先获得三种类型的tokens,即文本tokens-T,视觉tokens-V和query tokens-Q。文本tokens是在文本提示时从CLIP文本编码器中提取的,而视觉tokens是从预先训练的视觉编码器获得的(例如,CLIP图像编码器)。query tokens被定义为一组可学习的参数。为了解决引言中讨论的三个挑战,即,输入灵活性,为了兼顾空间兼容性和文本兼容性,该研究设计了一种多控制编码器,它通过交替使用多控制融合块和多控制对齐块来实现。
多控制融合 多控制融合块旨在从各种空间条件中提取兼容的信息。这是通过利用交叉注意Transformer块来实现的,以促进所有空间条件的query tokens和视觉tokens之间的交互。

多控制对齐 虽然各种可控信息被集成到query tokens中,但是由于缺乏指示空间条件之间的关系的全局条件,因此推断重叠区域内的空间控制信号的优先级是具有挑战性的。幸运的是,文本提示可以用作调节生成的图像的内容的全局控制。因此,在多控制对齐块中,该研究使用自我注意力转换器(self-attention Transformer)块来促进query tokens和文本tokens之间的交互。在将文本提示编码为tokens之前,该研究在用户提供的文本的尾部添加文本任务提示,以解决不同空间条件之间的模态差异。然后该研究将query tokens-Q和文本tokens-T连接在一起,并执行自我注意力转换:

交替融合和对齐 为了确保所有控制信号的信息对齐和兼容,该研究交替使用多控制融合和对齐块进行多轮。值得注意的是,该研究使用多级视觉tokens进行细粒度的空间控制。具体来说,在每一轮中,交叉注意Transformer块中消耗的视觉tokens从预训练的视觉编码器的不同级别中提取,考虑到空间条件在控制层次上的多样性,即布局控制(如分割图)和结构控制(如边缘图),因此,多级视觉标记对于不同深度的多控制融合块是必要的。
AnyControl的优势 query tokens充当桥梁,无缝地将两种类型的块联合起来。经过几个回合后,query tokens保留对齐良好的组合信息,作为用户输入的统一多模态表示。该设计使AnyControl能够在遮挡的情况下进行多控制图像合成,生成具有高空间和文本兼容性的高质量和谐结果。该研究的多控制编码器共享一个类似的想法Q-Former,然而,AnyControl包含许多用于多控件图像合成的专用设计,如附加的文本任务提示,跨所有条件的额外共享位置嵌入和多层次视觉tokens的使用。在实现中,为了节省计算成本,该研究在每两个自注意块之后插入交叉注意块。该研究的AnyControl的另一个天然优势在于输入的灵活性。AnyControl利用具有注意力机制的Transformer块,在容纳用户输入的自由组合方面具有天然的优势。以往的方法要么采用定长输入通道设计,要么采用MoE结构设计,如图3所示。前者限制了用户输入的自由度,而后者,即MoE设计,支持将灵活的输入与手工制作的加权求和相结合,从而导致费力地调整组合权重。
图3 三种多控制方式。不同颜色的方块表示不同的条件类型,虚线方块表示零张量。(a)采用输入卷积层的固定长度通道,然后是几个卷积块作为Multi-Control Encoder。(b)采用MoE设计,即对每种控制信号分别构造编码器,然后通过加权求和得到嵌入。©与它们不同的是,AnyControl采用注意机制来适应条件的数量和形式的变化。“SAB”和“CAB”分别表示自我和交叉注意块。

数据集
该研究采用训练数据集MultiGen进行中提出的多控制图像合成。该数据集基于美学评分在6分以上的LAION[37]。去除低分辨率图像,最终保留280万张图像。采用不同的方法提取控制信号。不幸的是,训练时的空间条件与推理时的空间条件的组合存在领域差距,即在训练时,从同一幅图像中提取的所有空间条件都是完全对齐的,而从用户那里接受的多个空间条件则不是这样。用户提供的条件通常有多个图像源,因此提取的空间条件并不总是对齐的,有时在重叠区域有遮挡,这就要求模型根据目标场景的深度正确排列处理空间条件。为了消除这种差异,该研究收集了未对齐数据的子集,如图4所示。具体来说,该研究利用Open images数据集和MSCOCO数据集中对象丰富的图像来制作合成数据。给定图像和前景对象的蒙版,该研究使用补图工具用蒙版区域恢复背景图像。该研究丢弃对象太小或太大的图像,最终产生0.44M图像作为补充的未对齐训练数据。

在合成未对齐数据集的制作过程中,该研究利用面积比为[0.1,0.4]的groudtruth对象掩模来勾勒前景对象,而过小或过大的对象将导致不希望恢复的背景图像。PowerPaint是一个多任务绘制模型,支持文本引导的对象绘制、上下文感知的图像绘制以及对象删除。在这里,该研究采用“对象移除”模式来进行非对齐数据的构建。图11显示了合成未对齐数据的更多可视化效果。

实验细节
训练策略 在利用未对齐数据进行训练时,该研究将前景目标和所绘制的背景图像的空间条件组合在一起,同时将原始图像作为目标。在训练过程中,对于空间条件完全对齐的数据,该研究为每个训练样本随机选取两个条件;对于合成的未对齐数据,该研究分别为前景对象和背景嵌入图像随机选择一个条件。该研究以0.05的速率随机丢弃所有条件,使分类器能够自由引导,并且以0.05的速率随机丢弃文本提示,让模型只从纯空间条件中学习
网络 AnyControl的详细结构如图10所示。该研究基于1.5版本的Stable Diffusion来构建AnyControl。与ControlNet类似,该研究在完全冻结稳态扩散模型的预训练权值的同时,对UNet编码块进行可训练拷贝,以适应控制信息。在该研究的多控制编码器中,query tokens的数量设置为256,从而可以提取详细的可控信息。与query tokens长度相同的附加位置嵌入由所有输入空间条件共享。该研究将QFormer的预训练权值作为Multi-Control Encoder的初始化,除了query tokens和附加的位置嵌入是随机初始化的。
超参数 该研究在8个A100 GPU卡上训练AnyControl,每个GPU上的批处理大小为8。该研究训练模型总共90K次迭代,初始学习率为1e-5。在推理过程中,该研究将classifier-free guidance scale设置为7.5。在所有的实验中,该研究都采用了50个时间步长的DDIM采样器。

结果展示


研究不足
虽然在AnyControl中不限制空间条件的输入数量,但容易导致过多空间条件下的混色缺失问题。观察图9所示,当空间条件的数量过大时,例如在本例中为8。可能的原因是:1)CLIP文本编码器在理解概念众多的复杂文本提示时能力有限;2)交叉注意变压器块中过多的视觉标记导致softmax的精度降低,从而削弱了精确多控制理解中的AnyControl。

其他内容
手工重量调整器 如图12所示,手工制作权值的多控制方法,即Multi-ControlNet,通常需要根据合成结果进行一系列费力的权值调整,而该研究的方法可以自动推断组合权值并提取统一的多控制嵌入,从而产生和谐的结果。

多层次视觉Tokens 尽管来自预训练的视觉编码器的最后一个transformer块的视觉tokens已经聚合了丰富的信息,但它们还不够。
该研究逐渐使视觉tokens从最深的层次到最浅的层次细粒度可控信息。该研究对从视觉编码器到多控制编码器所使用的视觉tokens的水平进行了消融实验。表4表明,从中间层集成更多的可视化tokens会增加FID,并在第4层遇到性能饱和。
深的层次到最浅的层次细粒度可控信息。该研究对从视觉编码器到多控制编码器所使用的视觉tokens的水平进行了消融实验。表4表明,从中间层集成更多的可视化tokens会增加FID,并在第4层遇到性能饱和。

相关文章:
【论文笔记-ECCV 2024】AnyControl:使用文本到图像生成的多功能控件创建您的艺术作品
AnyControl:使用文本到图像生成的多功能控件创建您的艺术作品 图1 AnyControl的多控制图像合成。该研究的模型支持多个控制信号的自由组合,并生成与每个输入对齐的和谐结果。输入到模型中的输入控制信号以组合图像显示,以实现更好的可视化。 …...
Vue3核心编译库@vuecompiler-core内容分享
vue/compiler-core 是 Vue 3 中的一个核心编译库,主要用于编译 Vue 的模板。它为 Vue 3 提供了处理模板编译的功能,包含了将模板转换为抽象语法树(AST)、生成渲染函数以及与响应式系统进行集成等功能。 vue/compiler-core 的主要…...
Redisson使用场景及原理
目录 一、前言 二、安装Redis 1、Windows安装Redis 2、启动方式 3、设置密码 三、项目集成Redission客户端 1、引入依赖 四、实用场景 1、操作缓存 2、分布式锁 3、限流 3.1 创建限流器 3.2 设置限流参数 3.3 获取令牌 3.4 带超时时间获取令牌 3.5 总结 一、…...
【二分查找 图论】P8794 [蓝桥杯 2022 国 A] 环境治理|普及
本文涉及的基础知识点 本博文代码打包下载 C二分查找 C图论 [蓝桥杯 2022 国 A] 环境治理 题目描述 LQ 国拥有 n n n 个城市,从 0 0 0 到 n − 1 n - 1 n−1 编号,这 n n n 个城市两两之间都有且仅有一条双向道路连接,这意味着任意两…...
c/c++蓝桥杯经典编程题100道(22)最短路径问题
最短路径问题 ->返回c/c蓝桥杯经典编程题100道-目录 目录 最短路径问题 一、题型解释 二、例题问题描述 三、C语言实现 解法1:Dijkstra算法(正权图,难度★★) 解法2:Bellman-Ford算法(含负权边&a…...
25中医研究生复试面试问题汇总 中医专业知识问题很全! 中医试全流程攻略 中医考研复试调剂真题汇总
各位备考中医研究生的小伙伴们,一想到复试,是不是立刻紧张到不行,担心老师会抛出一大堆刁钻的问题?别怕!其实中医复试也是有套路可循的,只要看完这篇攻略,你就会发现复试并没有想象中那么难&…...
stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)
简介: 这个小车的芯片是STM32F103C8T6,其他的芯片也可以照猫画虎,基本配置差不多,要注意的就是,管脚复用,管脚的特殊功能,(这点不用担心,hal库每个管脚的功能都会给你罗列,很方便的.)由于我做的比较简单,只是用到了几个简单外设.主要是由带霍尔编码器电机的车模,电机…...
centos22.04 dpkg -l 输出状态标识含义
dpkg -l 输出状态标识含义 dpkg -l 命令用于列出系统中已安装的软件包,每行输出的前两个字符是软件包状态的标识,不同的组合代表不同的状态,具体含义如下: 第一个字符:表示期望的状态(Desired state) u:未知(Unknown)i:安装(Install)r:移除(Remove)p:清除(Pu…...
前端TypeScript 面试题及参考答案
目录 解释 unknown 与 any 的区别,如何安全使用 unknown 类型? 如何用类型守卫处理联合类型变量的方法调用? 实现一个工具类型 Nullable ,使 T 可被赋值为 null/undefined 如何用 keyof 和 in 关键字实现枚举类型到联合类型的转换? 类型断言 as 与尖括号语法有何差异…...
基于 Vue.js 和 Element UI 实现九宫格按钮拖拽排序功能 | 详细教程与代码实现
在Vue.js项目中使用vue-element-template(基于Element UI)实现按钮的九宫格拖拽排序功能,可以通过以下步骤实现。我们将使用vuedraggable库来实现拖拽排序功能。 1. 安装依赖 首先,确保你已经安装了vuedraggable库: …...
Spring Framework测试工具MockMvc介绍
目录 一、基本概念 二、主要特点 三、使用场景 四、工作原理 五、示例代码 接口创建 测试类创建 六、注解解释 AutoConfigureMockMvc WebMvcTest 一、基本概念 MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用…...
nginx 正向代理与反向代理
1. 正向代理(Forward Proxy) 正向代理是指 代理客户端 访问目标服务器,通常用于访问受限资源或隐藏客户端 IP。 工作原理 客户端请求代理服务器(如 nginx)。代理服务器代表客户端向目标网站发起请求。目标网站返回内…...
VUE 获取视频时长,无需修改数据库,前提当前查看视频可以得到时长
第一字段处 <el-table-column label"视频时长" align"center"> <template slot-scope"scope"> <span>{{ formatDuration(scope.row.duration) }}</span> </template> </el-ta…...
使用Jenkins实现Windows服务器下C#应用程序发布
背景 在现代化的软件开发流程中,持续集成和持续部署(CI/CD)已经成为不可或缺的一部分。 Jenkins作为一款开源的自动化运维工具,能够帮助我们实现这一目标。 本文将详细介绍如何在Windows服务器下使用Jenkins来自动化发布C#应用…...
蓝桥杯练习代码
一、最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl"示例 2: 输入:strs = ["dog",&q…...
算法-二叉树篇11-左叶子之和
左叶子之和 力扣题目链接 题目描述 给定二叉树的根节点 root ,返回所有左叶子之和。 解题思路 层次遍历的时候,保留每层第一个节点并相加即可。 题解 class Solution { public:int sumOfLeftLeaves(TreeNode* root) {if(root NULL){return 0;}re…...
[java基础-JVM篇]1_JVM自动内存管理
JVM内存管理涉及但不限于类加载、对象分配、垃圾回收等,本篇主要记录运行时数据区域与对象相关内容。 内容主要来源《深入理解Java虚拟机:JVM高级特性与最佳实践》与官方文档,理解与表述错漏之处恳请各位大佬指正。 目录 运行时数据区域 栈 栈…...
Junit框架缺点
JUnit 是 Java 生态中最流行的单元测试框架,广泛应用于单元测试和集成测试中。尽管它功能强大且易于使用,但也存在一些缺陷和局限性。以下是 JUnit 的主要缺点: 1. 功能相对固定 问题:JUnit 的核心功能相对固定,缺乏灵…...
机器学习数学基础:34.克隆巴赫α系数
克隆巴赫α系数(Cronbach’s Alpha)超详细教程 专为小白打造,零基础也能轻松学会! 一、深度理解α系数 克隆巴赫α系数(Cronbach’s Alpha)是在评估测验质量时极为关键的一个指标,主要用于衡量…...
【Linux】vim 设置
【Linux】vim 设置 零、起因 刚学Linux,有时候会重装Linux系统,然后默认的vi不太好用,需要进行一些设置,本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效: …...
JavaScript系列(90)--前端脚手架开发
前端脚手架开发 🛠️ 前端脚手架是现代前端开发流程中的重要工具,它能够帮助开发者快速初始化项目结构、配置开发环境、设置构建流程,从而提高开发效率和标准化项目结构。本文将详细介绍前端脚手架的开发原理、实现方式以及最佳实践。 脚手…...
工程实践中常见的几种设计模式解析及 C++ 实现
工程实践中常见的几种设计模式解析及 C 实现 在软件工程中,设计模式是一种通用的解决方案,用于解决常见问题和优化代码结构。它们通过提供一种规范化的编程思想,帮助开发者写出更高效、可维护和可扩展的代码。本文将介绍几种在工程实践中常见…...
基于Python+django+mysql旅游数据爬虫采集可视化分析推荐系统
2024旅游推荐系统爬虫可视化(协同过滤算法) 基于Pythondjangomysql旅游数据爬虫采集可视化分析推荐系统 有文档说明 部署文档 视频讲解 ✅️基于用户的协同过滤推荐算法 卖价就是标价~ 项目技术栈 Python语言、Django框架、MySQL数据库、requests网络爬虫…...
Oracle 12c Docker安装问题排查 sga_target 1536M is too small
一、问题描述 在虚拟机环境(4核16GB内存)上部署 truevoly/oracle-12c 容器镜像时,一切运行正常。然而,当在一台 128 核 CPU 和 512GB 内存的物理服务器上运行时,容器启动时出现了 ORA-00821 等错误,提示 S…...
es-head(es库-谷歌浏览器插件)
1.下载es-head插件压缩包,并解压缩 2.谷歌浏览器添加插件 3.使用...
C++大整数类的设计与实现
1. 简介 我们知道现代的计算机大多数都是64位的,因此能处理最大整数为 2 64 − 1 2^{64}-1 264−1。那如果是超过了这个数怎么办呢,那就需要我们自己手动模拟数的加减乘除了。 2. 思路 我们可以用一个数组来存储大数,数组中的每一个位置表…...
Linux网络基础(协议 TCP/IP 网络传输基本流程 IP VS Mac Socket编程UDP)
文章目录 一.前言二.协议协议分层分层的好处 OSI七层模型TCP/IP五层(或四层)模型为什么要有TCP/IP协议TCP/IP协议与操作系统的关系(宏观上是如何实现的)什么是协议 三.网络传输基本流程局域网(以太网为例)通信原理MAC地址令牌环网 封装与解包分用 四.IP地址IP VS Mac地址 五.So…...
Web开发:ORM框架之使用Freesql的导航属性
一、什么时候用导航属性 看数据库表的对应关系,一对多的时候用比较好,不用多写一个联表实体,而且查询高效 二、为实体配置导航属性 1.给关系是一的父表实体加上: [FreeSql.DataAnnotations.Navigate(nameof(子表.子表关联字段))]…...
NLP07-朴素贝叶斯问句分类之数据集加载(1/3)
一、概述 数据集加载(Dataset Loading)是机器学习、自然语言处理(NLP)等领域中的一个重要步骤,指的是将外部数据(如文件、数据库、网络接口等)加载到程序中,以便进行后续处理、分析…...
Rk3568驱动开发_点亮led灯(手动挡)_5
1.MMU简介 完成虚拟空间到物理空间的映射 内存保护设立存储器的访问权限,设置虚拟存储空间的缓冲特性 stm32点灯可以直接操作寄存器,但是linux点灯不能直接访问寄存器,linux会使能mmu linux中操作的都是虚拟地址,要想访问物理地…...
