(2024,小波变换,空文本反演,负提示反演)基于扩散的图像编辑中文本反演的小波引导加速

Wavelet-Guided Acceleration of Text Inversion in Diffusion-Based Image Editing

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

目录

0. 摘要

2. 初步分析

2.1. 空文本优化分析

2.2. 频率分析

3. 方法

3.1 模型架构

3.2. 损失函数

4. 实验


0. 摘要

在图像编辑领域,空文本反演 (Null-text Inversion,NTI) 能够在 DDIM 采样过程中优化空嵌入,实现细粒度编辑同时保留原始图像的结构。然而,NTI 过程耗时较长,每张图像超过两分钟。为解决这个问题,我们引入了一种创新方法,该方法在加速图像编辑过程的同时保持了 NTI 的原则。我们提出了 WaveOpt-Estimator,它基于频率特征确定文本优化的端点。通过利用小波变换分析来识别图像的频率特征,我们可以在 DDIM 采样过程的特定时间步限制文本优化。通过采用负提示反演 (Negative-Prompt Inversion,NPI) 的概念,表示原始图像的目标提示作为优化的初始文本值。这种方法在保持与 NTI 可比的性能的同时,相对于 NTI 方法将平均编辑时间减少了 80% 以上。我们的方法为基于扩散模型的高效、高质量的图像编辑提供了一种有前景的途径。

2. 初步分析

2.1. 空文本优化分析

在本节中,我们研究了不是在所有时间步上都进行 Null-Text Inversion (NTI) ,而是仅在特定的时间步上进行时对性能的影响。为了铺平我们分析的基础,我们首先介绍了与基本 DDIM 反演过程和空文本优化相关的一些术语。让 x_ori 代表原始图像。我们用 T 表示 DDIM 反演和采样的总时间步数。 

在进行图像编辑时,原始图像 x_ori 经过编码器 E 转变为潜在变量 z_0(1),并与表示原始图像的源提示 p_src 一起用于 DDIM 反演过程,生成带噪声的潜在变量 z_T(2)。然后,UNet 接收 z_T、源提示 p_src、编辑提示 p_edit 以及预优化的空文本嵌入值 {ϕ_t}^T_(t=1) 进行去噪,生成一个修改后的潜在变量 ˆz_0,该变量保留了原始图像的特征并融入了由 p_edit 指定的修改(3)。修改后的 ˆz_0 然后经过解码器 D 生成图像,将原始结构与预期的编辑结合在一起(4)。 

我们引入了概念 {ϕ^copy_t}^T_(t=1)(6),这是通过在特定时间步 t* 之前应用 NTI 并随后复制最后一个空文本 ϕ_(t*) 扩展剩余时间步数达到 T 而获得的一系列空文本嵌入向量(5)。 

将潜在变量 ˆz*_0(7)通过解码器 D,得到的重构图像被标记为 x^(t*)_recon(8)。在这里,用于生成 x^(t*)_recon 的潜在变量 ˆz*_0 是通过使用 {ϕ^copy_t}^T_(t=1) 进行 DDIM 采样得到的,其中 NPI 仅包含到特定的时间步 t*。在实践中,我们将 T 设置为 50,并对 t* 进行实验,范围从 0 到 T,以步长为 5 递增。在不同 t* 下获得的 x^(t*)_recon 集合被标记为 X_recon(9),可在图 1 中观察到。为了评估重构的 x^(t*)_recon 与原始图像 x_ori 之间的相似性,使用 PSNR 指标,结果显示在图 2 中。发现随着时间步的推移,每个图像的 PSNR 值收敛方式不同,并且在某个时间步之后,PSNR 的增益变得较小。

例如,在图 2 中,自行车图像在第 25 个时间步达到了 24.9 的 PSNR 值,占其在第 50 个时间步的 PSNR 值(25.65)的 97.4%。另一方面,咖啡图像在第 35 个时间步达到了 33.7 的 PSNR 值,占其在第 50 个时间步的 PSNR 值(34.36)的 97.1%。在这种情况下,特定时间步 t* 的 PSNR 与第 50 个时间步 T 的 PSNR 之比被定义为 PSNR 比率。

经验上观察到,当 PSNR 比率超过 0.9 时,原始图像与重构图像之间的差异可以忽略不计。我们将时间步 t* 定义为 PSNR 比率首次超过 0.9 的端点。本研究假设端点由独特的图像特征决定,从而成为下一节进一步研究的动机。 

2.2. 频率分析

为了探索基于图像固有特性的 PSNR 比率收敛速度,我们使用离散小波变换(Discrete
Wavelet Transform,DWT)。DWT 将图像 x 分解为频率子带 x_LL、x_LH、x_HL、x_HH,使用一组低通和高通滤波器。为了更精确地分析高频组分,我们计算了 x_LH、x_HL 和 x_HH 子带的平均值,得到 x_SUM。此外,我们使用自适应直方图均衡化增强 x_SUM,以突显高频细节。我们将重点放在 x_LL、x_SUM 子带上进行分析,并计算它们的能量,即信号的平方(10-11)。

这些结果在图 3 和表 1 中呈现,其中 t* 表示端点。

实验结果显示,具有显著高频成分的图像往往在 x_LL 中表现出较低的能量,在 x_SUM 中表现出较高的能量。相反,富含低频成分的图像在 x_LL 中表现出较高的能量,在 x_SUM 中表现出较低的能量。值得注意的是,我们发现在 x_LL 中能量较低且在 x_SUM 中能量较高的图像往往在 DDIM 采样的较低时间步骤下达到端点 t*。这一观察表明,UNet 的 DDIM 采样需要更多时间来形成低频元素,而形成高频元素相对较快,从而影响图像重建的速度。这一发现表明图像的频率组分影响了在 DDIM 采样期间的收敛速度以及文本优化所需的时间。

3. 方法

在第 2 节中提出的分析中,观察到图像固有频率组分与端点 t* 之间存在依赖关系。受到这些发现的启发,我们提出了 WaveOpt-Estimator,这是一个基于图像频率特征估计端点 t* 的模型。利用预测的端点 t*,生成 {ϕ^copy_t}^T_(t=1),与在 NTI 中在所有时间步上执行优化相比,显著减少了优化所需的时间。此外,我们不再使用空文本作为初始值,而是利用 NPI 的优势将初始文本值设置为描述原始图像的目标提示。

3.1 模型架构

WaveOpt-Estimator 包括用于处理原始图像和小波子带的编码器,以及交叉注意力和自注意力模块。通过离散小波变换(DWT),x_ori 被分解成 x_LL、x_SUM 子带。随后,通过图像编码器 E_I(13)对 x_ori 进行编码,通过小波编码器 E_WL 和 E_WS(14)分别对 x_LL 和 x_SUM 进行编码。ResNet-50 用于图像和小波编码器。这些编码特征被串联起来形成统一的视觉特征 f_visual(15)。 

为了训练视觉特征和 DDIM 潜在变量之间的多模态关系,采用了交叉注意力。在交叉注意力模块中,视觉特征 f_visual 充当查询(Query),而在 DDIM 反演过程中存储的 z_t 同时充当键(Key)和值(Value)。对于给定的输入图像 x_ori,z_t 在 t = 0 到 t = t* 共存在 t* 次。在视觉特征和 z_t 之间进行交叉注意力(CA)后,得到的 Q* 作为后续自注意力的输入。经过两次自注意力后,输出张量经过一个全连接层进行回归。回归值表示从当前时间步 t 到终点 t* 的持续时间,即应该限制优化的时间。 

3.2. 损失函数

WaveOpt-Estimator 的设计目标是使用原始图像 x_ori、其频率组分 x_LL 和 x_SUM 以及 DDIM 潜在变量 z_t 来预测端点 t*。为实现这一目标,在预测的端点 t*_pred 和实际端点 t*_gt 之间应用 L2 损失(16)。此外,基于 PSNR 的铰链损失在 x_ori 和从 z_t 派生的图像之间使用(17)。我们定义 PSNR_t 为 x_ori 和从 z_t 重建的图像之间的 PSNR,而 PSNR*_t 为从端点 z_t 重建的图像的 PSNR。该损失捕捉了特定时间步 t 和端点 t* 之间 PSNR 的差异。通过对这两个损失项应用权重因子 α1 和 α2 进行实验(18),并将两个因子都设定为 0.5。 

4. 实验

 

 

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

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

相关文章

数据结构之树和二叉树定义

数据结构之树和二叉树定义 1、树的定义2、树的基本概念3、二叉树的定义 数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以…

Web03--CSS进阶

1、CSS常用属性 1.1 文本字体相关属性设置 样式名 描述 text-align 设置内容位置 text-decoration 控制下划线 none没有 underline有 line-hight 行高 font-size 设置字体大小 font-weight 设置字体粗细的 font-famliy 设置字体样式 letter-spacing 设置中文字…

【Python代码】以线性模型为例,详解深度学习算法流程,包括数据生成、定义模型、损失函数、优化算法和训练

**使用带有噪声的线性模型构造数据集,并根据有限的数据恢复该线性模型的参数。**其中包括数据集构造、模型参数初始化、损失函数定义、定义优化算法和训练等过程。是大多数算法实现过程的一个缩影,理解此过程有助于在开发或改进算法时更深刻了解其算法的…

寒假每日一题-公路

小苞准备开着车沿着公路自驾。公路上一共有 n个站点,编号为从 1 到 n。其中站点 i与站点 i1 的距离为 vi公里。 公路上每个站点都可以加油,编号为 i的站点一升油的价格为 ai元,且每个站点只出售整数升的油。 小苞想从站点 1开车到站点 n&am…

golang学习笔记——http.Handle和http.HandleFunc的区别与type func巧妙运用

文章目录 http.Handle和http.HandleFunc的区别http.Handle分析type func巧妙运用 http.HandleFunc分析总结参考资料 http.Handle和http.HandleFunc的区别 http.Handle和http.HandleFunc的区别体现了Go语言接口的巧妙运用 下面代码启动了一个 http 服务器,监听 808…

基于python的数字识别-含数据集和代码

数据集介绍,下载本资源后,界面如下: 有一个文件夹一个是存放数据集的文件。 数据集介绍: 一共含有:16个类别,包含:division, eight, five, four, left_bracket, minus, multiplication, nine, one, plus, right_brac…

逻辑回归中的损失函数

一、引言 逻辑回归中的损失函数通常采用的是交叉熵损失函数(cross-entropy loss function)。在逻辑回归中,我们通常使用sigmoid函数将线性模型的输出转换为概率值,然后将这些概率值与实际标签进行比较,从而计算损失。 …

《Windows核心编程》若干知识点应用实战分享

目录 1、进程的虚拟内存分区与小于0x10000的小地址内存区 1.1、进程的虚拟内存分区 1.2、小于0x10000的小地址内存区 2、保存线程上下文的CONTEXT结构体 3、从汇编代码角度去理解多线程运行过程的典型实例 4、调用TerminateThread强制结束线程会导致线程中的资源没有释放…

多人在线聊天交友工具,匿名聊天室网站源码,附带搭建教程

源码介绍 匿名聊天室(nodejs vue) 多人在线聊天交友工具,无需注册即可畅所欲言!你也可以放心讲述自己的故事,说出自己的秘密,因为谁也不知道对方是谁。 运行说明 安装依赖项:npm install 启动…

Web server failed to start.Port xxxx was already in use.

目录 一、报错截图:二、解决方式 一、报错截图: 某端口被占用,导致出现如下报错: 二、解决方式 windowsR 输入cmd—>回车 如下图所示 查看被占用的端口的进程,如下图: netstat -ano |findstr 端口号结束这个进程…

【大模型研究】(1):从零开始部署书生·浦语2-20B大模型,使用fastchat和webui部署测试,autodl申请2张显卡,占用显存40G可以运行

1,演示视频 https://www.bilibili.com/video/BV1pT4y1h7Af/ 【大模型研究】(1):从零开始部署书生浦语2-20B大模型,使用fastchat和webui部署测试,autodl申请2张显卡,占用显存40G可以运行 2&…

WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试)

接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程。 2 数据驱动与jmeter接口测试 我们已经简单介绍了接口测试参数录入及测试执行的过程&#xff0…

C++——数组、多维数组、简单排序、模板类vector

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

数据结构实验7:查找的应用

目录 一、实验目的 二、实验原理 1. 顺序查找 2. 折半查找 3. 二叉树查找 三、实验内容 实验一 任务 代码 截图 实验2 任务 代码 截图 一、实验目的 1.掌握查找的基本概念; 2.掌握并实现以下查找算法:顺序查找、折半查找、二叉树查找。 …

Python正则表达式Regular Expression初探

目录 Regular 匹配规则 单字符匹配 数量匹配 边界匹配 分组匹配 贪婪与懒惰 原版说明 特殊字符 转义序列 模块方法 函数说明 匹配模式 常用匹配规则 1. 匹配出所有整数 2. 匹配11位且13开头的整数 Regular Python的re模块提供了完整的正则表达式功能。正则表达式…

Win10升级Win11后卡顿了?

目录 关闭动画效果 任务栏居中改为居左 调整外观和性能 其他 当你看到最后,还知道哪些升级WIN11后必做的优化呢?欢迎在评论区分享出来!❤️ win11上市目前也有一段时间了,想必很多大家都已经进行更新了。新的系统确实更加简洁…

安规电容的知识

1、常见安规电容有哪些? 一般我们所说的安规电容也就有两种,一种就是X安规电容(X1/X2/X3安规电容),还有一种是Y电容(最常见的是Y1和Y2安规电容)。 2、x电容的位置 火线零线间的是X电容。x电容用…

Git将某个文件合并到指定分支

企业开发中&#xff0c;经常会单独拉分支去做自己的需求开发&#xff0c;但是某些时候一些公共的配置我们需要从主线pull&#xff0c;这时候整个分支merge显然不合适 1.切换至待合并文件的分支 git checkout <branch>2.将目标分支的单个文件合并到当前分支 git checkou…

力扣刷MySQL-第三弹(详细讲解)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

JVM中的垃圾收集算法

标记-清除算法 首先标记出所有需要回收的对象&#xff0c;在标记完成后&#xff0c;统一回收掉所有被标记的对象&#xff0c;也可以反过来&#xff0c;标记存活的对象&#xff0c;统一回收所有未被标记的对象。标记过程就是对象是否属于垃圾的判定过程 缺点 第一个是执行效率…