浅析扩散模型与图像生成【应用篇】(七)——Prompt-to-Prpmpt

7. Prompt-to-Prompt Image Editing with Cross Attention Control

  本文提出一种利用交叉注意力机制实现文本驱动的图像编辑方法,可以对生成图像中的对象进行替换,整体改变图像的风格,或改变某个词对生成图像的影响程度,如下图所示。
在这里插入图片描述
  之前的文本驱动的图像生成方法很难对图像的内容进行精细地编辑,哪怕只改变了一点文本提示的内容都可能让生成的结果发生非常大的改变,而无法保留原有的内容和结构。为了保留图像整体的结构,只对特定目标进行修改,有些方法通过让使用者给出要修改对象的掩码,引导算法只针对掩码的内容进行修改。但这种方式不仅非常麻烦,而且无法对整体风格进行编辑。因此作者希望提出一种只需修改文本提示内容,就可以直接编辑生成图像,且保持原本生成结果的内容和结构特征。
  作者发现在交叉注意力层建立了文本提示和图像像素之间的联系,通过在生成过程中插入或者修改交叉注意力层就可以实现对对应像素点的修改。实现的过程如下
在这里插入图片描述

  首先,我们先回顾一下文本驱动的图像生成过程中,交叉注意力层是如何工作的。包含噪声的图像 z t z_t zt其对应的特征图 ϕ ( z t ) \phi(z_t) ϕ(zt),经过一个线性层映射为一个query矩阵 Q = ℓ Q ( ϕ ( z t ) ) Q=\ell_{Q}(\phi(z_t)) Q=Q(ϕ(zt)),而文本提示 P \mathcal{P} P的特征向量 ψ ( P ) \psi(\mathcal{P}) ψ(P)被分别映射为key和value矩阵, K = ℓ K ( ψ ( P ) ) K =\ell_K(\psi(\mathcal{P})) K=K(ψ(P)) V = ℓ V ( ψ ( P ) ) V =\ell_V(\psi(\mathcal{P})) V=V(ψ(P))。则注意力图为 M = Softmax ⁡ ( Q K T d ) M=\operatorname{Softmax}\left(\frac{Q K^{T}}{\sqrt{d}}\right) M=Softmax(d QKT)其中的元素 M i j M_{ij} Mij表示第 j j j个token对于第 i i i个像素的权重值。交叉注意力层的输出为 ϕ ^ ( z t ) = M V \hat{\phi}(z_t)=MV ϕ^(zt)=MV,其被用于更新 ϕ ( z t ) \phi(z_t) ϕ(zt)。注意力层中每个单词和图像像素之间的对应关系如下图所示,可见即便在生成过程的早期阶段,单词和对应的像素之间已经具备较为明确的匹配关系。因此通过修改交叉注意力层就能够针对性的改变生成图像的内容。
在这里插入图片描述

  假设原本的文本提示 P \mathcal{P} P生成的图像为 I \mathcal{I} I,其对应的注意力图 M M M中包含着生成结果的主要内容信息。在根据修改后的文本提示 P ∗ \mathcal{P}^* P对图像进行编辑时,通过将 M M M插入到生成过程中,则可以保证修改后的生成结果 I ∗ \mathcal{I}^* I能够保留原有结果的主要内容。整个算法流程如下图所示
在这里插入图片描述
  其中 D M ( z t , P , t , s ) DM\left(z_{t}, \mathcal{P}, t, s\right) DM(zt,P,t,s)表示根据噪声图 z t z_t zt,文本提示 P \mathcal{P} P,时刻 t t t和随机数种子 s s s进行单步反向去噪生成 x t − 1 x_{t-1} xt1的过程。 M t M_t Mt M t ∗ M_t^* Mt分别表示原始文本和修改后文本对应的注意力图,对二者进行编辑可以得到 M t ^ \hat{M_t} Mt^,使用其取代 M t ∗ M_t^* Mt再进行反向去噪即可生成编辑后的图像。不同的修改方式对应了不同的编辑方法,下面将详细的介绍对注意力层进行编辑的方法 E d i t ( M t , M t ∗ , t ) Edit(M_t,M_t^*,t) Edit(Mt,Mt,t)

1. 更换单词(Word Swap)

  对于更改生成文本中某个单词的修改方式,如把“dog”换成“cat”。可以在某个生成步骤 τ \tau τ之后,直接用 M t ∗ M_t^* Mt取代 M t M_t Mt,如下式所示 Edit ⁡ ( M t , M t ∗ , t ) : = { M t ∗  if  t < τ M t  otherwise.  \operatorname{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. 正如我们前面所提到的,在生成过程的前几步就已经确定了生成对象的主要内容,因此可以先用原本的注意力图 M t M_t Mt进行一定次数的迭代, t = T → τ t=T\rightarrow\tau t=Tτ。然后再用修改后的注意力图 M t ∗ M_t^* Mt取代 M t M_t Mt,从而对在保留原本生成结果主体内容不变的基础上,根据更改的单词进行具体内容的修改。如下图所示,随着 τ \tau τ取值的不断变大,也就是越早使用 M t ∗ M_t^* Mt替换 M t M_t Mt(图中越靠近右边的部分),则生成的对象就越能更多的保留原本生成的内容,而如果完全不加入原本的注意力图 M t M_t Mt,则修改后的生成结果和原本生成结果之间基本没有任何联系。
在这里插入图片描述

2. 添加新的短语(Adding a New Phrase)

  这也是一个非常常见的修改方式,就在原本文字提示的基础上增加一些描述性的或限制性的短语。为了保留原本的生成对象,作者采用一种匹配的方式来计算修改后的文字提示 P ∗ \mathcal{P}^* P所生成的token和原本的文字提示 P \mathcal{P} P所生成的token之间的对应关系。 A ( j ) = k A(j)=k A(j)=k,就表示 P ∗ \mathcal{P}^* P的第 j j j个token与 P \mathcal{P} P的第 k k k个token相对应。若 A ( j ) = N o n e A(j)=None A(j)=None,则表示这个token是新添加的,在 P \mathcal{P} P中没有与之对应的token。在生成过程中,对于新添加的token就使用修改后的 ( M t ∗ ) i , j (M_t^*)_{i,j} (Mt)i,j来引导生成;否则,使用原本注意力图 M t M_t Mt中匹配的token A ( j ) A(j) A(j)所对应的元素 ( M t ) i , A ( j ) (M_t)_{i,A(j)} (Mt)i,A(j)来引导生成, ( Edit ⁡ ( M t , M t ∗ , t ) ) i , j : = { ( M t ∗ ) i , j  if  A ( j ) =  None  ( M t ) i , A ( j )  otherwise.  \left(\operatorname{Edit}\left(M_{t}, M_{t}^{*}, t\right)\right)_{i, j}:=\left\{\begin{array}{ll} \left(M_{t}^{*}\right)_{i, j} & \text { if } A(j)=\text { None } \\ \left(M_{t}\right)_{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. 简单来说,就是如果某个token在原本的描述中是存在的就直接用它对应的注意力值,如果是新添加的token那么则使用修改后的注意力值。这种修改方式既可以对图像中局部的某个对象做修改,也可以对整幅图像的整体风格做编辑,如下图所示
在这里插入图片描述

3. 对注意力重新加权(Attention Re–weighting)

  这也是一个常用的编辑方式,就是加强或减弱文字提示中的某个描述词的程度,比如说让雪变更大一些或更小一些。作者通过引入一个权重值 c ∈ [ − 2 , 2 ] c\in[-2,2] c[2,2]来对注意力图中某个描述词对应的token进行重新加权,从而修改其影响程度,如下式 ( Edit ⁡ ( M t , M t ∗ , t ) ) i , j : = { c ⋅ ( M t ) i , j  if  j = j ∗ ( M t ) i , j  otherwise.  \left(\operatorname{Edit}\left(M_{t}, M_{t}^{*}, t\right)\right)_{i, j}:=\left\{\begin{array}{ll} c \cdot\left(M_{t}\right)_{i, j} & \text { if } j=j^{*} \\ \left(M_{t}\right)_{i, j} & \text { otherwise. } \end{array}\right. (Edit(Mt,Mt,t))i,j:={c(Mt)i,j(Mt)i,j if j=j otherwise. 这个方式也是非常的直观和简单,权重值 c c c为正数时则加强其效果,且数值越大加强的越多;反之,权重为负数时则减弱其效果,数值越小减弱的越明显,如下图所示。
在这里插入图片描述
  通过上述的介绍,我们看到虽然作者提出的方法都非常简单,但其实现的效果确实非常显著。但是值得注意的是这里的编辑对象都是通过文本生成的图像,也就是对生成结果的“二次创作”,那么这个方法能不能对真实拍摄的图像进行编辑呢?答案是可以的,实现的方法就是作者先用DDIM对真实拍摄的图像进行一次重建,也就是先不断地添加噪声使其变成一个随机噪声图,然后再逐步去噪使其恢复原图。在去噪的过程中就可以使用上述的方法进行编辑了,如下图所示

这里有个问题如果真是图像没有对应的文字描述怎么办呢?大概可以用一些图像描述算法来生成对应的文本

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django 管网项目 三

Django 官网文档 ​​Writing your first Django app, part 2 | Django documentation | Django 本文内容涉及创建视图 View&#xff0c;路由&#xff0c;和模版。并对内容进行渲染。 创建视图 在我们的投票应用中&#xff0c;我们需要下列几个视图&#xff1a; 问题索引页—…

LabVIEW管道缺陷智能检测系统

LabVIEW管道缺陷智能检测系统 管道作为一种重要的输送手段&#xff0c;其安全运行状态对生产生活至关重要。然而&#xff0c;随着时间的推移和环境的影响&#xff0c;管道可能会出现老化、锈蚀、裂缝等多种缺陷&#xff0c;这些缺陷若不及时发现和处理&#xff0c;将严重威胁到…

外包干了10天,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;2019年我通过校招踏入了南京一家软件公司&#xff0c;开始了我的职业生涯。那时的我&#xff0c;满怀热血和憧憬&#xff0c;期待着在这个行业中闯出一片天地。然而&#xff0c;随着时间的推移&#xff0c;我发现自己逐渐陷入…

《程序员的职业迷宫:选择你的职业赛道》

程序员如何选择职业赛道&#xff1f; 大家好&#xff0c;我是小明&#xff0c;一名在编程迷宫中探索的程序员。作为这个庞大迷宫的探险者&#xff0c;我深知选择适合自己的职业赛道有多么重要。今天&#xff0c;我将分享一些关于如何选择职业赛道的心得&#xff0c;希望能够帮…

JWT令牌实现登陆校验

一、JWT出现的背景 jwt令牌出现的背景&#xff0c;比如我们通过一个路由访问网站的时候&#xff0c;有些游客在知道url的情况下会跳过用户登录直接访问其他网页&#xff0c;这样不仅在逻辑上说不通&#xff08;我没登陆咋就能使用其他功能&#xff1f;&#xff09;还会造成信息…

指针乐园--下

大家好这里是指针乐园下&#xff0c;下面我们开始喽&#xff01;&#xff01; 文章目录 目录 文章目录 前言 一、字符以及数组指针 二、函数指针变量以及函数指针数组 函数指针变量的使⽤ 通过函数指针调⽤指针指向的函数。 函数指针数组 总结 前言 我们今天会学习数组指针&…

LeNet训练集详细实现

一、下载训练集 导包 import torch import torchvision import torch.nn as nn from model import LeNet import torch.optim as optim import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as npToTensor()函数&#xff1a; 把图像…

npm 私服以及使用

在工作中&#xff0c;公司有很多内部的包并不希望发布到npm官网仓库&#xff0c;因为可能涉及到一些私有代码不能暴露。对于前端来讲&#xff0c;这时就可以选择在公司内网搭建npm私有仓库。当前比较主流的几种解决方案&#xff1a;verdaccio、nexus、cnpm。大家可以按照自己的…

限时特惠,立即购买CST电磁仿真软件,享受超值优惠与高质量服务

在电磁仿真领域&#xff0c;CST软件以其卓越的性能和广泛的应用成为了行业内的佼佼者。现在&#xff0c;我们非常高兴地宣布&#xff0c;为庆祝CST软件的持续创新与客户支持&#xff0c;我们推出限时特惠活动&#xff01;&#xff08;联系CST软件中国区代理亿达四方&#xff0c…

RabbitMQ如何保证消息不丢

如何保证Queue消息能不丢呢&#xff1f; RabbitMQ在接收到消息后&#xff0c;默认并不会立即进行持久化&#xff0c;而是先把消息暂存在内存中&#xff0c;这时候如果MQ挂了&#xff0c;那么消息就会丢失。所以需要通过持久化机制来保证消息可以被持久化下来。 队列和交换机的…

React Vite 构建工具如何查看代码占用体积

首先安装 Vite 中的 rollup-plugin-visualizer 插件 cnpm install rollup-plugin-visualizer 接着在你的 vite.config.ts 中引入并且使用到 plugins 中 import { visualizer } from "rollup-plugin-visualizer";export default defineConfig({plugins: [react(),vi…

现代信号处理学习笔记(三)现代谱估计

现代谱估计是信号处理和统计领域的一个重要主题&#xff0c;它涉及从信号中估计其频谱内容的方法。频谱表示一个信号在不同频率上的成分强度。谱估计在许多应用中都很重要&#xff0c;如通信系统、雷达、音频处理、生物医学工程等领域。 目录 前言 一、基础知识 1、功率谱估…

同步通信和异步通信(RabbitMq学习前篇)

MQ学习前篇 文章目录 MQ学习前篇1、同步和异步通讯1.1、同步通讯和异步通讯1.2、同步调用存在的问题1.3、异步调用方案1.4、异步通信的缺点 1、同步和异步通讯 学习mq之前&#xff0c;就要先知道同步通讯和异步通讯的区别。 1.1、同步通讯和异步通讯 同步通讯就像是打电话&am…

【网络安全】漏洞挖掘入门教程(非常详细),小白是如何挖漏洞(技巧篇)0基础入门到精通!

温馨提示&#xff1a; 初学者最好不要上手就去搞漏洞挖掘&#xff0c;因为漏洞挖掘需要很多的系统基础知识和一些理论知识做铺垫&#xff0c;而且难度较大…… 较合理的途径应该从漏洞利用入手&#xff0c;不妨分析一些公开的CVE漏洞。很多漏洞都有比较好的资料&#xff0c;分…

Java开发人员不得不收集的代码,java软件开发面试常见问题

前言 今年的金三银四已经过去一大半了&#xff0c;在这其中参与过不少面试&#xff0c;2021都说工作不好找&#xff0c;这也是对开发人员的要求变向的提高了。 之前在Github上收获15Kstar的Java核心神技&#xff08;这参数&#xff0c;质量多高就不用我多说了吧&#xff09;非…

C++与 Fluke5500A设备通过GPIB-USB-B通信的经验积累

C与 Fluke5500A设备通过GPIB-USB-B通信的经验积累 以下内容来自&#xff1a;C与 Fluke5500A设备通过GPIB-USB-B通信的经验积累 - JMarcus - 博客园 (cnblogs.com)START 1.需要安装NI-488.2.281&#xff0c;安装好了之后&#xff0c;GPIB-USB-B的驱动就自动安装好了 注意版本…

13. C++类使用方式

【类】 C语言使用函数将程序代码模块化&#xff0c;C通过类将代码进一步模块化&#xff0c;类用于将实现一种功能的全局数据、以及操作这些数据的函数集中存储在一起&#xff0c;同时可以设置类成员的访问权限&#xff0c;禁止外部代码使用和篡改本类成员&#xff0c;类成员访…

SMT贴片加工——品质检验要求

一、元器件贴装工艺品质要求 1.元器件贴装需整齐、正中&#xff0c;无偏移、歪斜 2.贴装的元器件型号规格应正确&#xff1b;元器件应无漏贴、错贴 3.贴片元器件不允许有反贴 4.有极性要求的贴片器件安装需按正确的极性标示安装 二、元器件焊锡工艺要求 1.FPC板面应无影响…

Java实现读取转码写入ES构建检索PDF等文档全栈流程

背景 之前已简单使用ES及Kibana和在线转Base64工具实现了检索文档的demo&#xff0c;并已实现WebHook的搭建和触发流程接口。 传送门&#xff1a; 基于GitBucket的Hook构建ES检索PDF等文档全栈方案 使用ES检索PDF、word等文档快速开始 实现读取本地文件入库ES 总体思路&…

真空展|2024上海国际真空技术及设备展览会

2024上海国际真空技术及设备展览会 2024 Shanghai International Exhibition of vacuum technology and equipment 时 间&#xff1a;2024年7月13-15日 地 点&#xff1a;上海新国际博览中心 承办单位&#xff1a;上海昶文展览服务有限公司 展会简…