Ranni: Taming Text-to-Image Diffusion for Accurate Instruction Following

Ranni: Taming Text-to-Image Diffusion for Accurate Instruction Following

abstract

  • 我们引入了一个语义面板作为解码文本到图像的中间件,支持生成器更好地遵循指令

Related work

  • 最近的工作还通过包含额外的条件(如补全掩码[15,45]、草图[42]、关键点[18]、深度图[40]、分割图[6,43]、布局[35]等)来扩展扩散模型的可控性。
  • LLM-grounded Diffusion[19]和VPGen[5]利用LLMs通过精心设计的系统提示从文本提示中推断出对象位置。
  • LayoutGPT[11]通过为LLM提供检索到的示例来改进这一框架。Ranni进一步融入了一个包含多个属性的全面语义面板,充分利用LLMs的规划能力来准确执行绘画和编辑任务。

Methodology

  • 它利用语义面板进行精确的文本到图像的生成。接下来,我们扩展了框架以支持交互式编辑和连续生成。最后,我们介绍了一个自动数据准备流程和创建的数据集,这使得Ranni的训练更加高效。

Bridging Text and Image with Semantic Panel

  • 我们将语义面板定义为用于操作图像中所有视觉概念的工作空间
  • 每个视觉概念代表一个对象,并包含其视觉上可访问的属性(例如位置和颜色)
  • 语义面板作为文本和图像之间的中间件,为文本提供结构化建模,并为图像提供压缩建模
  • 通过引入面板,我们缓解了直接将文本映射到图像的压力
  • 我们为每个概念包含以下属性:
    • 1)用于语义信息的文本描述,
    • 2)用于位置和大小的边界框,
    • 3)用于风格的主色
    • 4)用于形状的关键点。
  • 因此,文本到图像的生成自然地被分为两个子任务:文本到面板和面板到图像。
Text-to-Panel
  • 我们设计了系统提示,请求LLM想象与输入文本对应的视觉概念
  • 在生成概念的多个属性时,我们受到“思维链”的启发,以顺序方式进行
    • 首先,生成整组对象及其文本描述
    • 然后,生成并安排每个对象的详细属性,例如边界框
  • 由于LLM的零样本学习能力,它们可以生成具有正确输出格式的详细语义面板
  • 此外,我们通过对LLM进行微调,以更好地理解视觉概念,特别是像颜色这样的更详细属性,从而提高了LLM的性能
  • 这是通过使用由图像-文本-面板三元组组成的大型数据集来实现的。数据集构建的详细信息将在第3.3节中解释。
Panel-to-Image
  • 首先,语义面板中的所有视觉概念被编码成一个条件映射图
  • 该映射图的形状与图像的潜在表示相同。不同属性的编码方式如下
    • 文本描述:CLIP文本嵌入。
    • 边界框:在框内部为1的二进制掩码。
    • 颜色:可学习的索引嵌入。
    • 关键点:在关键点上为1的二进制热图。
    • 这些条件通过可学习的卷积层进行聚合。最后,所有对象的条件映射图进行平均,形成控制信号。
  • 为了控制扩散模型,我们将条件映射图添加到其去噪网络的输入中,然后,模型在第3.3节中描述的数据集上进行微调
  • 在推理过程中,我们进一步通过操作去噪网络的交叉注意力层来增强控制。具体来说,对于每个视觉概念,我们限制其边界框内图像块的注意力图,优先关注其文本描述的单词。

Interactive Editing with Panel Manipulation

  • Ranni的图像生成过程允许用户访问语义面板以进一步编辑图像
  • 每个编辑操作都对应于语义面板中视觉概念的更新。考虑到语义面板的结构,我们定义了以下六个单元操作:
    • 1)添加新对象
    • 2)删除现有对象
    • 3)用其他对象替换
    • 4)调整对象大小
    • 5)移动对象
    • 6)重新编辑对象的属性。
  • 用户可以手动执行这些操作,也可以依靠LLM(大型语言模型)的协助。例如,“将球向左移动”可以通过图形用户界面使用拖放功能实现,或者在LLM的帮助下通过基于指令的聊天程序实现。我们还可以不断更新语义面板,以逐步优化图像,从而获得更准确和个性化的输出
  • 在更新语义面板后,新的视觉概念被用来生成编辑后的图像潜在表示
  • 为了避免对原始图像进行不必要的修改,我们使用一个二进制掩码M_e来限制编辑范围到可编辑区域
  • 通过比较之前的语义面板和新的语义面板之间的差异,我们可以很容易地确定可编辑区域,即调整后的视觉概念的边界框

Semantic Panel Dataset

  • 为了支持Ranni的高效训练,我们建立了一个全自动的数据集准备流程,包括属性提取和数据集增强。
  • 属性提取:我们首先从多个资源中收集了一个包含5000万张图像-文本对的大型数据集,例如LAION[37]和WebVision[17]。对于每一对图像-文本,我们按照以下顺序提取所有视觉概念的属性:
    • (i) 描述和边界框:使用Grounding DINO[21]来提取带有文本描述和边界框的对象列表。然后,我们过滤掉无意义的描述,并删除具有相同描述且高度重叠的边界框。
    • 颜色:对于每个边界框,我们首先使用SAM[16]来获取其分割掩码。掩码内的每个像素都被映射到156色调色板中最接近的颜色的索引。我们统计索引频率,并选择占比大于5%的前6种颜色
    • 关键点:使用FPS算法[30]在SAM[16]掩码内采样关键点。我们采样八个点,当FPS的最远距离达到一个小阈值(0.1)时,就提前停止采样。
  • 数据增强:我们凭经验发现,使用以下策略增强数据集是有效的:
    • (i) 合成字幕:图像的原始字幕可能会忽略一些对象,导致语义面板不完整。为了解决这个问题,我们利用LLaVA[52]来找出具有多个对象的图像,并为它们生成更详细的字幕。
    • (ii) 混合伪数据:为了增强空间排列能力,我们使用手动规则创建伪样本。我们从具有不同方向、颜色和数量的对象池中生成随机提示。接下来,我们根据指定的规则随机排列它们来合成语义面板。

Experiments

Experimental Setup

  • 对于文本到面板的任务,我们选择了开源的Llama-2[41] 13B版本作为我们的大型语言模型
    • 为了使每个解析的对象能够生成属性,我们使用LoRA[13]对LLM进行了10K步的微调,批处理大小为64
    • 每个属性生成任务的最终优化模块包含625万个参数,这使得在不同任务之间轻松切换成为可能
    • 数据集的采样概率为:50%来自带有原始字幕的子集,45%来自合成字幕,5%来自伪数据。
  • 对于面板到图像的任务,对一个具有30亿参数的预训练潜在扩散模型进行了微调
    • 训练样本在原始字幕和合成字幕之间均匀分布
    • 为了在模型中优先考虑属性条件而不是文本条件,我们对文本条件应用了0.7的丢弃率。

Evaluation on Text-to-Image Alignment

4.3. Evaluation on Interactive Generation

  • 然后,我们扩展其功能,包括使用复合操作的多轮编辑。最后,我们通过将LLM的智能融入Ranni,实现了基于聊天的编辑功能,从而增强了Ranni
  • 复合操作。基于单位操作,我们进一步应用Ranni进行连续的复合操作编辑。在图10中,我们展示了逐步创建复杂场景图像的例子。在这个交互式创作过程中,用户可以逐步细化图像,通过替换不满意的对象、添加更多细节和尝试各种属性来进行实验
  • 基于聊天的编辑。我们还使用LLM来自动将编辑指令映射为语义面板的更新
  • 为此,我们引入了专为此任务设计的新系统提示。这些系统提示要求LLM理解当前的语义面板和编辑指令,然后生成更新后的面板

Supplementary Material

  • 我们提供了一个完整的工作流的示例,包括绘画和编辑指令。图A1展示了请求LLM创建和操纵语义面板的对话过程,并附带了逐步的指令

B.1. Attribute Extraction

  • 描述与框。给定一张带有完整说明的图片,我们使用Grounding DINO[21]来检测所有可见对象框以及它们在说明中对应的描述
  • 颜色。对于每个对象,我们使用SAM[16]掩码来提取其所有像素。首先,
  • 关键点。我们使用最远点采样(FPS)算法[30]在SAM掩码内采样关键点。

C. Text-to-Panel

  • 在本节中,我们详细展示了在Ranni中基于大型语言模型(LLM)的文本到面板生成的过程。这个过程是为面板中的不同属性逐步进行的。在所有属性的生成中,我们精心搜索了一个系统提示,以利用LLM的零样本学习能力。所有的系统提示模板都展示在图A3中

C.2. Box Generation

  • 对于边界框的输出格式,我们发现将其定义为[x c, y c, w, h]是有用的,其中(x c, y c)是框的中心点,(w, h)是框的宽度和高度。与最常用的[x1, y1, x2, y2]表示框的左上角和右下角不同,我们使用的格式对LLM更友好

C.3. Color Generation

D. Implementation Details of Panel-to-Image

  • 我们首先将语义面板中的每个属性编码成一个综合条件:
    • 对于文本描述,我们分别获取其CLIP文本嵌入[31]。我们使用与主文本到图像模型相同的CLIP权重,但采用全局句子嵌入而不是词嵌入。

    • 对于边界框,我们在与图像潜在形状相同的形状上绘制一个二进制掩码。将框的坐标调整到潜在空间,即原始值的1/8。然后,我们将掩码中框内的所有位置设置为值1。

    • 对于颜色,我们已经得到了一个颜色索引列表。然后,我们设置一个大小为156的二进制向量(与调色板大小相同),并为给定的颜色索引设置值为1。该向量随后通过可学习的线性投影映射到特征向量。

    • 对于关键点,我们绘制一个与框相同的二进制掩码。对于每个点,我们绘制一个半径为6的圆,并在圆内设置值为1。

  • 然后,所有条件都通过可学习的卷积映射到相同的通道。为了合并不同形状的条件,我们进一步将一维条件(文本和颜色)重复成与图像相同的形状,并将其与边界框的二进制掩码相乘。最后,我们将所有条件相加,并对所有对象求平均值

Attention Restriction

  • 现有的扩散模型涉及N_I个图像块和N_T个输入提示词之间的交叉注意力。给定生成的语义面板,我们已经知道了块和词之间的确切对应关系。然后,我们的修正工作是限制注意力图遵循这种对应关系。我们为此修正生成一个注意力掩码M ∈ R^{N_I × N_T}。对于每个对象,我们首先在整个提示文本中定位其文本描述的索引范围[i_s, i_e],然后在边界框内定位相关的图像块范围[j_s, j_e]。然后,注意力掩码被设置为M[i_s:i_e, j_s:j_e] = 1,否则为0。我们将注意力掩码应用于扩散模型中的所有交叉注意力层。

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

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

相关文章

10 华三vlan技术介绍

AI 解析 -Kimi-ai Kimi.ai - 帮你看更大的世界 (moonshot.cn) 虚拟局域网(VLAN)技术是一种在物理网络基础上创建多个逻辑网络的技术。它允许网络管理员将一个物理网络分割成多个虚拟的局域网,这些局域网在逻辑上是隔离的,但实际…

【LeetCode刷题记录】105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树

105 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,1…

Pandas入门篇(三)-------数据可视化篇2(pandas-plot篇)

目录 概述一、格式1. 生成pandas.plotting对象来生成图表2. 调用plot()函数来生成图表3.支持的图表类型 二、单变量绘图常用图表1. 柱状图(bar)使用场景代码实现 2. 折线图(line)(默认即为折线图)适用场景代…

计算机毕业设计 | vue+springboot 在线花店后台管理系统(附源码)

1,绪论 1.1 项目背景 随着社会发展,网上购物已经成为我们日常生活的一部分。但是,至今为止大部分电商平台都是从人们日常生活出发,出售都是一些日常用品比如:食物、服装等等,并未发现一个专注于鲜花的电商…

从一到无穷大 #25 DataFusion:可嵌入,可扩展的模块化工业级计算引擎实现

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言架构总览与可扩展性Catalog and Data SourcesFront End逻辑计划与逻辑计划优化器…

使用台式机打开腾讯会议后打开麦克风提示:未检测到可用的麦克风,请插入设备后重试

解决方法如下: 台式机是不带输入设备的,也就是不自带麦克风的,而笔记本电脑是带的。这时候在台式机上可以通过插入有线耳机充当输入设备,就可以正常使用麦克风功能了。 插入之后,可以看到设置里面声音界面包含了一个…

new mars3d.control.MapSplit({实现点击卷帘两侧添加不同图层弹出不同的popup

new mars3d.control.MapSplit({实现点击卷帘两侧添加不同图层弹出不同的popup效果: 左侧: 右侧: 说明:mars3d的3.7.12以上版本才支持该效果。 示例链接: 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 相关代…

关于视频号小店,常见问题解答,开店做店各方面详解

大家好,我是电商笨笨熊 视频号小店作为今年风口,一个新推出的项目,凭借着自身流量加用户群体的优势吸引了不少的电商玩家。 但对于很多玩家来说,视频号小店完全是一个新的项目、新的领域,因此也会存在很多的疑问&…

数据分析从入门到精通 2.pandas修真之前戏基础

从爱上自己那天起,人生才真正开始 —— 24.5.6 为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型…

接口自动化测试之-requests模块详解

一、requests背景 Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。 二、requests安装 利用p…

CI/CD笔记.Gitlab系列.新用户管理

CI/CD笔记.Gitlab系列 新用户管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_285502…

记一次攻防演练

看到一处登录后台,各种操作都尝试过无果,翻了一下js,看到一处文件上传接口泄露(没图了,已经整改了) 构造上传数据包,很nice,上传成功 直接连接webll,搭建隧道进行内网穿透 翻看配置文件&#xf…

简单说说 gather_plan_statistics

DBA的日常核心工作之一是对线上有性能问题的SQL语句进行优化。其中优化SQL语句的最关键的一步是得到SQL的执行计划。那么一个常见的问题来了。如何得到一个SQL语句的真实执行计划?方法有很多。今天说其中一种方法就是使用 gather_plan_statistics(收集计划统计信息) 首先简单…

东方生物工程设备技术有限责任公司带您解读2024第12届上海生物发酵展览会

参展企业介绍 镇江东方生物工程设备技术有限责任公司是国内规模最大的自动成套生化反应设备的专业制造商,也是江苏省最早的专业发酵罐制造公司。公司主要从事液体发酵设备、固体发酵设备、特殊新型生化反应设备以及自动生化反应过程控制系统的研究、开发与制造。 公…

鸿蒙内核源码分析(事件控制篇) | 任务间多对多的同步方案

官方概述 先看官方对事件的描述. 事件(Event)是一种任务间通信的机制,可用于任务间的同步。 多任务环境下,任务之间往往需要同步操作,一个等待即是一个同步。事件可以提供一对多、多对多的同步操作。 一对多同步模型…

HFP event

0 Preface/Foreword NOTE:在来电提示音在响时候,每3s会进入一次。 也就是说:协议栈,没3s会调用一次app_hfp_event_callback。 回调函数在hfp初始化时候通过btif_hf_register_callback注册。 提示音调节: iPhone6s iO…

区块链开发用的是哪种编程语言?

区块链技术作为近年来备受瞩目的新兴技术之一,其核心的特性之一就是去中心化、安全性高、透明度高和可扩展性强。而区块链的开发语言则是实现这一技术的关键因素之一。那么,区块链开发语言是哪一种编程语言呢? 一、区块链开发语言的特点和选…

OZON卖家必看!2024年OZON运营必备工具大全

OZON运营过程中会用到许多工具网站,都是OZON跨境人运营必备的。为了帮助新卖家在运营OZON时更高效,下面汇总了一份我们在日常运营中频繁使用的工具网站列表。这样大家可以一次性找到所需的所有网址,无需在多个网站间来回切换,节省…

C++:哈希表和unordered系列容器的封装

一、unordered系列关联式容器的介绍 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是&…

K. 子串翻转回文串

给一个串 s  s1s2... sn,你可以选定其一个非空子串,然后将该子串翻转。具体来说,若选定的子串区间为 [l, r](1 ≤ l ≤ r ≤ n),则翻转后该串变为 s1s2... sl - 1srsr - 1... slsr  1... sn…