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;

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

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

相关文章

微信小程序开发系列-01创建一个最小的小程序项目

本文讲述了通过微信开发者工具&#xff0c;创建一个新的小程序项目&#xff0c;完全从零开始&#xff0c;不依赖开发者工具的模板。目的是为了更好的理解小程序工程项目的构成。 文章目录 创建一个空项目app.json全局配置pagessitemapLocation app.js 创建一个空项目 打开微信…

新型智慧视频监控系统:基于TSINGSEE青犀边缘计算AI视频识别技术的应用

边缘计算AI智能识别技术在视频监控领域的应用有很多。这项技术结合了边缘计算和人工智能技术&#xff0c;通过在摄像头或网关设备上运行AI算法&#xff0c;可以在现场实时处理和分析视频数据&#xff0c;从而实现智能识别和分析。目前来说&#xff0c;边缘计算AI视频智能技术可…

aws-waf-cdn 基于规则组的永黑解决方案

1. 新建waf 规则组 2. 为规则组添加规则 根据需求创建不同的规则 3. waf中附加规则组 &#xff08;此时规则组所有规则都会附加到waf中&#xff0c;但是不会永黑&#xff09; 此刻&#xff0c;可以选择测试下规则是否生效&#xff0c;测试前确认保护资源绑定无误 4. 创建堆…

02 - Kbuild子系统(整理中)

1. Kbuild简介 Kernel build&#xff0c;用来编译 Linux 内核基于 GNU make 设计&#xff0c;对 Makefile 进行扩充 菜单式配置&#xff1a;Kconfig预定义目标和变量&#xff1a;xx_defconfig、menuconfig、obj-y跨平台工具、递归式 Makefile Linux 模块化设计、高度可以裁剪 …

java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈

单点登录&#xff08;SSO&#xff09; 单点登录&#xff0c;Single Sign On&#xff08;简称SSO&#xff09;,只需要登录一次&#xff0c;就可以访问所有信任的应用系统。 如果是单个tomcat服务&#xff0c;session可以共享&#xff0c;如果是多个tomcat&#xff0c;那么服务s…

tcp 的限制 (TCP_WRAPPERS)

#江南的江 #每日鸡汤&#xff1a;青春是打开了就合不上的书&#xff0c;人生是踏上了就回不了头的路&#xff0c;爱情是扔出了就收不回的赌注。 #初心和目标&#xff1a;拿到高级网络工程师 TCP_WRAPPERs Tcp_wrappers 对于七层模型中是位于第四层的安全工具&#xff0c;他…

微信小程序 动态设置状态栏样式

onLoad(options) {//修改状态栏标题wx.setNavigationBarTitle({title: 页面标题, //页面标题success: () > {}, //接口调用成功的回调函数fail: () > {}, //接口调用失败的回调函数complete: () > {} //接口调用结束的回调函数&#xff08;调用成功、失败…

[CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]

文章目录 前言小结 原文地址&#xff1a;https://blog.csdn.net/qq_45752541/article/details/132854115 前言 mesh 和点是最常见的3D场景表示&#xff0c;因为它们是显式的&#xff0c;非常适合于快速的基于GPU/CUDA的栅格化。相比之下&#xff0c;最近的神经辐射场&#xf…

从0开始学Git指令

从0开始学Git指令 因为网上的git文章优劣难评&#xff0c;大部分没有实操展示&#xff0c;所以打算自己从头整理一份完整的git实战教程&#xff0c;希望对大家能够起到帮助&#xff01; 初始化一个Git仓库&#xff0c;使用git init命令。 添加文件到Git仓库&#xff0c;分两步…

智能优化算法应用:基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

数据库学习日常案例20231221-oracle libray cache lock分析

1 问题概述&#xff1a; 阻塞的源头为两个ddl操作导致大量的libray cache lock 其中1133为gis sde的create table as语句。 其中697为alter index语句。

案例125:基于微信小程序的个人健康数据管理系统的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

龙蜥开源操作系统能解决CentOS 停服造成的空缺吗?

龙蜥开源操作系统能解决CentOS 停服造成的空缺吗&#xff1f; 本文图片来源于龙蜥&#xff0c;仅做介绍时引用用途&#xff0c;版权归属龙蜥和相关设计人员。 一、《国产服务器操作系统发展报告&#xff08;2023&#xff09;》称操作系统已步入 2.0 时代&#xff0c;服务器操作…

MacOS+Homebrew+iTerm2+oh my zsh+powerlevel10k美化教程

MacOS终端 你是否已厌倦了MacOS终端的大黑屏&#xff1f; 你是否对这种美观的终端抱有兴趣&#xff1f; 那么&#xff0c;接下来我将会教你用最简单的方式来搭建一套自己的终端。 Homebrew的安装 官网地址&#xff1a;Homebrew — The Missing Package Manager for macOS (o…

Hbase的安装配置

注&#xff1a;本文默认已经完成hadoop的下载以及环境配置 1.上传zookeeper和hbase压缩包到指令路径并且解压 (理论上讲&#xff0c;hbase其实内置了zookeeper&#xff0c;我们也可以不另外下载&#xff0c;另外下载的目的在于减少组件间依赖性) cd /home mkir hbase cd /hom…

泽攸科技SEM台式扫描电子显微镜

泽攸科技是一家国产的科学仪器公司&#xff0c;专注于研发、生产和销售原位电镜解决方案、扫描电镜整机、台阶仪、探针台等仪器。目前台式扫描电镜分为三个系列&#xff1a;ZEM15、ZEM18、ZEM20。 ZEM15台式扫描电镜&#xff1a; ZEM18台式扫描电镜&#xff1a; ZEM20台式扫描…

WeakMap 和 WeakSet:解决内存泄漏避免循环引用(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Debian在升级过程中报错

当我们在升级的过程中出现如下报错信息 报错信息如下所示&#xff1a; The following signatures couldnt be verified because the public key is not available: NO_PUBKEY ED444FF07D8D0BF6 W: GPG error: http://mirrors.jevincanders.net/kali kali-rolling InRelease: …

版本化数据库管理工具Flyway介绍和Spring Boot集成使用

文章目录 核心功能如何使用 Flyway最佳实践Spring Boot使用 Flyway 是一个版本化数据库管理工具&#xff0c;用于跟踪、管理和应用数据库的变化。它非常适合在团队开发环境中使用&#xff0c;其中多个人员可能会在数据库结构进行更改。Flyway 通过版本控制可以帮助你确保所有人…

用户管理第2节课-idea 2023.2 后端一删除表,从零开始---【本人】

一、清空model文件夹下&#xff0c;所有文件 1.1.1效果如下&#xff1a; 1.1代码内容 package com.daisy.usercenter.model;import lombok.Data;Data public class User {private Long id;private String name;private Integer age;private String email; }二、清空mapper文件…