Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术

2023-12-24 01:15

本文主要是介绍Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hertz A, Mokady R, Tenenbaum J, et al. Prompt-to-prompt image editing with cross attention control[J]. arXiv preprint arXiv:2208.01626, 2022.

Prompt-to-Prompt 是 Google 提出的一种全新的图像编辑方法,不同于任何传统方法需要用户指定编辑区域,Prompt-to-Prompt 只需要用户对 prompt 文本进行编辑,就能获得图像编辑的直观体验。并且 Prompt-to-Prompt 基于预训练的 Latent Diffusion 或 Stable Diffusion,不需要任何训练或微调,可以直接拿来做编辑任务。

Prompt-to-Prompt 所做的任务是根据编辑指令进行图像编辑,保证了编辑不对图像产生大的变动。具体方法是通过在 diffusion 模型的扩散过程中注入 cross-attention maps,来控制 pixels 在扩散过程中关注 prompt 文本的 tokens,从而编辑图像。Cross-attention 层是联系图像空间布局、几何形状和 prompt 文本中 tokens 的关键,这也是本文的一个重要创新。

目录

  • 一. 研究思路
  • 二. Cross-Attention 控制
    • 1. Replacement
    • 2. Refinement
    • 3. Re-weight
  • 三. 编辑图像生成
    • 1. Replacement
    • 2. Refinement
    • 3. Re-weight
  • 四. 应用
  • 五. 总结
  • 六. 复现

一. 研究思路

在图像编辑方法出来之前,想要修改图像都是通过 ⌈ \lceil 遮盖 + 修改 ⌋ \rfloor 的方法进行的,这种局部修改方法比较慢,而且遮盖还会丢失关键信息。但要想直接对图像进行编辑,又有一个相当棘手的问题,就是任何输入文本的微小变动都可能使模型生成的图像发生巨大的改变,而图像编辑需要尽可能保持原有图像。

于是文中提出了一种 Prompt-to-Prompt 方法,使用基于文本的预训练 diffusion 模型,通过调整模型生成图像过程中的 cross-attention maps,从而保证在尽可能保持原有图像的空间布局和几何外观的情况下实现图像编辑。

Prompt-to-Prompt 主要适用于以下三种任务:

  • Word Swap:替换文本中的某个单词,也称为 Replacement;
  • Adding a New Phrase:增加一段新的描述以改变图像风格或增加图像细节,也称为 Refinement;
  • Attention Re–weighting:增强或减弱某个单词(一般是形容词)在图像中的作用效果,也称为 Re-weight;

在这里插入图片描述

Our approach constitutes an intuitive image editing interface through editing only the textual prompt, therefore called Prompt-to-Prompt. This method enables various editing tasks, which are challenging otherwise, and does not requires model training, fine-tuning, extra data, or optimization. Throughout our analysis, we discover even more control over the generation process, recognizing a trade-off between the fidelity to the edited prompt and the source image. We even demonstrate that our method can be applied to real images
by using an existing inversion process. Our experiments and numerous results show that our method enables seamless editing in an intuitive text-based manner over extremely diverse images.

二. Cross-Attention 控制

cross-attention 层是控制图像空间布局 (spatial layout) 和 prompt 中分词 (token) 关系的关键,高维张量 cross-attention maps 可以在 pixels 和 tokens 间建立连接。以 text-conditioned diffusion 的一次图像生成过程为例,pixels 和 tokens 间的联系如下:
在这里插入图片描述

所以 Prompt-to-Prompt 通过在扩散过程向预训练模型中注入特定的 cross-attention maps,能够使得一些 pixels 去匹配对应的 tokens。为了维持原始图像的空间布局与几何形状,可以在生成编辑图像的过程中向 cross-attention maps 中注入原始图像的特定 cross-attention maps。

在这里插入图片描述

1. Replacement

当想要替换文本中的某个单词时,用原始图像的 cross-attention maps M t M_t Mt 替换目标图像的 cross-attention maps M t ∗ M_t^* Mt,这样就可以在维持原始图像空间布局的情况下表示新的语义。

2. Refinement

当想要增加描述时,就将原始文本中没有改变的 token 对应的 M t M_t Mt 部分注入 M t ∗ M_t^* Mt,这样就可以在维持原始图像空间布局的情况下编辑图像细节或风格。

3. Re-weight

当想要增强或减弱某个单词在图像中的作用效果时,只需要调整 cross-attention maps 中 token 对应部分的权重即可。

三. 编辑图像生成

Prompt-to-Prompt 使用基于文本的预训练 diffusion 模型,通过调整模型生成图像过程中的 cross-attention maps,以实现图像编辑。所以 Prompt-to-Prompt 不需要对模型进行训练或微调,也不需要任何训练数据,用户只需要编辑 prompt 文本,就可以直观得体验图像编辑。

记原始图像为 I \mathcal I I,原始 prompt 文本为 P \mathcal P P,编辑后图像为 I ∗ \mathcal I^* I,编辑后 prompt 文本为 P ∗ \mathcal P^* P,随机种子为 s s s D M ( z t , P , t , s ) DM(z_t, \mathcal P, t,s) DM(zt,P,t,s) 表示 t t t 时刻的逆扩散过程,输出隐空间的噪声图像 z t − 1 z_{t-1} zt1 和 cross-attention map M t M_t Mt D M ( z t , P , t , s ) { M ← M ^ } DM(z_t, \mathcal P, t,s)\{M \leftarrow \widehat M\} DM(zt,P,t,s){MM } 表示替换该步骤中的 M M M M ^ \widehat M M E d i t ( M t , M t ∗ , t ) Edit(M_t, M_t^*, t) Edit(Mt,Mt,t) 表示 t t t 时刻的 cross-attention map 是 M t M_t Mt M t ∗ M_t^* Mt

生成编辑图像时,同时使用 diffusion 模型分别对 P \mathcal P P P ∗ \mathcal P^* P 进行图像生成,然后将 P \mathcal P P 生成图像过程中的 M t M_t Mt 注入 M t ∗ M_t^* Mt 得到新的 cross-attention map M ^ \widehat M M ,最后再用 M ^ \widehat M M 生成新的 z t − 1 ∗ z_{t-1}^* zt1 用于下一轮迭代:
在这里插入图片描述

1. Replacement

之前忽略了一个问题就是用原始图像的 M t M_t Mt 替换目标图像的 M t ∗ M_t^* Mt 必须有所节制,不然会导致 prompt 中新加的 token 语义无法显现。因此在扩散过程中设置时间节点 τ \tau τ τ \tau τ 之前按 M t ∗ M_t^* Mt 生成编辑图像,之后再注入 M t M_t Mt,因此有:
E d i t ( M t , M t ∗ , t ) = { M t ∗ t < τ M t o t h e r w i s e Edit(M_t, M_t^*, t)= \begin{cases} M_t^* & t<\tau \\ M_t & otherwise \\ \end{cases} Edit(Mt,Mt,t)={MtMtt<τotherwise

个人认为这里应该倒过来写,因为逆扩散时 t t t 的取值是从大到小的。

因此图像的生成过程应该是一开始只表示编辑后的语义但没能维持原有图像的空间布局和几何状态,后来逐渐收敛到原有图像的形状:
在这里插入图片描述

2. Refinement

增加一段新的描述时只需要对 P \mathcal P P P ∗ \mathcal P^* P 中共有的 token 进行 cross-attention map 注入。使用对齐函数 A A A 输入 P ∗ \mathcal P^* P 中 token 的索引,输出对应 P \mathcal P P 中 token 的索引;如果没有对应则输出 None。因此有:
( E d i t ( M t , M t ∗ , t ) ) i , j = { ( M t ∗ ) i , j A ( j ) = N o n e ( M t ) i , A ( j ) o t h e r w i s e (Edit(M_t, M_t^*, t))_{i,j}= \begin{cases} (M_t^*)_{i,j} & A(j)=None \\ (M_t)_{i,A(j)} & otherwise \\ \end{cases} (Edit(Mt,Mt,t))i,j={(Mt)i,j(Mt)i,A(j)A(j)=Noneotherwise

Adding a New Phrase 可以增加图像细节或是改变风格:
在这里插入图片描述

3. Re-weight

要想增强或减弱某个单词在图像中的作用效果,只需要给该 token 对应的 cross-attention map 乘上参数 c ∈ [ − 2 , 2 ] c \in [-2,2] c[2,2],其余 token 的 cross-attention map 保持不变。因此有:
( E d i t ( M t , M t ∗ , t ) ) i , j = { c ⋅ ( M t ) i , j j = j ∗ ( M t ) i , j o t h e r w i s e (Edit(M_t, M_t^*, t))_{i,j}= \begin{cases} c \cdot (M_t)_{i,j} & j=j^* \\ (M_t)_{i,j} & otherwise \\ \end{cases} (Edit(Mt,Mt,t))i,j={c(Mt)i,j(Mt)i,jj=jotherwise

Attention Re–weighting 可以控制 prompt 中某些形容词的作用效果:
在这里插入图片描述

四. 应用

见 【AIGC第六篇】Prompt-to-Prompt:基于cross-attention控制的图像编辑技术。

五. 总结

Prompt-to-Prompt 最主要的贡献就是发现了 text-conditioned diffusion 模型中 cross-attention 的强大功能,能够控制图像的空间布局和 prompt 文本中每个 token 之间的交互。通过 cross-attention maps 注入,Prompt-to-Prompt 提出了三种编辑方法:Replacement、Refinement、Re-weight,在实际应用中都实现了令人满意的效果。

六. 复现

Prompt-to-Prompt 基于 Latent Diffusion 或 Stable Diffusion,使用时需要提供 HuggingFace 访问私有模型的身份验证令牌,demo 如下:

  • prompt-to-prompt_stable.ipynb;
  • prompt-to-prompt_ldm.ipynb;

这篇关于Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/530096

相关文章

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of