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

news/2024/4/15 8:33:26

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.ppmy.cn/news/1328101.html

相关文章

conda国内加速

1、配置国内源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ 2、显示源地址 conda config --set show_channel_urls yes

VS里那些实用的调试(debug)技巧

前言——————希望现在在努力的各位都能感动以后享受成功的自己! 首先我们要来了解什么是bug——————bug本意是“昆虫”或“虫子”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或 问题,简称程序漏洞。 “…

python装饰器扩展类方法和元类管理实例

1 python装饰器扩展类方法和元类管理实例 在class语句的末尾,类装饰器把类名重绑定的一个可调用对象; 在class语句的末尾,元类把类对象的创建指定到type的子类; 类装饰器可以管理类对象和类实例; 元类比较适合管理…

【笔记】Helm-3 主题-8 Helm架构

Helm架构 本文从较高的层次描述Helm的体系结构。 Helm的目标 Helm管理名为chart的Kubernetes包的工具。Helm可以做以下的事情: 1、从头开始创建新的chart 2、将chart打包成归档(tgz)文件 3、与存储chart的仓库进行交互 4、在现有的Kuber…

08. Springboot集成webmagic实现网页爬虫

目录 1、前言 2、WebMagic 3、Springboot集成Webmagic 3.1、创建Springboot,并引入webmagic依赖 3.2、定义PageProcessor 3.3、元素选择 3.3.1、F12查看网页元素 3.3.2、元素选择 3.3.3、注意事项 4、小结 1、前言 在信息化的时代,网络爬虫已…

FaFu--练习复盘--2

3、函数练习 3.1、函数表达式(1) 描述 根据以下公式计算数学表达式的值,并将结果作为函数值返回。在main()函数中输入x,调用函数fun(x),并输出fun(x)的值。 输入 输入1行,包含1个double类型的浮点数&…

腾讯云对接华为离线推送遇到的问题

一、首先是华为开发者中的处理 https://developer.huawei.com/consumer/cn/console/service/AppService 1、点击AppGallery Connect 2、点击我的项目 3、未添加应用前 这里有个小坑,未添加应用前是没有腾讯云说的agconnect-services.json文件的,这里浪…

《GreenPlum系列》GreenPlum初级教程-06GreenPlum函数

文章目录 第六章 函数1.函数介绍2.单行函数2.1 算术运算符2.2 数值函数2.3 字符串函数2.4 时间函数2.5 流程控制函数 3.行列转换函数3.1 行转列函数3.2 列转行函数 4.窗口函数4.1 概述4.2 常用窗口函数 5.其他函数 第六章 函数 1.函数介绍 GreenPlum会将常用的逻辑封装成函数…

【深度挖掘RocketMQ底层源码】「底层系列」深度挖掘RocketMQ的Broker配置介绍及发送流程、异常(XX Busy)问题分析

[TOC](深度挖掘RocketMQ的Broker配置介绍及发送流程、异常(XX Busy)问题分析这里写目录标题) 参考资料 Rocketmq官网:http://rocketmq.apache.org/ Rocketmq的其它项目:https://github.com/apache/rocketmq-externals Rocketmq-console安装&#xff1…

快速傅立叶变换FFT学习笔记

什么是FFT? FFT(Fast Fourier Transformation) 是离散傅氏变换(DFT)的快速算法,即快速傅氏变换。FFT使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多&#x…

CSV文件中json列的处理2

如上所示,csv文件中包含以中括号{}包含的json字段,可用如下方法提取: import pandas as pd from datetime import date todaystr(date.today()) import jsonfilepath/Users/kangyongqing/Documents/kangyq/202401/调课功能使用统计/ file104…

谷歌浏览器通过network模拟HTTP中的GET/POST请求获取response

1、F12打开network选中需要模拟的方法Copy->Copy as fetch 2、通过AI帮你进行转换一下调用格式 原代码 fetch("https://mp.amap.com/api/forward/aggregate?mtop.alsc.kbt.intergration.toolkit.call.queryCallBlockInfo", {"headers": {"acce…

JS-元素尺寸与位置

通过js的方式,得到元素在页面中的位置 获取宽高 元素.offsetWidth 元素.offsetHeight 1)获取元素的自身宽高、包括元素自身设置的宽高paddingborder 2)获取出来的是数值,方便计算 3)注意:获取的是可视…

Swift抓取某网站律师内容并做排名筛选

有个很要好的朋友,今天找我说他的朋友欠他钱,因为工程上面的事情,所以一直没拿到款。想让我找个靠谱的律师帮他打官司,因为这个也不是我的强项,也没有这方面的经验。随即从律师网站爬取对应律师口碑以及成功案例&#…

Android学习之路(23)组件化框架ARouter的使用

一、功能介绍 支持直接解析标准URL进行跳转,并自动注入参数到目标页面中支持多模块工程使用支持添加多个拦截器,自定义拦截顺序支持依赖注入,可单独作为依赖注入框架使用支持InstantRun支持MultiDex(Google方案)映射关系按组分类、多级管理&…

【JavaEE】CAS

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

mysql 自动生成随机数

在MySQL中,生成随机数可以使用RAND()函数。以下是一些基本用法: 1. **生成0到1之间的随机浮点数**: sql SELECT RAND(); 2. **生成指定范围内的随机整数**(例如,生成1到100之间的随机整数)&…

c++ http第一个服务

c http第一个服务 一、下载相关依赖&#xff1a;这是一个git开源项目 代码仓地址 二、演示代码&#xff0c;编译参数&#xff1a;g test.cpp -I/**** -lpthread #include <httplib.h> using namespace httplib;void wuhan(const Request &req, Response &res) …

[go] 状态模式

状态模式 允许对象在内部状态改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。 模型说明 上下文 &#xff08;Context&#xff09; 保存了对于一个具体状态对象的引用&#xff0c; 并会将所有与该状态相关的工作委派给它。 上下文通过状态接口与状态对象交互&…

【MIdjourney】一些材质相关的关键词

1.多维剪纸(Multidimensional papercut) "Multidimensional papercut"&#xff08;多维剪纸&#xff09;是一种剪纸艺术形式&#xff0c;通过多层次的剪纸技巧和设计来创造出立体感和深度感。这种艺术形式通常涉及在不同的纸层上剪裁不同的图案&#xff0c;并将它们…
最新文章