直接用表征还是润色改写?LLM用于文生图prompt语义增强的两种范式

直接用表征还是润色改写?LLM用于文生图prompt语义增强的两种范式

导语

目前的文生图模型大多数都是使用 CLIP text encoder 作为 prompt 文本编码器。众所周知,由于训练数据是从网络上爬取的简单图文对,CLIP 只能理解简单语义,而无法理解复杂语法 。这导致生成的图片经常出现语义错误、属性绑定错误等问题。为了适配 CLIP 的简单语义的模式,现有的 Stable Diffusion 等生图模型的文本 prompt 也一般是宛如咒语一般的一组单词,而非正常的自然语言句子。现在的 LLM 大模型所擅长的正是复杂文本的语义理解,近来出现了一些工作使用 LLM 来对生图 prompt 进行润色改写或直接作为文生图模型的文本编码器,从而提高文生图模型对 prompt 的理解能力,并将 prompt 的语义在生图结果中更好地体现出来。

具体来说,目前使用 LLM 对文生图 prompt 进行语义增强的方法可以分为两种范式:一是使用 LLM 的文本生成能力对 prompt 进行改写、润色,使之适用于作为生图 prompt;二是直接将 LLM 的 hidden states 拿出来替换掉 CLIP 的 text embedding,作为条件通过交叉注意力注入到 UNet 生图过程中。本质上,这两类范式的区别就是语言模型与生图模型交互的交互媒介(interface)不同,关于这两类范式各自的优劣,将在文末讨论。

LaVi-Bridge

TL; DR:在 LLM 和 DM 中各自插入一些 LoRA,并在二者之间接一个 MLP。

方法

在 LLM 和 DM 中各自插入一些 LoRA,并在二者之间接一个 MLP。可以用于在各种 LLM 和 DM 之间适配。

在这里插入图片描述

总结

LaVi-Bridge 是比较简单直接的连接 LLM 和 DM 的做法。

ELLA

TL; DR:使用 LLM + Adapter 替换 CLIP text encoder 的简单语义 embedding,其中 LLM 和 Diffusion UNet、VAE 均冻结,仅训练 Adapter 部分。目前适用于 sd1.5 的模型已开源,但是训练代码和适用于 sdxl 的模型预计不会开源 (issue link)。

方法
  • 网络结构:提出了一种不同时间步不同的网络结构 TSC (Timestep-aware Semantic Connector)。实际上是用的 Flamingo 中的 Resampler,从而支持对于任意长度的文本输入,输出固定长度的 query token。另外,考虑到在不同的时间步,模型生成的重点不同(比如在前期确定整体构图布局,后期是增加更多细节),所以本文在 Adapter 上加入了 timestep embedding,从而使得 Adapter 能感知当前所处的时间步,来输出不同的 query token。将 LLM 的最后一层 hidden states 作为 TSC Adapter 的输入,然后 TSC Adapter 的输出通过交叉注意力作为条件注入到 UNet 中。
  • 训练数据:由于 web 上的图文对训练数据质量较差,本文使用 CogVLM 在筛选的图片上生成复杂文本描述。图片筛选条件包括美学分和最小分辨率等。
  • 新基准:本文还提出了一个复杂 prompt 信息文生图的 benchmark:DPG-Bench。

在这里插入图片描述

效果展示

ELLA 展示出的效果还是非常不错的,可以看到相比于 SDXL 和 DALL-E 3,ELLA 对 prompt 的理解都更好,对于复杂的物体关系、物体属性,都在生图结果中有正确的体现。

在这里插入图片描述

总结

使用 LLM 代替 CLIP 提供语义更完善准确的文本 embedding,虽然需要进行训练,但是 ELLA 的方案看起来是比较简洁的。但是比较可惜 ELLA-SDXL 不开源。

RPG Master

TL; DR:本文提出 RPG 生图框架,通过利用 LLM 的 CoT 推理能力,来对复杂的生图 prompt 进行拆解,将复杂图像的生成拆分为多个子区域的生成。并集成了文本生成和图像编辑,最后通过互补区域扩散,将全局 prompt 和各个区域 prompt 结合起来,完成最终生图。


方法

现有的文生图方法在面对包含多个物体,多种属性的复杂生图 prompt 时,经常出现属性绑定错落的情况。RPG 方法的三个字母,指的分别是 Recaption、Plan 和 Generate,这是本方法的三个步骤,通过 LLM 的复杂文本理解能力,对原 prompt 进行重写和分区域规划,再用互补区域采样生成完整图片。整体流程如下图所示。

在这里插入图片描述

  1. Recaption 是根据用户的复杂 prompt(本文中也作为 base prompt),由 (M)LLM 识别出其中的实体并对每个实体重写一个 prompt。注意根据实体的属性、数目等,会有特定的切分策略,避免多种属性落到同一区域内导致混乱;
  2. Plan 是根据 base prompt 和各实体的 prompt,进行计划划分,将不同实体分配到图像的各个区域,并按照指定的格式输出区域切分的长宽比和
  3. Generate 阶段,作者使用了一种新的多区域采样方法 CRD(Complementary Regional Diffusion)(如下图所示),base prompt 和各区域 prompt 各自进行正常的生成,最后将各区域的 latent 进行缩放并按位置拼接,得到一整张图的区域 latent,再与 base prompt 的全局 latent 计算加权和,解码得到最终图像。

在这里插入图片描述

另外,RPG 还支持使用多模态大模型(MLLM)结合文本 prompt 和此前的生图结果进行闭环迭代式的 prompt 图像编辑(流程见下图)。MLLM 同时接收编辑修改后的 prompt 和此前的生图结果,将二者的实体进行对照,根据二者差异进行 Add / Del / Mod 三种类型的修改,重新进行 Recaption、Plan、Generate 三个步骤,实现图像编辑。

在这里插入图片描述

效果展示

RPG 的效果展示如下图,可以看到,在面对多个物体、多种属性的复杂 prompt (如上方例子中的冰山、火山、村庄、滑雪、游玩等)时,利用 LLM 在不同区域生成对应的 prompt 并各自采样,RPG 可以将 prompt 中描述的物体和属性的对应关系正确地体现出来,而 SDXL 和 DALL-E 3 则出现了或是出现了属性缺失,或是出现了属性错乱的现象。

在这里插入图片描述

总结

RPG 中核心问题的解决方式就是利用 LLM 的推理能力,来对复杂 prompt 进行重写和分区域规划。因此该方法能否 work 的关键就在于所谓的 MLLM’s powerful reasoning ability 到底有没有那么 powerful。在实测中貌似许多 (M)LLM 对指令的理解能力和 reasoning 能力并不足以稳定的进行 recaptioning 和 planning。而且这个 instruct prompt 看起来也需要非常复杂详尽,不太好写。不过 RPG 是 training-free 的,这点比较好。

SUR-Adapter

TL; DR:构建简单 prompt、复杂 prompt、高质量图片三元组数据集,训练一个新增的 Adapter,蒸馏 LLM 从简单 prompt 到复杂 prompt 的扩写能力。


方法

上面的 RPG 解决的是 prompt 过于复杂,导致生图结果中物体属性混乱的问题,这里的 SUR-Adapter 解决的则是 prompt 过于简单,生图结果中细节太少,整体质量较差的问题。RPG 将复杂 prompt 进行改写拆分,分区域单独生成,避免属性混乱,而 SUR-Adapter 则是将简单 prompt 进行语义增强扩充,使得文生图模型能够得到细节更丰富的结果。

首先,作者构建了一个 SURD (Semantic Understanding and Reasoning Dataset)数据集:在 lexica、C 站、sd web 网站上收集高质量图片及其详细、复杂 prompt 的 pair,然后用 blip 生成该图片的简单 prompt,组成简单 prompt、复杂 prompt、高质量图片的三元组数据。经过清洗,最终共收集了 57000+ 样本。

在这里插入图片描述

然后,作者在预训练的文生图模型中加入了一个 Adapter(具体结构如下图所示),用于学习将简单 prompt 的文本特征优化对齐到复杂 prompt 的文本特征,这中间蒸馏 LLM 的理解、推理能力,来进行学习。具体来说,Adapter 的训练需要三个训练目标来驱动。

1 蒸馏 LLM 的理解推理能力

首先是要蒸馏学习 LLM 的理解、推理能力,学会从简单 prompt 到复杂 prompt 的扩写。将简单 prompt 分别输入到 LLM 和 text-encoder + adapter 中,最小化二者得到 embedding 的 KL 散度。

2 维持生图模型的原有生图能力

为了避免微调 adapter 过程中对原生图模型的生图能力有损害,第二个训练目标是常规扩散模型的去噪训练。值得注意的是,这里的用的文本 embedding 是 LLM 和 text-encoder + adapter 二者对简单 prompt 提取的文本 embedding 的加权和。

3 对齐简单 prompt 和复杂 prompt 的表征

对齐 2 中实际输入 UNet 的加权文本 embedding 与 text encoder 对复杂 prompt 的表征结果,最小化二者的 KL 散度。

在这里插入图片描述

效果展示

下图左侧展示了 CLIP text encoder 在多物体计数和多物体色彩绑定情况下出的问题,右侧分别展示了文生图模型在复杂 prompt、简单 prompt 和本文方法对简单 prompt 进行增强的情况下的生图结果。可以看到,仅使用简单 prompt 时,生图的细节确实比较单薄,而使用复杂 prompt 或本文增强的 prompt,细节明显更加丰富。

在这里插入图片描述

总结

也属于利用 LLM hidden states 表征能力的方法,搞得比较花哨。相当于学习 LLM 对简单 prompt 的扩写、细节丰富的能力。

整体总结

直接用表征还是润色改写?这是目前 LLM 用于文生图 prompt 语义增强的两种范式。

润色改写的代表方法是 RPG。这类方法优点是利用 LLM 本身的生成能力,不需要额外训练,缺点是比较依赖 (M)LLM 强大的指令跟随和语义理解能力,并且 LLM instruct prompt 的设计需要比较复杂详尽。如果 (M)LLM 能力不够强或 LLM instruct prompt 写得不好,很难稳定地生成高质量的结果。

直接用表征的方法比较多,LLaVi-Bridge、ELLA、SUR-Adapter 都属于这类方法。这类方法将 LLM 作为一个强大的文本表征模型,直接使用 LLM 的 hidden states 替换 CLIP 的 text embedding,都需要引入额外的 adapter 并进行训练。但是不需要设计 LLM instruct prompt,训练后的出图效果一般也比较稳定。但笔者一直有一个疑惑就是 LLM 这类预测下一个 token 的自回归模型用作表征模型的效率到底如何,以及为什么 LLM 的 hidden states 就比 CLIP 的 text embedding 的语义表征能力更强?

本质上,这两类范式的区别就是语言模型与生图模型交互的交互媒介(interface)不同。前者是使用 embedding 作为交互媒介,后者则是使用自然语言。直觉上来说,以 embedding 作为交互媒介似乎是更符合深度学习时代的做法。但是,最近的也有工作(如 De-Diffusion)指出了大模型/AIGC时代自然语言作为交互媒介的优势:灵活性和可解释性。以自然语言作为 interface,我们就能无缝地对接各类 LLMs、Diffusion Models,而不需要任何额外训练。这在介绍上述各方法时也有体现,只有以自然语言为媒介的 RPG 是不需要额外微调的。另外,自然语言可以直接被人类阅读,可解释性也大大增强。也可以引入人工参与,手动修改中间的 prompt。

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

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

相关文章

SpringBoot引入第三方jar包或本地jar包

idea2018创建spring boot项目 New Project窗口选择Spring Initializr Type选择Maven(Generate…),有两个Maven选择这一个。 勾选Spring Web。 pom.xml中version改成2.5.10。 在resources中新建jar目录,将第三方jar包fastjson2-2.0.47.jar放入其中。&#xff08…

星球大战绝地幸存者XGP微软商店免费领取教程(XGP注册+开通)

星球大战绝地幸存者XGP微软商店免费领取教程(XGP注册开通) 《星球大战绝地幸存者》这款游戏是由重生游戏工作室制作,EA发行的冒险类动作游戏,续写了《星球大战绝地:陨落的武士团》中的故事。在这款银河系第三人称动作…

数据仓库与数据挖掘(实验一2024.4.24)

实验准备: 1.下载conda 2.配置环境C:\ProgramData\miniconda3\Scripts 3.创建文件夹panda进入虚拟环境qq 激活虚拟环境:activate qq 启动jupyter lab(python语言环境编译):jupyter lab 4.panda下载 (…

C 语言实例 - 数值比较

比较两个数 以下实例中定义了两个整数变量&#xff0c;并使用 if 来比较两个数值&#xff0c;可以先看下逻辑图&#xff1a; #include <stdio.h>int main() {int a, b;a 11;b 99;// 也可以通过以下代码实现让用户在终端输入两个数// printf("输入第一个值:&quo…

VS2022配置和搭建QT

一、下载QT 可以去QT官网下载:https://www.qt.io/product/development-tools。 直接安装。 二、安装qt插件 直接在vs插件市场搜索就行。 安装的时候根据提示&#xff0c;关闭vs自动安装 再次进去vs提示你选择qt版本&#xff0c;psth里边找到安装版本的qmake.exe就行 配…

如何让一个大几千页的打开巨慢的 PDF 秒开

生成 PDF 的方法&#xff0c;无论软件还是纯命令的都有很多种&#xff0c;排除计算机性能的因素&#xff0c;并不是所有的方法生成几千页的 PDF 都能丝滑到秒开。 示例 PDF 文档 6 千多页 打开要等一会儿&#xff0c;再等一会儿…… 解决方法 方法一、拆分再合并&#xff08…

css盒子设置圆角边框的方法

前言 欢迎来到我的博客 个人主页&#xff1a;北岭敲键盘的荒漠猫-CSDN博客 本文为我整理的设置圆角边框的方法 需求描述 我们在设置盒子边框时&#xff0c;他总是方方正正的。 我们想让这个直直的边框委婉一点该怎么办呢。这个就提到了我们这篇文章讲的东西&#xff1a; bord…

接口测试|超详细面试题【附答案】

今天给姐妹们整理了一套超详细的附答案的接口测试面试题&#xff0c;姐妹们快学起来吧~ 接口测试的重要性&#xff0c;相信不用我多说了。接口测试是现在软件测试工程师一个加分项。因为很多朋友一开始做了几年的软件测试都是在做功能测试&#xff0c;做界面UI的测试&#xff…

ClickHouse用UDF解析XML字符串和XML文件

一.如果是读取xml文件的时候&#xff0c;文件入库需要使用文件读取UDF 创建了1个测试文件 wsdFileRead()&#xff1a; 直接读取文件内容 SELECT wsdFileRead(/home/temp/wsd_test.xml)Query id: 09b6e5fe-7169-43f7-b001-90e2eeabb8da┌─wsdFileRead(/home/temp/wsd_test.xm…

二维码存储图片如何实现?相册二维码的制作技巧

如何将照片生成二维码后存储展示&#xff1f;现在很多人会将图片生成二维码以后&#xff0c;用于分享或者储存的用途&#xff0c;减少个人内存的占用量&#xff0c;而且分享照片也会更加的方便&#xff0c;只需要扫描二维码就可以让其他人查看图片。 想要制作图片二维码的步骤…

掌握Linux Shell脚本函数:提高脚本效率与可维护性

目录标题 1、什么是Shell函数&#xff1f;2、如何定义Shell函数&#xff1f;3、Shell函数参数4、返回值5、实例&#xff1a;使用函数进行文件备份6、为什么使用函数&#xff1f;7、最佳实践 在编写Linux shell脚本时&#xff0c;函数是组织和重用代码的重要手段。本文将介绍如何…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息&#xff0c;例如你的阅读计划&#xff0c;可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器&#xff0c;能够在桌面上显示各种信息。以下是基本的设置步骤&#xff1a; 安装 Conky 首先&#xff0c;你需要在 Ubuntu…

园区智慧化转型新篇章:解码智慧技术如何助力园区实现精细化管理,提升运营效率

目录 一、智慧技术概述及其在园区管理中的应用 &#xff08;一&#xff09;物联网技术的应用 &#xff08;二&#xff09;大数据技术的应用 &#xff08;三&#xff09;云计算技术的应用 二、智慧技术助力园区实现精细化管理 &#xff08;一&#xff09;实现资源优化配置…

百度智能云千帆 ModelBuilder 技术实践系列:通过 SDK 快速构建并发布垂域模型

​百度智能云千帆大模型平台&#xff08;百度智能云千帆大模型平台 ModelBuilder&#xff09;作为面向企业开发者的一站式大模型开发平台&#xff0c;自上线以来受到了广大开发者、企业的关注。至今已经上线收纳了超过 70 种预置模型服务&#xff0c;用户可以快速的调用&#x…

crossover和wine哪个好 wine和crossover有什么本质区别 苹果电脑运行Windows crossover24

CrossOver是Wine的延伸产品&#xff0c;CrossOver可以简单的理解为类虚拟机&#xff0c;那么wine是什么&#xff0c;许多小伙伴就可能有些一知半解。CrossOver和wine哪个好&#xff0c;wine和CrossOver有什么本质区别呢&#xff1f;下文将围绕着这两个问题展开。 一、CrossOve…

一文扫盲(7):房产管理系统界面设计

本次带来第7期&#xff1a;房产管理系统的界面设计&#xff0c;从系统定义、功能模块、界面构成和设计方向四个方面讲解&#xff0c;大千UI工场愿意持续和大家分享&#xff0c;欢迎关注、点赞、转发。 一、什么是房产管理系统 房产管理系统是一种用于管理和维护房地产资产的软…

YOLO新鲜腐烂水果检测数据集:8类,11000多张图像,标注完整

YOLO新鲜腐烂水果检测数据集&#xff1a;8类&#xff0c;11000多张图像&#xff0c;yolo标注完整&#xff0c;包含烂苹果&#xff0c;烂香蕉&#xff0c;烂橙子&#xff0c;烂石榴&#xff0c;好苹果&#xff0c;好香蕉&#xff0c;好橙子&#xff0c;好石榴8个类别 图像统一分…

仿真软件搭建注意事项

搭建仿真软件是一个复杂的过程&#xff0c;涉及到软件工程、计算数学、工程学、物理学以及产品设计等多个学科的融合。以下是搭建仿真软件的注意事项&#xff1a; 需求分析&#xff1a;明确仿真软件的目标和功能需求&#xff0c;包括仿真的对象、仿真的精度、所需的物理模型等…

三招教你成为朋友圈运营高手,赶紧get起来!

朋友圈作为一个重要的营销推广渠道&#xff0c;是能够为我们带来很多收益的。今天就给大家分享朋友圈运营的三个技巧&#xff0c;快快Get起来吧&#xff01; 第一招&#xff1a;明确人设定位 要在朋友圈里脱颖而出&#xff0c;首先我们需要明确自己的人设定位。选择一个与自己…

【Chapter3】中断与处理机调度,计算机操作系统教程,第四版,左万利,王英

文章目录 一、中断与中断系统1.1 什么是中断&#xff1f;1.1.1 外中断&#xff08;硬件&#xff09;1.1.2 异常&#xff08;内中断&#xff09; 1.2 中断机制的原理1.2.1 中断装置1、中断源与中断字2、中断类型与中断向量3、中断嵌套与系统栈4、中断优先级别与中断屏蔽 1.2.2 中…