当前位置: 首页 > news >正文

Prompt-to-Prompt Image Editing with Cross Attention Control

Prompt-to-Prompt Image Editing with Cross Attention Control (P2P)

Amir Hertz, Tel Aviv University, ICLR23, Paper, Code

1. 前言

编辑对这些生成模型来说是具有挑战性的,因为编辑技术的一个固有特性是保留大部分原始图像,而在基于文本的模型中,即使对文本提示进行微小修改,也往往会导致完全不同的结果。现有技术的方法通过要求用户提供空间掩模来定位编辑,从而忽略掩模区域内的原始结构和内容来减轻这种情况。在本文中,我们追求一个直观的示编辑框架,其中编辑仅由文本控制。为此,我们深入分析了一个文本条件模型,并观察到交叉注意力层是控制图像空间布局与提示中每个单词之间关系的关键。根据这一观察结果,我们提出了几个仅通过编辑文本提示来监控图像合成的应用程序。这包括通过替换单词进行本地化编辑,通过添加规范进行全局编辑,甚至精细地控制单词在图像中的反映程度。我们在不同的图像和提示上展示了我们的结果,展示了高质量的合成和对编辑提示的逼真度。

2. 整体思想

通常U-Net结构用Cross-Attention接入文本,再细致一点是Q来自扩散模型,K和V来自文本Prompt。在Cross-Attention中,细微的语义改变可能对采样有很大影响。本文希望固定背景和布局的语义,细微调整特定文字的语义。换句话说,本文微调Cross- Attention中的注意力图达到控制的目的。但是本文仅从Prompt出发,无法像Mask方法保证背景完全一致性,但从效果来看还是很好的。是值得细读的一篇文章。

3. 方法

I I I是由文本引导的扩散模型使用文本提示 P P P和随机种子 s s s生成的图像。我们的目标是编辑仅由编辑提示 P ∗ P^* P引导的输入图像,从而生成编辑图像 I ∗ I^* I。如果我们想固定种子,消除随机性,然后通过改变文本来进行编辑,就会出现以下问题。
在这里插入图片描述

可以看到原始图片的结构和背景都被替换。本文的观察来自于交叉注意力的注意力图,这也是融合文本的地方。通过下图可以看到,如果固定了注意力图,那么的确可以达到较好的可编辑性。

在这里插入图片描述

注意力图在Cross-Attention中可以表示为:
M = s o f t m a x ( Q K T d ) M = softmax(\frac{QK^T}{\sqrt{d}}) M=softmax(d QKT)
其中, M i , j M_{i,j} Mi,j定义像素 i i i上的第 j j j个令牌的值的权重,并且其中 d d d是Keys和Queries的潜在投影维度。直观地说,交叉注意力输出 M V M V MV是值 V V V的加权平均值,其中权重是与 Q Q Q K K K之间的相似性相关的注意力图 M M M。在实践中,为了提高它们的表现力,并行使用多头注意力,然后将结果连接起来并通过学习的线性层来获得最终输出。

我们回到我们的关键观察点——生成图像的空间布局和几何结构取决于交叉注意力图。像素和文本之间的这种交互如下图所示,其中绘制了平均注意力图。可以看出,像素更容易被描述它们的单词所吸引,例如,熊的像素与单词“熊”相关。请注意,进行平均是为了可视化,在我们的方法中,每个头部的注意力图都是分开的。有趣的是,我们可以看到,图像的结构已经在扩散过程的早期步骤中确定。

在这里插入图片描述

D M ( z t , P , t , s ) DM(z_t,P,t,s) DM(zt,P,t,s)是扩散过程的单个步骤 t t t的计算,其输出噪声图像 z t − 1 z_{t−1} zt1和注意力图 M t M_t Mt(如果不使用则省略)。我们用 D M ( z t , P , t , s ) { M ← o ~ M } DM(z_t,P,t,s)\{M←õM\} DM(zt,P,t,s){Mo~M}表示扩散步骤,在该步骤中,我们用额外的给定映射 M ^ \hat M M^覆盖注意力映射 M M M,但保持所提供提示的值 V V V。我们还用 M t ∗ M^*_t Mt表示使用编辑提示 P ∗ P^* P生成的注意力图。最后,我们将 E d i t ( M t , M t ∗ , t ) Edit(M_t,M^*_t,t) Edit(MtMtt)定义为一个通用的编辑函数,在原始图像和编辑图像的生成过程中接收它们的第 t t t个注意力图作为输入。

我们用于受控图像生成的通用算法包括同时对两个提示执行迭代扩散过程,其中根据所需的编辑任务在每个步骤中应用基于注意力的操作。我们注意到,为了使上述方法发挥作用,我们必须修复内部随机性。这是由于扩散模型的性质,即使对于相同的提示,两个随机种子也会产生截然不同的输出。形式上,我们的通用算法是:

在这里插入图片描述

这里其实就是把你想编辑的 P ∗ P^* P产生的注意力图替换或者修改原来 P P P的注意力图。图和替换或修改如下:

  1. 单词交换。例如, P P P="a big red bicycle"到 P ∗ P^* P=“a big red car”。主要的挑战是在处理新提示的内容的同时保留原始组成为此,我们将源图像的注意力图注入到具有修改提示的生成中。然而,所提出的注意力注入可能会过度约束几何结构,尤其是当涉及大型结构修改时,如“汽车”到“自行车”。我们通过建议更温和的注意力约束来解决这一问题:

E d i t ( M t , M t ∗ , t ) : = { M t ∗ if  t < τ M t otherwise  Edit\left(M_{t}, M_{t}^{*}, t\right):=\left\{\begin{array}{ll} M_{t}^{*} & \text { if } t<\tau \\ M_{t} & \text { otherwise } \end{array}\right. Edit(Mt,Mt,t):={MtMt if t<τ otherwise 

  1. 添加新短语。例如, P P P="a castle next to a river"到 P ∗ P^∗ P =“children drawing of a castle next to a river”。为了保留共同的细节,我们只对来自两个提示的共同标记应用注意力注入。形式上,我们使用对齐函数A,该函数从目标提示 P ∗ P^* P接收令牌索引,并在不匹配的情况下输出相应的令牌索引inP或None。然后,编辑功能由下式给出:

( E d i t ( M t , M t ∗ , t ) ) i , j : = { ( M t ∗ ) i , j if  A ( j ) = N o n e ( M t ) i , A ( j ) otherwise  (Edit\left(M_{t}, M_{t}^{*}, t\right))_{i,j}:=\left\{\begin{array}{ll} (M_{t}^{*})_{i,j} & \text { if } A(j)=None \\ (M_{t})_{i,A(j)} & \text { otherwise } \end{array}\right. (Edit(Mt,Mt,t))i,j:={(Mt)i,j(Mt)i,A(j) if A(j)=None otherwise 

  1. 注意力重新加权。例如,考虑提示 P P P=“一个蓬松的红色球”,并假设我们想使球或多或少蓬松。为了实现这种操作,我们用参数 c ∈ [ − 2 , 2 ] c∈[−2,2] c[22]缩放指定标记 j ∗ j^* j的注意力图,从而产生更强/更弱的效果。其余的注意力图保持不变。即:

( E d i t ( M t , M t ∗ , t ) ) i , j : = { c ( M t ) i , j if  j = j ∗ ( M t ) i , A ( j ) otherwise  (Edit\left(M_{t}, M_{t}^{*}, t\right))_{i,j}:=\left\{\begin{array}{ll} c(M_{t})_{i,j} & \text { if } j=j^* \\ (M_{t})_{i,A(j)} & \text { otherwise } \end{array}\right. (Edit(Mt,Mt,t))i,j:={c(Mt)i,j(Mt)i,A(j) if j=j otherwise 在这里插入图片描述

4. 实验

在这里插入图片描述

上图是通过不同数量的扩散步骤注入注意力。在顶部,我们显示源图像和提示。在每一行中,我们通过替换文本中的单个单词并注入源图像的交叉注意力图来修改图像的内容,该图的范围从0%(左侧)到100%(右侧)的扩散步骤。请注意,一方面,如果没有我们的方法,就不能保证保留任何源图像内容。另一方面,在所有扩散步骤中注入交叉注意力可能会过度约束几何结构,导致对文本提示的保真度较低,例如,汽车(第三排)变成了具有完全交叉注意力注入的自行车。

更多结果如下:


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


相关文章:

Prompt-to-Prompt Image Editing with Cross Attention Control

Prompt-to-Prompt Image Editing with Cross Attention Control (P2P) Amir Hertz, Tel Aviv University, ICLR23, Paper, Code 1. 前言 编辑对这些生成模型来说是具有挑战性的&#xff0c;因为编辑技术的一个固有特性是保留大部分原始图像&#xff0c;而在基于文本的模型中…...

实验11 OSPF协议配置

实验11 OSPF协议配置 一、OSPF单区域配置&#xff08;一&#xff09;原理描述&#xff08;二&#xff09;实验目的&#xff08;三&#xff09;实验内容&#xff08;四&#xff09;实验配置&#xff08;五&#xff09;实验步骤 二、OSPF多区域配置&#xff08;一&#xff09;原理…...

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个&#xff0c;一个是腾讯元宝&#xff0c;一个是通义千问。其它的豆包&#xff0c;Kimi&#xff0c;文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…...

node.js学习

node.js学习实操及笔记 温故node.js&#xff0c;node.js学习实操过程及笔记~ node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记 为什么学node.js 可以让别人访问我们编写的网页为后续的框架学习打下基础&#xff0c;三大框架vue react angular离不开node.js …...

python将一个图片雕刻镂空成二维码

本文使用创作助手。 要将一个图片雕刻镂空成二维码&#xff0c;你可以使用Python中的Pillow库来处理图像&#xff0c;并使用qrcode库来生成二维码。以下是一个示例代码&#xff0c;用于将图片雕刻镂空成二维码&#xff1a; import qrcode from PIL import Image# 打开待处理的…...

OS进程取样器OS Process Sampler执行CMD/Shell命令

Apache JMeter - Users Manual: Component Reference 1.背景 项目上最近需要测试一种很少用到的DICOM协议,但是网上资料很少,基本上可以总结为三种方案: 直接发送TCP 16进制数据包,但是参数化数据准备难度大通过开发封装jar包发送,需要开发组提供通过发送cmd命令给前置机…...

excel两个数据表格,怎样实现筛选的联动?

如图&#xff0c;想要通过处理器或者像素条件进行筛选&#xff0c;形成一个右边图2的对比表&#xff0c;如何实现实现联动显示呢&#xff1f; 这个在excel里可以借用数据透视表切片器来完成。步骤如下&#xff1a; 1.添加表 选中数据区域中任意一个单元格&#xff0c;点击 插…...

python,django好的get和post请求

获得get请求 df request.GET.get("dades")获得post请求 文件settings.py关闭csrf MIDDLEWARE [ ‘django.middleware.security.SecurityMiddleware’, ‘django.contrib.sessions.middleware.SessionMiddleware’, ‘django.middleware.common.CommonMiddleware’…...

volatile的用法

目录 前言 使用volatile的注意事项&#xff1a; 示例&#xff1a; 总结&#xff1a; 前言 在嵌入式C编程中&#xff0c;volatile是一个关键字&#xff0c;它用于告知编译器被修饰的变量可能会在程序的任何地方、任何时候被不可预见的、非程序本身控制的因素所改变。这通常…...

MySQL 与 PostgreSQL 关键对比二(SQL语法)

目录 1 详细示例 1.1自动增量列 1.2 字符串连接 1.3 JSON 支持 2 总结 MySQL 和 PostgreSQL 是两种流行的开源关系数据库管理系统&#xff08;RDBMS&#xff09;。尽管它们在许多方面相似&#xff0c;但在 SQL 语法和功能上存在一些显著差异。 以下SQL语句的执行如果需要开…...

徐州服务器租用该如何维护?

服务器能够帮助企业处理网络上大部分的数据和信息&#xff0c;在互联网行业中起着十分重要的作用&#xff0c;服务器的存在能够保障网站稳定的运行&#xff0c;主要是由内存、硬盘和处理器等组成&#xff0c;服务器除了进行正常的工作运行&#xff0c;还需要定期维护和管理&…...

C++习题精选(4)—— 栈

目录 1. 最小栈2. 栈的压入弹出序列3. 逆波兰表达式求值 1. 最小栈 题目描述&#xff1a;设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素…...

Web前端ES6-ES13笔记合集(下)

#### 五.ES10新特性 ##### 1. Object.fromEntries > Object.fromEntries()方法允许你轻松地将键值对列表转换为对象 js const arr [["name", "kerwin"], ["age", 100]]; console.log(Object.fromEntries(arr))//{name: kerwin, age: 100} …...

我要成为算法高手-双指针篇

目录 什么是双指针?问题1&#xff1a;移动零问题2&#xff1a;复写零问题3&#xff1a;快乐数问题4&#xff1a;盛最多水的容器问题5&#xff1a;有效三角形个数问题6&#xff1a;查找总价格和为目标值的两个商品(两数之和)问题7&#xff1a;三数之和问题8&#xff1a;四数之和…...

Fake news detection: A survey of graph neural network methods

abstract 各种社交网络的出现产生了大量的数据。捕获、区分和过滤真假新闻的有效方法变得越来越重要&#xff0c;特别是在 COVID-19 大流行爆发之后。本研究对假新闻检测系统的图神经网络 (GNN) 的现状和挑战进行了多方面、系统的回顾&#xff0c;并概述了使用 GNN 实现假新闻…...

HCIE认证,这些误区要避开

追求HCIE认证是许多网络工程师提升职业水平的选择之一。 然而&#xff0c;在这条备考之路上&#xff0c;存在不少误解可能会误导你的学习方向或影响你的备考效率。 了解并避开这些常见误区&#xff0c;将帮助你更有效地准备HCIE认证考试。 01 误区一&#xff1a;过分依赖题库 …...

主题切换之CSS文件篇

动态加载CSS: 利用HTML的标签&#xff0c;可以通过JavaScript动态改变其href属性来加载不同的CSS文件。这意味着我们可以在运行时切换整个页面的样式表&#xff0c;从而实现主题的变化。 分离样式: 将不同主题的样式分别放在不同的CSS文件中。例如&#xff0c;default_styles.…...

Vue进阶(八十八)前端测试工具介绍

文章目录 一、前言1.1 引入1.2 基础语法1.2.1 全局函数 describe 和 it1.2.2 断言 expect1.2.3 匹配器1.2.4 snapshot 快照1.2.5 测试用例覆盖率报告1.2.6 React Testing Library render1.2.7 screen1.2.8 查询函数1.2.9 waitFor1.2.10 fireEvent 和 userEvent 二、Jest 基本用…...

【录制,纯正人声】OBS录制软件,音频电流音,杂音解决办法,录制有噪声的解决办法

速度解决的方法 &#xff08;1&#xff09;用RNNoise去除噪声。RNNoise是一个开源的&#xff0c;效果不好的噪声去除器。使用方法就是点击滤镜&#xff0c;然后加噪声抑制RNNoise。【这方法不好用】 &#xff08;2&#xff09;用Krisp(https://krisp.ai/) 去除噪声。这个Kris…...

Django中drf动态过滤查询

Django中drf动态过滤查询 1、page.py 代码: from rest_framework.pagination import PageNumberPaginationclass UserPagination(PageNumberPagination):"""用户分页器"""page_size = 10 # 默认的页面数据数量page_query_param = page # 定…...

GTSAM | gtsam::PriorFactor

文章目录 概述一、定义介绍二、功能作用三、主要内容四、实例演示概述 本节介绍了GTSAM中的gtsam::PriorFactor类。 一、定义介绍 gtsam::PriorFactor 是 GTSAM(Graph-based Trajectory and Mapping)库中的一个类,用于定义先验因子。在因子图优化中,先验因子用于将一些变量…...

MMSegmentation改进:增加Kappa系数评价指数

将mmseg\evaluation\metrics\iou_metric.py文件中的内容替换成以下内容即可&#xff1a; 支持输出单类Kappa系数和平均Kappa系数。 使用方法&#xff1a;将dataset的config文件中&#xff1a;val_evaluator 添加mKappa&#xff0c;如 val_evaluator dict(typemmseg.IoUMetri…...

专栏【汇总】

专栏【汇总】 前言版权推荐专栏【汇总】付费 汇总置顶在读在学我的面试计算机重要课程java面试Java基础数据存储Java框架java提高计算机科学与技术课程算法杂项 最后 前言 2024-5-12 21:13:02 以下内容源自《【专栏】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此…...

成功解决IndexError: index 0 is out of bounds for axis 1 with size 0

成功解决IndexError: index 0 is out of bounds for axis 1 with size 0 &#x1f6e0;️ 成功解决IndexError: index 0 is out of bounds for axis 1 with size 0摘要引言正文内容&#xff08;详细介绍&#xff09;&#x1f914; 错误分析&#xff1a;为什么会发生IndexError&…...

C# MES通信从入门到精通(11)——C#如何使用Json字符串

前言 我们在开发上位机软件的过程中&#xff0c;经常需要和Mes系统进行数据交互&#xff0c;并且最常用的数据格式是Json&#xff0c;本文就是详细介绍Json格式的类型&#xff0c;以及我们在与mes系统进行交互时如何组织Json数据。 1、在C#中如何调用Json 在C#中调用Json相关…...

ON DUPLICATE KEY UPDATE 子句

ON DUPLICATE KEY UPDATE 是 MySQL 中的一个 SQL 语句中的子句&#xff0c;主要用于在执行 INSERT 操作时处理可能出现的重复键值冲突。当尝试插入的记录导致唯一索引或主键约束冲突时&#xff08;即试图插入的记录的键值已经存在于表中&#xff09;&#xff0c;此子句会触发一…...

perl use HTTP::Server::Simple 轻量级 http server

cpan -i HTTP::Server::Simple 返回&#xff1a;已是 up to date. 但是我在 D:\Strawberry\perl\site\lib\ 找不到 HTTP\Server 手工安装&#xff1a;下载 HTTP-Server-Simple-0.52.tar.gz 解压 tar zxvf HTTP-Server-Simple-0.52.tar.gz cd D:\perl\HTTP-Server-Simple-…...

【STM32】基于I2C协议的OLED显示(利用U82G库)

【STM32】基于I2C协议的OLED显示(利用U82G库) 文章目录 【STM32】基于I2C协议的OLED显示(利用U82G库)一、实验背景二、U8g2介绍&#xff08;一&#xff09;获取&#xff08;二&#xff09;简介 三、实践&#xff08;一&#xff09;CubexMX配置&#xff08;二&#xff09;U8g2配…...

掌握Python3输入输出:轻松实现用户交互、日志记录与数据处理

Python 是一门简洁且强大的编程语言&#xff0c;广泛应用于各个领域。在 Python 编程中&#xff0c;输入和输出是基本而重要的操作。无论是进行用户交互、记录日志信息&#xff0c;还是将计算结果输出到控制台或文件&#xff0c;掌握这些操作都是编写高效 Python 程序的关键。本…...

用于每个平台的最佳WordPress LMS主题

你已选择在 WordPress 上构建学习管理系统 (LMS)了。恭喜&#xff01; 你甚至可能已经选择了要使用的 LMS 插件&#xff0c;这已经是成功的一半了。 现在是时候弄清楚哪个 WordPress LMS 主题要与你的插件配对。 我将解释 LMS 主题和插件之间的区别&#xff0c;以便你了解要…...

南通网站推广公司哪家好/网页搜索优化

快毕业了&#xff0c;把自己写的现成的matlab函数分享给有需要的人&#xff0c;由于个人水平有限&#xff0c;写的不好请见谅&#xff0c;愿意拍砖的尽管拍好了。目前还不考虑读博&#xff0c;所以写的程序仍了可惜&#xff0c;所以就拿出来分享。好了不废话了&#xff0c;开始…...

网站首页关键词/seo外推软件

2019独角兽企业重金招聘Python工程师标准>>> 有 1000 个一模一样的瓶子&#xff0c;其中有 999 瓶是普通的水&#xff0c;其中有一瓶含有剧毒&#xff08;稀释后仍然具有毒性&#xff09;&#xff0c;你只有 10 条小白鼠&#xff0c;它们在喝下毒药后会马上死去&…...

solusvm做网站/中国建设网官方网站

动态SQL数据层框架&#xff08;0&#xff09;&#xff1a;一个基于FreeMarker和DBUtils的动态SQL框架动态SQL数据层框架&#xff08;1&#xff09;&#xff1a;DBUtils框架基础动态SQL数据层框架&#xff08;2&#xff09;&#xff1a;框架结构动态SQL数据层框架&#xff08;3&…...

网站建设型网站横幅(banner)图片/线上推广软件

目录 前言原文外貌描述身体与器官卫生健康身体不适身体检查情境常用单词外貌描述身体与器官卫生健康身体不适身体检查前言 加油 原文 外貌描述 1.appearance [əˈpɪrəns] n. 外貌 in appearance 外观上,外貌上 Do not judge people by their appearance. 别以貌取人…...

wordpress版本要求/免费行情网站

文章目录 1.1 摘要的写作基础1.2 样式1.3 什么时候写?1.4 研究亮点,图形摘要二、关键字1.1 摘要的写作基础 摘要总是印在论文的开头附近,通常紧接在标题、作者和地址之后。有人会说,这是论文中最重要的部分,因为 这是大多数人都会读的部分,即使是那些最终不会读整篇文章的…...

网站建设卖点/淘宝关键词排名查询网站

使用OBYC后&#xff0c;进入并选择会计科目表&#xff0c;添加新的科目类型。 转载于:https://www.cnblogs.com/huggins/archive/2009/03/02/1401515.html...