Prompt-To-Prompt——仅通过文本进行图像编辑

2023-09-18 16:01:50


论文: 《Prompt-to-Prompt Image Editing with Cross Attention Control》
github: https://github.com/google/prompt-to-prompt

1.摘要

文生图到图像编辑充满挑战,图像编辑需要保留原始图片大部分信息,而对于文生图,只要prompt稍微更改将导致生成完全不同图像。当前SOTA方法用户需要提供编辑位置的mask,忽略mask区域内容。作者探究一种仅通过文本进行编辑的框架,对此对条件文本模型进行深入探究,发现cross-attention层控制图像空间布局与prompt中每个word之间的相关性。作者通过仅编辑纹理prompt进行图像生成,包括:替换单词进行局部编辑、增加明细进行全局编辑、甚至精细化控制哪个单词映射到图像中哪部分。

2.算法

对于依据文本 p r o m p t P prompt P promptP生成图像 I I I,通过编辑的 p r o m p t P ∗ prompt P^* promptP,生成编辑后图像 I ∗ I^* I
作者发现生成图像的结构与外观不仅依赖于随机种子还依赖于像素及文本embedding之间交互。注入输入图 I I I的cross-attention层使得保留原始构图和结构,整体结构如图3所示。
在这里插入图片描述

2.1 Cross-attention in text-conditioned Diffusion Models

噪声图经过映射得到查询矩阵 Q Q Q p r o m p t prompt prompt分别经过映射得到 K 、 V K、V KV a t t e n t i o n m a p M attention map M attentionmapM计算如式1,cross-attention输出为 M V MV MV,用于更新空间特征 ϕ ( z t ) \phi(z_t) ϕ(zt)
在这里插入图片描述

2.2 Controlling the Cross-attention

像素与文本交互如图4,第一行展示每个单词的attention mask,第二行展示随着扩散过程,attention map变化。我们发现在扩散早期阶段图像结构已经确定。
在这里插入图片描述
由于attention映射整体架构,因此可将原始 p r o m p t prompt prompt生成过程的 a t t e n t i o n m a p M attention map M attentionmapM引入更改后 p r o m p t P ∗ prompt P^* promptP二次生成过程,这使得生成图不仅与编辑 p r o m p t prompt prompt一致,同时保留原始输入图I的结构。
作者定义扩散过程DM,输出图像 z t − 1 z_{t-1} zt1 a t t e n t i o n m a p M t attention map M_t attentionmapMt,使用编辑 p r o m p t P ∗ prompt P^* promptP生成 a t t e n t i o n m a p M t ∗ attention map M_t^* attentionmapMt,作者定义 E d i t ( M t , M t ∗ , t ) Edit(M_t,M_t^*,t) Edit(MtMtt)用于重写 a t t e n t i o n m a p M attention map M attentionmapM。为减少编辑过程随机性,作者固定随机种子,Prompt-to-Prompt图像编辑算法如算法1所示,
在这里插入图片描述
E d i t ( M t , M t ∗ , t ) Edit(M_t,M_t^*,t) Edit(MtMtt)如图3底部,

Word Swap

用户将原始prompt中个别词替换。该问题挑战为保存原始结构同时与新prompt内容一致,将原图attention map直接引入可能会过于限制几何形状。因此作者提出softer attention限制,如下式, τ \tau τ为时间戳,
在这里插入图片描述
在前期使用原始图片 a t t e n t i o n m a p M t attention map M_t attentionmapMt,后期使用新 p r o m p t P ∗ prompt P^* promptP生成图像的 a t t e n t i o n m a p M t ∗ attention map M_t^* attentionmapMt

Adding a New Phrase

此情况表示用户在prompt中增加新的token。为保留共同细节,作者仅将attention注入共同token,使用对齐功能A,对于目标 p r o m p t P ∗ prompt P^* promptPtoken index输出 P P P中对应token index,编辑功能如下式,
在这里插入图片描述

Attention Re–weighting

此情况适用于用户希望加强或削弱某个token对生成图影响。对此作者通过参数 c ∈ [ − 2 , 2 ] c \in [−2, 2] c[2,2]将token j对应attention map放大,如下式,
在这里插入图片描述

3.应用

Text-Only Localized Editing

图2上展示通过引入原始prompt的attention map可保留物体结构,同时背景区域得到还不错保留。
在这里插入图片描述
图5展示attention map仅作用于特定词“butterfly",能够很好保留前景,同时背景区域变化。
在这里插入图片描述
图6展示本方法不仅可更改纹理,同时可更改结构。最佳结果不是整个扩散过程引入attention map。
在这里插入图片描述
图7上展示目标增加修饰词情况,保留背景同时生成图与新增词一致。
在这里插入图片描述

Global editing

图7下及图8展示保留原始目标位置及特性的同时,对全局进行编辑。
在这里插入图片描述

Fader Control using Attention Re-weighting

图9展示通过增加或降低特定词权重所产生影响。
在这里插入图片描述

Real Image Editing

编辑真实图像需要找到初始噪声,通过扩散过程可生成输入图。常规方法是对输入图添加高斯噪声,进行扩散,但容易导致失真,因此作者使用一种改进的反向方法,如图10,可生成满意效果;
在这里插入图片描述
如图11,许多情况反向过程不够准确。这归因于乱序与编辑的均衡,降低prompt权重提升重建能力,但限制编辑能力。
在这里插入图片描述
因此作者使用mask仅对无编辑区域进行重构。如图12
在这里插入图片描述

4.结论

作者揭示了文生图扩散模型中cross-attention层强大能力。作者展示通过操纵prompt可进行本地或全局编辑。
限制:
1、当前反向过程导致在一些测试集出现失真;
2、attention map为低分辨率,这限制了进行精确本地化编辑的能力;作者建议在高分辨率增加cross-attention层。
3、当前方法不能对图中物体进行空间移动。

更多推荐

项目性能优化 - 并发编程合并文章详情页的 HTTP 请求次数

目录1.原始文章详情页2.为什么要使用并发编程升级文章详情页3.如何使用并发编程升级文章详情页3.1配置线程池3.2合并前端请求3.3合并后端接口,使用多线程并发执行4.项目相关链接1.原始文章详情页【前端代码】<scripttype="text/javascript">varaid=getURLParam("id")

利用大模型&知识图谱技术,告别繁重文案,实现非结构化数据高效管理

我,作为一名产品经理,对文案工作可以说是又爱又恨,爱的是文档作为嘴替,可以事事展开揉碎讲清道明;恨的是只有一个脑子一双手,想一边澄清需求一边推广宣传一边发布版本一边申报认证实在是分身乏术!脑细胞有多少也不够用了…不管你是什么行业的职场人,在编写文案的路上,谁没经历过追热点、搜素材、求资料、拉框架、添创意、写主体、改措辞

Python 爬虫实战之爬淘宝商品并做数据分析

前言是这样的,之前接了一个金主的单子,他想在淘宝开个小鱼零食的网店,想对目前这个市场上的商品做一些分析,本来手动去做统计和分析也是可以的,这些信息都是对外展示的,只是手动比较麻烦,所以想托我去帮个忙。一、项目要求:具体的要求如下:1.在淘宝搜索“小鱼零食”,想知道前10页搜索结果的所有商品的销量和金额,按照他划定好的价

java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理工程项目各模块及其功能点清单一、系统管理1、数据字典:实现对数据字典标签的增删改查操作2、编码管理:实现对系统编码的增删改查操作3、用户管理:管理和查看用户角

高云FPGA系列教程(10):letter-shell移植

文章目录letter-shell简介letter-shell源码获取letter-shell移植函数和变量应用示例本文是高云FPGA系列教程的第10篇文章。shell,中文是外壳的意思,就是操作系统的外壳。通过shell命令可以操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,

OpenCV(四十五):ORB特征点

1.特征点的组成特征点由关键点和描述子两部分组成:关键点是在图像中检测到的具有显著变化的位置坐标。描述子是用于表示关键点周围局部区域特征的向量或特征向量。2.ORB特征点原理ORB特征点由关键点FAST角点和描述子BRIEF组成。2.1提取FAST角点的算法FAST算法的思想:通过比较像素相对于中心像素有较大差别(过亮

flutter聊天界面-TextField输入框buildTextSpan实现@功能展示高亮功能

flutter聊天界面-TextField输入框buildTextSpan实现@功能展示高亮功能最近有位朋友讨论的时候,提到了输入框的高亮展示。在flutterTextField中需要插入特殊样式的标签,比如:“请@张三回答一下”,这一串字符在TextField中输入,当输入@时弹出好友列表选择,然后将“@张三”高亮显

用Vite从零到一创建React+ts项目

方式一:使用create-react-app命令创建项目1、使用以下命令初始化一个空的npm项目npminit-y2、输入以下命令安装Reactnpmicreate-react-appps:如果失败的话尝试(1:使用管理员身份执行命令(2:切换镜像重试3、输入以下命令创建项目create-react-app项目文件夹名

flask 插件 Flask-RESTful

1、安装pipinstallflask-restful2、使用HelloWorld一个简单的例子:#-*-coding:utf-8-*-fromflaskimportFlaskfromflask_restfulimportResource,Apiapp=Flask(__name__)api=Api(app)classH

解决react使用redux toolkits时出现的数组对象长度始终为0的怪异问题

有个react项目在添加购物车后,立马白屏,看一下console报错propertiesofundefined(readinglength)那意思是说数组没有长度,然后定位Header.tsx的182行,果然是数组长度报错回到具体代码中:发现shoppingCartItems实际是通过reduxToolkit(RTK)

大模型从入门到应用——LangChain:代理(Agents)-[工具(Tools):人工确认工具验证和Tools作为OpenAI函数]

分类目录:《大模型从入门到应用》总目录LangChain系列文章:基础知识快速入门安装与环境配置链(Chains)、代理(Agent:)和记忆(Memory)快速开发聊天模型模型(Models)基础知识大型语言模型(LLMs)基础知识LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(HumanInpu

热文推荐