【深度学习】【风格迁移】Zero-shot Image-to-Image Translation

论文:https://arxiv.org/abs/2302.03027
代码:https://github.com/pix2pixzero/pix2pix-zero/tree/main

文章目录

  • Abstract
  • 1. Introduction
  • 相关工作
  • 3. Method

Abstract

大规模文本到图像生成模型展示了它们合成多样且高质量图像的显著能力。然而,直接将这些模型应用于编辑真实图像仍然存在两个挑战。首先,用户很难提供完美的文本提示,准确描述输入图像中的每个视觉细节。其次,尽管现有模型可以在某些区域引入期望的改变,但它们通常会在不需要编辑的区域引入意想不到的变化,从而大幅改变输入内容。在这项工作中,我们提出了pix2pix-zero,一种图像到图像的转换方法,可以在没有手动提示的情况下保留原始图像的内容。我们首先自动发现反映文本嵌入空间中所需编辑的编辑方向。为了在编辑后保留一般内容结构,我们进一步提出了交叉注意力引导,旨在在扩散过程中保留输入图像的交叉注意力图。此外,我们的方法不需要对这些编辑进行额外的训练,可以直接使用现有的预训练文本到图像扩散模型。我们进行了大量实验证明,我们的方法在真实和合成图像编辑方面优于现有和同时进行的工作。

图1:我们提出了pix2pix-zero,这是一种基于扩散的图像到图像转换方法,允许用户即时指定编辑方向(例如,猫 → 狗)。我们在真实图像(上方2行)和合成图像(底部行)上执行各种翻译任务,同时保留输入图像的结构。我们的方法既不需要为每个输入图像手动进行文本提示,也不需要为每个任务进行昂贵的微调。

在这里插入图片描述

1. Introduction

最近的文本到图像扩散模型,如DALL·E 2 [43]、Imagen [51]和Stable Diffusion [47],生成具有复杂对象和场景的多样化、逼真的合成图像,展示了强大的组合能力。

然而,将这些模型重新用于编辑真实图像仍然具有挑战性。

首先,图像并不自然地附带文本描述。指定一个文本描述是繁琐且耗时的,因为一张图片价值千言万语,包含许多纹理细节、光照条件和形状微妙之处,在词汇表中可能没有对应的词语。其次,即使有初始和目标文本提示(例如,将猫改为狗),现有的文本到图像模型往往会合成完全新的内容,不符合输入图像的布局、形状和物体姿态。毕竟,编辑文本提示只告诉我们想要改变什么,但并未传达我们想要保留的内容。最后,用户可能希望对多样的真实图像执行各种编辑。因此,我们不希望为每个图像和编辑类型进行大规模的微调,因为这将带来极高的成本。

为了克服上述问题,我们引入了pix2pix-zero,一种基于扩散的图像到图像转换方法,无需训练和文本提示。

用户只需即时指定编辑方向,形式为源域 → 目标域(例如,猫 → 狗),无需为输入图像手动创建文本提示。我们的模型可以直接使用预训练的文本到图像扩散模型,无需为每个编辑类型和图像进行额外的训练。

在这项工作中,我们做出了两个关键贡献:(1) 高效的自动编辑方向发现机制,无需输入文本提示。我们自动发现适用于广泛输入图像的通用编辑方向。给定一个原始词(例如,猫)和一个编辑后的词(例如,狗),我们分别生成包含原始和编辑后词的两组句子。然后,我们计算两组句子之间的CLIP嵌入方向。由于该编辑方向基于多个句子,比仅仅在原始和编辑后词之间找到方向更加稳健。这一步仅需约5秒即可预先计算。(2) 通过交叉注意力引导进行内容保留。我们观察到交叉注意力图对应于生成物体的结构。为了保留原始结构,我们鼓励文本-图像交叉注意力图在转换前后保持一致。因此,我们在整个扩散过程中应用交叉注意力引导来强制实现这种一致性。在图1中,我们展示了使用我们的方法进行各种编辑的结果,同时保留输入图像的结构。

我们进一步通过一系列技术来改进结果并提高推断速度:(1) 自相关正则化:在应用DDIM [55]反转时,我们观察到DDIM反转容易使中间预测的噪声不太符合高斯分布,这降低了反转图像的可编辑性。因此,我们引入了自相关正则化,以确保在反转过程中噪声接近高斯分布。(2) 条件GAN蒸馏:由于多步推断的昂贵扩散过程,扩散模型较慢。为了实现交互式编辑,我们将扩散模型蒸馏为快速的条件GAN模型,给定来自扩散模型的原始和编辑后图像的配对数据,从而实现实时推断。

我们在各种图像到图像转换任务上演示了我们的方法,例如改变前景对象(猫 → 狗)、修改物体(在猫图像上添加眼镜)以及改变输入的风格(草图 → 油 pastel),用于真实图像和合成图像。

大量实验证明,pix2pix-zero在逼真性和内容保留方面优于现有和同时进行的作品[35, 22]。最后,我们对各个算法组件进行了广泛的剔除研究,并讨论了我们方法的限制。更多结果和相关代码请访问我们的网站https://pix2pixzero.github.io/。

相关工作

使用GAN进行深度图像编辑。随着生成建模的发展,图像编辑技术使用户可以以不同的方式表达他们的目标(例如,滑块、空间掩码或自然语言描述)。其中一类工作是训练条件GAN,将输入图像从一个域转换到目标域[28, 52, 71, 14, 61, 26, 39, 34, 5],这通常需要特定任务的模型训练。另一类编辑方法是通过图像反转来操纵GAN的潜在空间,并发现编辑方向[70, 27, 45, 69, 63, 7]。

这些方法首先将目标图像投影到预训练GAN模型的潜在空间,然后通过沿着与解缠结属性相对应的方向操纵潜在代码来编辑图像。许多先前的工作提出了对GAN模型进行微调以更好地匹配输入图像[8, 38, 46],探索不同的潜在空间[62, 1, 2],反转到多个层[19, 40],以及利用潜在编辑方向[21, 54, 41, 3]。尽管这些方法在单一类别的策划数据集上取得了成功,但在更复杂的图像上很难获得高质量的反转结果。

文本到图像模型。最近,大规模的文本到图像模型通过在互联网规模的文本-图像数据集上进行训练,显著提高了图像的质量和多样性[51, 43, 44, 64, 17, 18]。然而,在文本输入之外,它们对生成过程的控制能力有限。通过改变输入句子中的单词来编辑真实图像是不可靠的,因为它往往会以意外的方式改变图像的大部分内容。有些方法[37, 4]使用额外的掩码来约束编辑的应用位置。与这些方法不同,我们的方法保留了输入图像的结构,无需使用任何空间掩码。其他最近和同时进行的作品(例如,Palette [50],InstructPix2Pix [10],PITI [60])学习了针对图像到图像转换任务的条件扩散模型。相比之下,我们使用预训练的Stable Diffusion模型,无需进行额外的训练。

使用扩散模型进行图像编辑。最近的一些工作采用了扩散模型进行图像编辑。

SDEdit [35]通过在输入图像中添加噪声和用户编辑引导来进行编辑,然后去噪以增加其真实感。随后,它与文本到图像模型(例如GLIDE [37]和Stable Diffusion模型[47])一起用于基于文本的图像修复和编辑。其他方法[13, 56]提出了通过加入条件用户输入来修改扩散过程,但仅适用于单一类别的模型。

两个同时进行的工作,Imagic [30]和prompt-toprompt [22],也尝试使用预训练的文本到图像扩散模型进行结构保留的编辑。Imagic [30]展示了出色的编辑结果,但需要为每个图像微调整个模型。prompt-to-prompt [22]不需要微调,并使用原始图像的交叉注意力图(其值对应于编辑文本)来保留结构,主要关注合成图像的编辑。我们的方法在三个方面与它们不同。首先,我们的方法对输入图像不需要文本提示。其次,我们的方法更加稳健,因为我们不直接使用原始文本的交叉注意力图,这可能与编辑后的文本不兼容。我们的引导方法确保了编辑图像的交叉注意力图保持接近,但仍具有根据编辑文本进行变化的灵活性。

第三,我们的方法专门针对真实图像,同时对合成图像也有效。我们展示了我们的方法在图像质量和内容保留方面优于SDEdit和prompt-to-prompt。

3. Method

在这里插入图片描述

图3:pix2pix-zero方法的概述,通过一个猫→狗编辑示例进行说明。首先,我们使用正则化的DDIM反转获得一个反转的噪声图。这由文本嵌入c引导,文本嵌入c是使用图像字幕网络BLIP [33]和CLIP文本嵌入模型自动计算得到的。接着,我们通过原始文本嵌入对图像进行去噪,得到交叉注意力图,作为输入图像结构的参考(顶部行)。然后,我们通过编辑后的文本嵌入c + ∆cedit 进行去噪,使用损失函数鼓励交叉注意力图与参考交叉注意力图匹配(第2行)。这确保编辑后图像的结构与原始图像相比没有发生显著变化。第3行展示了没有交叉注意力引导的去噪结果,导致结构上的大幅偏离。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

微服务——es数据聚合+RestClient实现聚合

数据聚合 聚合的种类 DSL实现Bucket聚合 如图所示,设置了10个桶,那么就显示了数量最多的前10个桶,品牌含有7天酒店的有30家, 品牌含有如家的也有30家。 修改排序规则 限定聚合范围 DSL实现Metrics聚合 如下案例要求对不同的品…

谷歌广告(Google ads)如何投放?新手必看的超全教程

Google是公认的全球最大的搜索引擎,同时,Google还通过旗下的 YouTube、Gmail、Google Play、Android等产品,汇集了海量的海外用户。对于跨境出海商家来说,谷歌广告是提高销售额、提高产品流量、拓展全球市场的重要推广渠道。 那么…

[C++] 类与对象(中)完整讲述运算符重载示例 -- 日期类(Date) -- const成员

目录 1、前言 2、全缺省的构造函数 3、打印接口 4、拷贝构造 5、赋值运算符重载(operator) 5.1赋值重载是默认成员函数,重载格式: 5.2 赋值重载不能为全局函数 5.3 编译器默认生成 6、析构函数 7、operator> 8、ope…

ARCGIS地理配准出现的问题

第一种。已有省级行政区矢量数据,在网上随便找一个相同省级行政区图片,利用地理配准工具给图片添加坐标信息。 依次添加省级行政区选择矢量数据、浙江省图片。 此时,图层默认的坐标系与第一个加载进来的省级行政区选择矢量数据的坐标系一致…

命令模式(C++)

定义 将一个请求(行为)封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 应用场景 在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比…

【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码

前言 本文介绍 vue3-element-admin 如何通过ESLint 检测 JS/TS 代码、Prettier 格式化代码、Stylelint 检测 CSS/SCSS 代码和配置 EditorConfig 来全方位约束和统一前端代码规范。 ESLint 代码检测 ESLint 可组装的JavaScript和JSX检查工具,目标是保证代码的一致…

3.1 C++ 继承、继承方式 3.2 C++继承后的构造函数执行顺序

继承、继承方式 代码复用的方法&#xff1a;组合 &#xff08;has a&#xff09;&#xff1b;继承 &#xff08;is a&#xff09; 继承是提高代码复用性 继承规则&#xff1a; #include<iostream> using namespace std; class A { public:int a_num11;static void …

ADB连接安卓手机提示unauthorized

近期使用airtest进行自动化测试时&#xff0c;因为需要连接手机和电脑端&#xff0c;所以在使用adb去连接本人的安卓手机vivo z5时&#xff0c;发现一直提示unauthorized。后来经过一系列方法尝试&#xff0c;最终得以解决。 问题描述&#xff1a; 用数据线将手机接入电脑端&…

RISC-V云测平台:Compiling The Fedora Linux Kernel Natively on RISC-V

注释&#xff1a;编译Fedora&#xff0c;HS-2 64核RISC-V服务器比Ryzen5700x快两倍&#xff01; --- 以下是blog 正文 --- # Compiling The Fedora Linux Kernel Natively on RISC-V ## Fedora RISC-V Support There is ongoing work to Fedora to support RISC-V hardwar…

机器学习基础知识(1)

什么是机器学习 机器学习是一种通过输入大量数据来构建一种模型&#xff08;网络&#xff09;&#xff0c;这个训练好的模型将会被用来预测或执行某些操作&#xff0c;这个训练的过程和方法就是机器学习。 我们也可以理解为构建一个“函数”&#xff0c;使得这个函数面对我们…

【项目学习1】如何将java对象转化为XML字符串

如何将java对象转化为XML字符串 将java对象转化为XML字符串&#xff0c;可以使用Java的XML操作库JAXB&#xff0c;具体操作步骤如下&#xff1a; 主要分为以下几步&#xff1a; 1、创建JAXBContext对象&#xff0c;用于映射Java类和XML。 JAXBContext jaxbContext JAXBConte…

三、web核心防御机制(下)

文章目录 核心防御机制2.3处理攻击者2.3.1 处理错误2.3.2 维护审计日志2.3.3 向管理员发出警报2.3.4 应对攻击 2.4 管理应用程序 核心防御机制 2.3处理攻击者 任何设计安全应用程序的开发人员必须基于这样一个假设&#xff1a;应用程序将成为蓄意破坏且经验丰富的攻击者的直接…