(2024|ICLR,SVD,软加权正则化,推理时文本嵌入优化)文本到图像扩散模型的图像内容抑制

news2024/11/26 17:37:37

Get What You Want, Not What You Don't- Image Content Suppression for Text-to-Image Diffusion Models

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

2. 相关工作

3. 方法

3.1 扩散模型

3.2 [EOT] 嵌入的分析

3.3 基于文本嵌入的语义抑制

3.4 推理时文本嵌入优化

4. 实验

5. 局限性


0. 摘要

最近文本到图像扩散模型的成功很大程度上归因于它们能够受复杂文本提示的引导,这使用户能够精确描述所需内容。然而,这些模型在有效抑制生成非预期内容方面存在困难,这些内容明确在提示中要求从生成的图像中省略。在本文中,我们分析了如何操作文本嵌入并从中去除不需要的内容。我们引入了两个贡献,我们称之为软加权正则化推理时文本嵌入优化。第一种方法对文本嵌入矩阵进行正则化,有效抑制不需要的内容。第二种方法旨在进一步抑制提示的不需要的内容生成,鼓励生成所需内容。我们在广泛的实验证明了我们方法的定量和定性有效性。此外,我们的方法具有对像素空间扩散模型(即 DeepFloyd-IF)和潜在空间扩散模型(即 Stable Diffusion)的泛化能力。

代码:https://github.com/sen-mao/SuppressEOT

2. 相关工作

基于扩散的语义擦除。目前的方法(Gandikota等人,2023年;Kumari等人,2023年;Zhang等人,2023年)已经注意到擦除的重要性,包括版权、艺术风格、裸露等的擦除。

  • ESD(Gandikota等人,2023年)利用负向引导来引导预训练模型的微调,旨在实现一个能够擦除特定风格或对象的模型。
  • (Kumari等人,2023年) 使用带有和不带有擦除项的两个提示对模型进行微调,以使模型分布与擦除提示相匹配。
  • Inst-Inpaint(Yildirim等人,2023年)是一个新颖的修复框架,它训练一个扩散模型,将源图像映射到包含条件文本提示的目标图像。

然而,这些工作都对 SD 模型进行微调,导致输入提示中意外抑制的灾难性忽略。在本文中,我们的目标是在不进一步训练或微调SD模型的情况下从输出图像中移除不需要的主题。  

3. 方法

我们的目标是抑制扩散模型中的负目标(negative target)生成。为实现这一目标,我们着重于操作文本嵌入,这本质上控制了主题的生成。简单地消除目标文本嵌入未能从输出中排除相应的对象(图 2a 的第二列和第三列)。我们进行了全面的分析,表明这种失败是由附加的 [EOT] 嵌入引起的(见第 3.2 节)。我们的方法包括两个主要步骤。

在第一步中,我们提出软加权正则化,大大减少了 [EOT] 嵌入中的负目标文本信息(第 3.3 节)。

在第二步中,我们应用推理时文本嵌入优化,该优化包括相对于两个损失优化整个文本嵌入(在第一步中处理)。

  • 第一个损失称为负目标提示抑制损失,旨在减弱负目标的注意力图,以引导整个文本嵌入的更新,从而进一步抑制负目标的主题生成。
  • 为了防止不希望的副作用,即输出中来自正目标的意外抑制(见附录D.图13的第三行),我们提出正目标提示保留损失。这加强了正目标的注意力图。

推理时文本嵌入优化在第 3.4 节中介绍。在第 3.1 节中,我们对 SD 模型进行了简要介绍,尽管我们的方法不限于特定的扩散模型。

3.1 扩散模型

3.2 [EOT] 嵌入的分析

文本编码器 Γ 将输入提示 p 映射到文本嵌入 c = Γ(p) ∈ R^(M×N)(即,M = 768,N = 77,在 SD 模型中)。这是通过在输入提示 p 之前添加一个开始文本(Start of Text,[SOT])符号,并在末尾附加 N-|p|-1 个结束文本(End of Text,[EOT])填充符号来实现的,总共得到 N 个符号。我们定义文本嵌入

下面,我们探讨 [EOT] 嵌入的几个方面。

[EOT] 嵌入包含哪些语义信息?我们观察到 [EOT] 嵌入携带重要的语义信息。例如,在使用提示 “a man without glasses” 请求图像时,SD 合成包括负目标 “glasses” 的主体(图 2a 的第一列)。当从文本嵌入 c 中清零 “glasses” 的标记嵌入时,SD 未能丢弃 “glasses”(图 2a 的第二和第三列)。类似地,将所有 [EOT] 嵌入清零仍会生成 “glasses” 主体(图 2a 的第四和第五列)。最后,当同时将 “glasses” 和 [EOT] 标记嵌入清零时,我们成功地从生成的图像中移除了 “glasses”(图 2a 的第六和第七列)。结果表明 [EOT] 嵌入包含有关输入提示的重要信息。请注意,简单地将它们清零通常会导致意外的变化(图 2a 的第七列)。

整个 [EOT] 嵌入包含多少信息?我们实验证明 [EOT] 嵌入具有低秩性质,表明它们包含冗余的语义信息(这一观察是基于我们对生成图像进行的统计实验的结果,样本量为100。平均 PSNR 为49.300,SSIM 为 0.992,平均 Rank(ˆΨ)=7.83)。

加权核范数最小化(weighted nuclear norm minimization,WNNM)(Gu等人,2014年)是一种有效的低秩分析方法。我们利用 WNNM 来分析 [EOT] 嵌入。具体而言,我们构建一个 [EOT] 嵌入矩阵

并执行 WNNM 如下

其中 Ψ = UΣV^T是 Ψ 的奇异值分解(SVD),Dw(Σ) 是带有加权向量 w 的广义软阈值运算符,即

奇异值 σ_0 ≥ · · · ≥ σ_(N−|p|−2),权重满足 0 ≤ w_0 ≤ · · · ≤ w_(N−|p|−2)。

为验证 [EOT] 嵌入的低秩特性,WNNM 主要保留 Σ 的前 K 个最大奇异值,将小奇异值清零,最后重构

我们使用 Rank( ˆΨ) 表示 ˆΨ 的秩。我们探讨了不同 Rank(ˆΨ) 值对生成的图像的影响。例如,如图 2b 所示,使用提示 “White and black long coated puppy”(此处 |p|=6),我们使用 PSNR 和SSIM 指标评估修改后的图像与 SD 模型的输出。设置 Rank(ˆΨ)=0,清零所有 [EOT] 嵌入,生成的图像保留了与使用所有 [EOT] 嵌入时相似的语义信息。随着 Rank(ˆΨ) 的增加,生成的图像越来越接近 SD 模型的输出。在视觉上,生成的图像看起来与 SD 模型的 Rank( ˆΨ)=4 时的图像相似。在图 2b(中)使用 Rank(ˆΨ)=9 时达到可接受的度量值(PSNR=40.288,SSIM=0.994)。结果表明 [EOT] 嵌入具有低秩特性,并包含冗余的语义信息。

对每个 [EOT] 嵌入的语义对齐。存在总共 76−|p| 个 [EOT] 嵌入。然而,我们发现各种 [EOT] 嵌入之间高度相关,它们通常包含输入提示的语义信息。这一现象在图 2c 中定性和定量地展示。例如,我们输入提示 “戴着眼镜和毛线帽的有胡须的男人穿着蓝色衬衫”。我们随机选择一个 [EOT] 嵌入替换输入文本嵌入(所选择的 [EOT] 嵌入被重复了 |p| 次),如图 2c(左)所示。生成的图像具有相似的语义信息(图 2c(右))。这个结论还可以通过每个 [EOT] 嵌入的距离(图 2c(中))来证明。大多数 [EOT] 嵌入之间的距离很小。总之,我们需要从 76−|p| 个 [EOT] 嵌入中去除负目标信息。

3.3 基于文本嵌入的语义抑制

我们的目标是在图像生成过程中抑制负目标信息。根据前面的分析,我们必须从 [EOT] 嵌入中消除负目标信息。为实现这一目标,我们引入了两种策略,我们称之为软加权正则化推理时文本嵌入优化。对于前者,我们设计了一个负目标嵌入矩阵,并提出了一种新方法来正则化负目标信息。推理时文本嵌入优化旨在进一步抑制目标提示的负目标生成,并鼓励正目标的生成。我们在图 3 中概述了这两种策略。

软加权正则化。我们建议使用奇异值分解(SVD)从文本嵌入中提取负目标信息(例如,眼镜)。令 c =

是来自 CLIP 文本编码器的文本嵌入。如图 3(左)所示,我们将嵌入

拆分为负目标嵌入集 c^NE 和正目标嵌入集 c^PE。因此,我们有

我们构建一个负目标嵌入矩阵 χ:

我们执行 SVD:χ = UΣV^T,其中 Σ = diag(σ0, σ1,· · ·,σ_n0),奇异值σ1 ≥ · · ·≥ σ_n0,n0=min(M,N−|p|−1)。直观地,负目标嵌入矩阵 χ 主要包含了期望被抑制的信息。执行 SVD 后,我们假设主奇异值对应于被抑制的信息(负目标)。然后,为了抑制负目标信息,我们为每个奇异值引入软加权正则化(启示细节解释见附录 B):

然后,我们恢复嵌入矩阵 ˆχ = UˆΣV^T,其中,

我们考虑一种特殊情况,即将前 K 或后 K 个奇异值置为 0。如图 4 所示,当将前 K(这里 K=2)个奇异值设置为 0 时,我们能够移除负目标提示(例如,眼镜或胡须)。当将后 K 个奇异值设置为 0 时(这里 K=70),负目标提示信息被保留。这支持我们的假设,即 χ 的主奇异值对应于负目标信息。

3.4 推理时文本嵌入优化

如图 3(右)所示,对于特定的时间步 t,在扩散过程 T → 1 期间,我们得到扩散网络的输出:ϵθ(~zt, t, c),以及相应的注意力图:

A^PE_t 对应于 c^PE,而 A^NE_t 对应于我们希望抑制的 c^NE。经过软加权正则化后,我们得到新的文本嵌入和注意力图

在这里,我们旨在进一步抑制负目标的生成,并鼓励正目标的信息。我们提出了两个注意力损失来规范注意力图,并修改文本嵌入 ˆc 以引导注意力图集中在与正目标提示对应的特定区域。我们引入了正目标提示保持损失:

也就是说,该损失试图在时间步 t 加强正目标提示的注意力图。为了进一步抑制负目标提示的生成,我们提出了负目标提示抑制损失:

完整目标。我们模型的完整目标函数是:

其中 λ_pl=1,λ_nl=0.5用于平衡保持和抑制的效果。我们使用这个损失来更新文本嵌入 ˆc。

对于真实图像编辑,我们首先利用文本嵌入 c 应用 Null-Text(Mokady等人,2022)将给定的真实图像反演为潜在表示。然后,我们使用所提出的软加权正则化来从 c 中抑制负目标信息,得到 ˆc。接下来,我们在推理过程中应用推理时文本嵌入优化来更新 ˆct,得到最终编辑后的图像。我们的完整算法在算法 1 中呈现。有关 SD 模型在没有参考真实图像的情况下生成负目标的更多详细信息,请参见附录 C。

4. 实验

5. 局限性

目前,测试时优化大约需要半分钟,使得提出的方法不适用于需要快速结果的应用程序。但是,我们相信通过专门的工程努力可以显著减少这个时间。 

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

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

相关文章

IIC--集成电路总线

目录 一、IIC基础知识 1、设计IIC电路的原因: 2、上拉电阻阻值怎么确定 3、IIC分类 4、IIC协议 二、单片机使用IIC读写数据 1、 IIC发送一个字节数据: 2、IIC读取一个字节数据: 一、IIC基础知识 1、设计IIC电路的原因: (…

【JavaEE】_Fiddler抓包HTTP请求与响应

目录 1. Fiddler简介 2. Fiddler安装步骤 3. 抓包结果举例(sogou.com) 1. Fiddler简介 1. 要查看HTTP的请求和响应,需要使用抓包工具进行抓包; 抓包即获取网卡上经过的数据并显示出来,常用的抓包工具有wireshark和…

Linux第57步_“linux系统镜像”和“根文件系统”重新打包小结

实时总结是很重要的,时间久了,可能会遗忘。下面是“linux系统镜像”和“根文件系统”重新打包小结。 1、linux系统镜像重新打包 在第1次完成linux系统镜像打包后,再重新打包就很容易了 将“bootfs”重新打包 准备打包文件: 输入“cd /ho…

专业140+总分400+华中科技大学824信号与系统考研经验华科华中大电子信息与通信工程,真题,大纲,参考书。

今年考研落下帷幕,看到有人落寞,有人金榜题名,心里体会五谷杂陈,自己很幸运通过努力上岸华科,初试专业课824信号与系统140,数一130,总分400,对于这个成绩稍微有点超出自己预期&#…

python-产品篇-游戏-象棋

文章目录 代码效果 代码 import pygame import time import constants from button import Button import pieces import computerclass MainGame():window NoneStart_X constants.Start_XStart_Y constants.Start_YLine_Span constants.Line_SpanMax_X Start_X 8 * Lin…

三种输入输出函数

目录 printf函数 scanf函数 getchar函数 putchar函数 gets函数 puts函数 printf函数 当你需要将数据或文本输出到屏幕或其他输出设备时,C语言提供了一个非常有用的函数,即 printf() 函数。它是标准库中定义的函数,用于格式化输出。 pr…

[力扣 Hot100]Day27 合并两个有序链表

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 出处 思路 简单题,两个指针就能解决。 代码 class Solution { public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if(!list1)…

蓝桥杯电子类单片机提升三——NE555

目录 单片机资源数据包_2023 一、NE555和定时器工作模式 1.NE555的介绍 2.定时器的计数模式 二、NE555频率读取代码的实现 1.定时器0初始化 2.通过读取TH0和TL0来读取频率 3.通过中断读取频率 三、完整代码演示 通过读取TH0和TL0来读取频率 main.c 通过中断读取频…

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding,本质上是多个Transformer的Encoder堆叠在一起。 其中单个Transformer Encoder结构如下: BERT-Base采用了12个Transformer Encoder。 BERT-large采用了24个Transformer Encoder。 2. BERT的…

【Algorithms 4】算法(第4版)学习笔记 08 - 3.1 符号表

文章目录 前言参考目录学习笔记1:API1.1:遵循的规则1.2:ST 用例举例1.2.1:行为测试用例1.2.2:性能测试用例2:基本实现2.1:无序链表处理2.2:初级ST实现小结2.3:有序数组的…

Python 异常处理及程序调试

Python 是一门功能强大而又易于学习的编程语言,它提供了丰富的工具和库来帮助开发者编写高效、稳定的程序。然而,在编写复杂的应用程序时,错误和异常是难以避免的。本文将介绍 Python 中的异常处理机制以及程序调试技巧,帮助读者提…

Linux--编译器-gcc/g++使用

目录 前言 1.看一段样例 2.程序的翻译过程 1.第一个阶段:预处理 2.第二个阶段:编译 3.第三个阶段:汇编 4.第四个阶段:链接 3.程序的编译为什么是这个样子? 4. 关于编译器 5.链接(动静态链接&#x…

Docker的常见命令以及命令别名

常见命令 命令说明docker pull拉取镜像docker push推送镜像到DockerRegistrydocker images查看本地镜像docker rmi删除本地镜像docker run创建并允许容器docker stop停止指定容器docker start启动指定容器docker restart重新启动容器docker rm删除指定容器docker ps查看容器do…

波奇学Linux:文件系统打开文件

从文件系统来看打开文件 计算机系统和磁盘交互的大小是4kb 物理内存的4kb,磁盘的4kb文件叫做页帧 磁盘数据块的以4kb为单位。 减少IO的次数,减少访问外设的次数--硬件 基于局部性的原理,预加载机制--软件 操作系统管理内存 操作系统对…

相机图像质量研究(19)常见问题总结:CMOS期间对成像的影响--Sensor Noise

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

2.13日学习打卡----初学RocketMQ(四)

2.13日学习打卡 目录: 2.13日学习打卡一.RocketMQ之Java ClassDefaultMQProducer类DefaultMQPushConsumer类Message类MessageExt类 二.RocketMQ 消费幂消费过程幂等消费速度慢的处理方式 三.RocketMQ 集群服务集群特点单master模式多master模式多master多Slave模式-…

使用Python生成二维码的完整指南

无边落木萧萧下,不如跟着可莉一起游~ 可莉将这篇博客收录在了:《Python》 可莉推荐的优质博主首页:Kevin ’ s blog 本文将介绍如何使用Python中的qrcode库来生成二维码。通过简单的代码示例和详细解释,读者将学习如何在Python中轻…

可变参数(c/c++)

目录 一、C语言版本 二、C的实现方法 2.1数据包 2.2sizeof...运算符 2.3可变参数模板的使用 2.4emplace_back() 有时候我们在编写函数时,可能不知道要传入的参数个数,类型 。比如我们要实现一个叠加函数,再比如c语言中的printf,c中的emp…

QObject 的拷贝构造和赋值操作

QObject中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域。因此所有继承自QObject的类都使用这个宏声明了他们的拷贝构造函数和赋值操作符为私有。 …

算法沉淀——BFS 解决 FloodFill 算法(leetcode真题剖析)

算法沉淀——BFS 解决 FloodFill 算法 01.图像渲染02.岛屿数量03.岛屿的最大面积04.被围绕的区域 BFS(广度优先搜索)解决 Flood Fill 算法的基本思想是通过从起始点开始,逐层向外扩展,访问所有与起始点相连且具有相同特性&#xf…