pix2pix-zero

pix2pix-zero:零样本图像到图像转换

论文介绍 Zero-shot Image-to-Image Translation
关注微信公众号: DeepGoAI

项目地址:https://github.com/pix2pixzero/pix2pix-zero

论文地址:https://arxiv.org/abs/2302.03027

本文介绍了一种名为pix2pix-zero的图像到图像的翻译方法,它基于扩散模型,允许用户即时指定编辑方向(例如,将猫转换为狗),同时保持原始图像的结构。该方法自动发现文本嵌入空间中反映所需编辑的编辑方向,并采用跨注意力引导以在编辑过程中保留输入图像的一般内容结构。重要的是,这种方法不需要针对每种编辑类型和图像进行额外的训练,可以直接使用预训练的文本到图像的扩散模型。通过广泛的实验,证明了pix2pix-zero在真实和合成图像编辑方面超越了现有和同时期的工作。


上图展示了论文方法能让用户指定转换方向(例如,从猫变为狗)。该方法在处理真实图像(上两行)和合成图像(下两行)的翻译任务时,都能保留输入图像的结构。这种技术不需要为每个输入图像或每个任务进行手动文本提示或昂贵的微调。图中显示了不同的翻译示例,如从猫变成狗、从马变成斑马、从素描变为油画质感、给狗加上眼镜,以及将狗变成跳跃的狗。


上图展示了pix2pix-zero方法的概述,这是一个将图片从猫变成狗的图像到图像的翻译例子。首先,使用规范化的DDIM反转来得到一个反转的噪声映射,这是由BLIP图像字幕(caption)网络和CLIP文本嵌入模型自动生成的文本嵌入引导的。然后,使用原始文本嵌入去噪以获得交叉注意力图,作为输入图像结构的参考(顶部行)。接下来,使用编辑后的文本嵌入去噪,通过损失函数确保这些交叉注意力图与参考交叉注意力图相匹配(第二行)。这确保了编辑图像的结构与原始图像相比不会发生剧烈变化。没有交叉注意力引导的去噪示例显示在第三行,导致结构上的大偏差。此可视化强调了在编辑过程中保持图像原始结构的交叉注意力的重要性。

方法概述

文章提出了一种无需额外训练即可编辑真实图像的方法,核心技术包括:

  1. 规范化的DDIM反演和噪声规范化 :文章采用确定性DDIM逆过程进行真实图像反演,并在反演过程中使噪声图保持接近高斯分布,以提高可编辑性。

  2. 自动编辑方向发现 :为了能够利用文本语义进行编辑,作者首先提出一种在文本嵌入空间自动找到编辑方向的方法,具体通过计算包含原始词和编辑词的句子组的CLIP嵌入方向。

  3. 交叉注意力引导 :为了保持编辑后内容的结构,方法采用了交叉注意力引导,这涉及到在扩散过程中保持输入图像的交叉注意力图。

规范化的DDIM反演和噪声规范化
确定性反演

反演的意思就是说,我们想要编辑一张图像。如果想利用预训练的生成模型对其进行编辑,那么就需要先把图像嵌入到生成模型的隐空间。这个是目前比较流行的做法。
反演涉及到寻找噪声映射 x inv x_{\text{inv}} xinv(在生成模型中的编码表示),该噪声映射能够在采样时重建输入的潜在代码 x 0 x_0 x0(输入图像或对应的编码表示)。在DDPM中,这对应于固定的正向加噪声过程,然后通过反向过程去噪。然而,DDPM的正向和反向过程都是随机的,不会得到一致的重建。因此,作者采用如下所示的确定性DDIM反向过程:

x t + 1 = α ‾ t + 1 f θ ( x t , t , c ) + 1 − α ‾ t + 1 ϵ θ ( x t , t , c ) x_{t+1} = \sqrt{\overline{\alpha}_{t+1}}f_{\theta}(x_t, t, c) + \sqrt{1 - \overline{\alpha}_{t+1}}\epsilon_{\theta}(x_t, t, c) \quad xt+1=αt+1 fθ(xt,t,c)+1αt+1 ϵθ(xt,t,c)

其中, x t x_t xt 是时间步 t t t 的噪声潜在代码, ϵ θ ( x t , t , c ) \epsilon_\theta(x_t, t, c) ϵθ(xt,t,c) 是基于UNet的去噪器,它在给定时间步和编码的文本特征 c c c 的条件下预测添加到 x t x_t xt 中的噪声, α ‾ t + 1 \overline{\alpha}_{t+1} αt+1 是DDIM中定义的噪声缩放因子, f θ ( x t , t , c ) f_\theta(x_t, t, c) fθ(xt,t,c) 预测最终去噪的潜在代码 x 0 x_0 x0

f θ ( x t , t , c ) = x t − 1 − α ‾ t ϵ θ ( x t , t , c ) α ‾ t f_{\theta}(x_t, t, c) = \frac{x_t - \sqrt{1 - \overline{\alpha}_t}\epsilon_{\theta}(x_t, t, c)}{\sqrt{\overline{\alpha}_t}} \quad fθ(xt,t,c)=αt xt1αt ϵθ(xt,t,c)

通过DDIM过程逐渐向初始潜在代码 x 0 x_0 x0添加噪声,并在反转结束时,最后的噪声潜在代码 x T x_T xT被分配为 x i n v x_{inv} xinv.

噪声规范化

通过DDIM反演生成的反演噪声图通常不遵循不相关高斯白噪声的统计属性,导致可编辑性差。一个高斯白噪声图应该满足:(1) 任意两个随机位置之间没有相关性;(2) 每个空间位置的均值为零,方差为一,这在其自相关函数中反映为克罗内克函数。基于此,作者引导反演过程,使用由成对项 L pair L_{\text{pair}} Lpair 和在单个像素位置的KL散度项 L KL L_{\text{KL}} LKL 组成的自相关目标。

作者遵循文献[29]的方法,构建一个金字塔,其中初始噪声水平 η 0 ∈ R 64 × 64 × 4 \eta_0 \in \mathbb{R}^{64 \times 64 \times 4} η0R64×64×4 是预测的噪声图,每个后续噪声图通过2x2的领域平均池化(并乘以2以保持期望的方差)。作者在特征大小8x8处停止,创建4个噪声图,形成集合 { η 0 , η 1 , η 2 , η 3 } \{\eta_0, \eta_1, \eta_2, \eta_3\} {η0,η1,η2,η3}

在金字塔级别 p p p 的成对正则化是可能的 δ \delta δ 偏移处自相关系数平方和,归一化过噪声图大小 S p S_p Sp

L pair = ∑ p 1 S p 2 ∑ δ = 1 S p − 1 ∑ x , y , c η x , y , c p ( η x − δ , y , c p + η x , y − δ , c p ) , \mathcal{L}_{\text{pair}} = \sum_{p} \frac{1}{S_p^2} \sum_{\delta=1}^{S_p-1} \sum_{x,y,c} \eta^{p}_{x,y,c} \left( \eta^{p}_{x-\delta,y,c} + \eta^{p}_{x,y-\delta,c} \right), Lpair=pSp21δ=1Sp1x,y,cηx,y,cp(ηxδ,y,cp+ηx,yδ,cp),

其中, η x y c p \eta_{xyc}^p ηxycp 在使用圆形索引和通道的空间位置中索引。

为了使反转噪声图更接近理想的高斯白噪声,作者引入了一个自相关目标函数,它由两部分组成:一个成对项 L pair L_{\text{pair}} Lpair 和一个在单个像素位置上的KL散度项 L KL L_{\text{KL}} LKL。这个自相关正则化的目的是确保在噪声图中的每一对随机位置之间没有相关性,并且每个空间位置的噪声值都有零均值和单位方差。这种方法有助于在编辑过程中保持图像质量,并确保编辑后的图像更加自然和真实。总目标函数如下:
L auto = L pair + λ L KL L_{\text{auto}} = L_{\text{pair}} + \lambda L_{\text{KL}} Lauto=Lpair+λLKL
在拿到确定性的噪声映射 x inv x_{\text{inv}} xinv之后,就可以考虑对其进行编辑了。接下来我们讨论如何利用零样本实现语义层面的编辑。

自动编辑方向发现


给定源文本和目标文本(例如猫和狗),作者使用 GPT-3 生成大量不同的句子。作者计算它们的 CLIP 嵌入并取均值差来获得编辑方向 $\Delta_{edit} $。

具体来说,作者自动计算从源到目标的对应文本嵌入方向向量$\Delta_{edit} 。他们为源 。他们为源 。他们为源s 和目标 和目标 和目标t$生成了一大批多样化的句子,这些句子要么使用现成的句子生成器(如GPT-3)生成,要么使用围绕源和目标的预定义提示生成。然后,他们计算句子的CLIP嵌入的平均差异。通过向文本提示嵌入添加方向,可以生成编辑后的图像。

该方法计算编辑方向只需要大约5秒钟,并且只需预先计算一次。接下来,作者将编辑方向整合到图像到图像的翻译方法中。这种方法的优点是使用多个句子确定文本方向比使用单个单词更为稳健。

通过交叉注意力引导的编辑

近期的大规模扩散模型通过在去噪网络中增加交叉注意力层来引入条件化。作者使用基于潜在扩散模型(LDM)构建的开源稳定扩散模型(Stable Diffusion)。该模型使用CLIP文本编码器产生文本嵌入 c c c。为了根据文本条件生成图像,模型计算编码文本和去噪器中间特征之间的交叉注意力:

Attention ( Q , K , V ) = M ⋅ V \text{Attention}(Q, K, V) = M \cdot V Attention(Q,K,V)=MV

其中,

M = Softmax ( Q K T d ) M = \text{Softmax}\left(\frac{QK^T}{\sqrt{d}}\right) M=Softmax(d QKT)

查询 Q = W Q ϕ ( x t ) Q = W^Q\phi(x_t) Q=WQϕ(xt),键 K = W K c K = W^Kc K=WKc,值 V = W V c V = W^Vc V=WVc是通过在去噪UNet的中间空间特征 ϕ ( x t ) \phi(x_t) ϕ(xt)和文本嵌入 c c c上应用学习到的投影 W Q , W K , W V W^Q, W^K, W^V WQ,WK,WV计算得出, d d d是投影键和查询的维度。

特别关注的是交叉注意力图 M M M,它与图像的结构有紧密的联系。交叉注意力图的每个条目 M i j M_{ij} Mij代表第 j j j个文本标记对第 i i i个空间位置的贡献。此外,交叉注意力图是特定于时间步的,对于每个时间步 t t t我们会得到不同的注意力图 M t M_t Mt

为了应用一个编辑,朴素的方式是将预先计算的编辑方向 Δ c e d i t \Delta c_{edit} Δcedit 应用到 c c c 上,使用 c e d i t = c + Δ c e d i t c_{edit} = c + \Delta c_{edit} cedit=c+Δcedit 进行采样过程以生成 x e d i t x_{edit} xedit。这种方法能够根据编辑成功地改变图像,但无法保留输入图像的结构。如图3所示,采样过程中交叉注意力图的偏差导致图像结构的偏差。因此,作者提出了一种新的交叉注意力引导来鼓励交叉注意力图的一致性。

首先,重建图像,不应用编辑方向,只使用输入文本 c c c 来获取每个时间步骤 t t t 的参考交叉注意力图 M t r e f M_t^{ref} Mtref。这些交叉注意力图对应于我们希望保留的原始图像的结构 e e e。接下来,作者应用编辑方向,使用 c e d i t c_{edit} cedit 来生成交叉注意力图 M t e d i t M_t^{edit} Mtedit。然后作者采取梯度步骤与 x t x_t xt 匹配参考 M t r e f M_t^{ref} Mtref,减少下面的交叉注意力损失 L x a L_{xa} Lxa

L x a = ∣ ∣ M t e d i t − M t r e f ∣ ∣ 2 2 L_{xa} = ||M_t^{edit} - M_t^{ref}||_2^2 \quad Lxa=∣∣MteditMtref22
这个损失鼓励 M t e d i t M_t^{edit} Mtedit 不偏离 M t r e f M_t^{ref} Mtref,在应用编辑的同时保留原始结构。

实验结果


这里进一步展示了更多的编辑。可以看到编辑结果还是非常逼真且自然的。

当然了这个算法也有缺陷。比如说非常复杂的图,可能还是没办法实现高质量编辑。另一问题是他对原始的结构姿态保持的不是很完美。原因是算法是在低尺度的特征图上进行编辑,所以对原来结构的保持并不完美。

总结

本文介绍了一种基于扩散的图像到图像的翻译方法,可以在不需要手动文本提示的情况下保持原始图像的内容。它自动发现反映所需编辑的文本嵌入空间中的编辑方向,并通过交叉注意力引导来保持编辑后的内容结构。此方法无需为每次编辑额外训练,可直接使用预训练的文本到图像扩散模型。实验表明,该方法在真实和合成图像编辑方面优于现有和同时期的工作。

其他更多细节请参阅论文原文

关注微信公众号: DeepGoAI

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

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

相关文章

live555学习 - 环境准备

环境:Ubuntu 16.04.7 ffmpeg-6.1 1 代码下载 最新版本: http://www.live555.com/liveMedia/public/ 历史版本下载 https://download.videolan.org/pub/contrib/live555/ 选择版本live.2023.01.19.tar.gz ps:没有选择新版本是新版本在…

深入理解计算机系统笔记

1.1 嵌套的数组 当我们创建数组的数组时,数组分配和引用的一般原则也是成立的。 例如,声明 int A[5][3]; 等价于下面的声明 typedef int row3_t[3]; row3_t A[5] 要访问多维数组的元素,编译器会以数组起始为基地址, (可能需…

MQTT协议解析:揭秘固定报头、可变报头与有效载荷的奥秘

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的通讯协议,常用于远程传感器和控制设备的通讯。MQTT协议基于发布/订阅模式,为大量计算能力有限且工作在低带宽、不可靠网络环境中的设备…

【报名指南】2024年第九届数维杯数学建模挑战赛报名全流程图解

1.官方报名链接: 2024年第九届数维杯大学生数学建模挑战赛http://www.nmmcm.org.cn/match_detail/32 2.报名流程(电脑与手机报名操作流程一致) 参赛对象为在校专科生、本科生、研究生,每组参赛人数为1-3人(指导老师不…

RDD简介与基础编程

1. 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。在代码中,RDD是一个抽象类,他代表着一个弹性的、不可变的、可分区的、里面的元素可并行计算的集…

附加Numpy数组

参考:Append Numpy Array 引言 在数据科学和机器学习领域,处理大规模数据集是一项重要且常见的任务。为了高效地处理数据,numpy是一个非常强大的Python库。本文将详细介绍numpy中的一个重要操作,即如何附加(append&a…

常用字符函数和字符串函数的了解和模拟实现

前言 字符函数和字符串函数都是在编程中用来处理字符和字符串的函数。 字符函数是用来处理单个字符的函数,比如查找、替换、转换大小写、比较等操作。常用的字符函数包括: isalpha():判断一个字符是否为字母;isdigit()&#xf…

图像分割 - 查找图像的轮廓(cv2.findContours函数)

1、前言 轮廓,是指图像中或者物体的外边缘线条。在简单的几何图形中,图形的轮廓是由平滑的线条构成,容易被识别。但不规则的图形或者生活中常见的物体轮廓复杂,识别起来比较困难 2、findContours函数 这里先介绍函数的参数,具体的含义会在下面实验中阐述 opencv 提供的轮…

源码框架-​1.Spring底层核心原理解析

目录 Spring中核心知识点: Bean的创建过程 推断构造方法 AOP大致流程 Spring事务 Spring中核心知识点: Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理AOP底层原理Spring事务底层原理 ps:这篇文章中都只是大致流程,后续会针对每…

猜测了一个sora模型结构

如果是上述的这种结构,可以确定的是patch 的size (一个图像的小片)是固定大小的 那么调节一个视觉分辨率大小通过patchs的大小决定。 如图所示可以证明输入的时候图片没有本物理人为的分割为小片,是通过一个模型进行分割为 小片。…

Container killed on request. Exit code is 143

Bug信息 WARN YarnAllocator: Container marked as failed: container_e33_1480922439133_0845_02_000002 on host: hdp4. Exit status: 143. Diagnostics: Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143 Killed by externa…

供应链|NUS覃含章MS论文解读:数据驱动下联合定价和库存控制的近似方法 (二)

编者按 本次解读的文章发表于 Management Science,原文信息:Hanzhang Qin, David Simchi-Levi, Li Wang (2022) Data-Driven Approximation Schemes for Joint Pricing and Inventory Control Models. https://doi.org/10.1287/mnsc.2021.4212 文章在数…

助力智能化农田作物除草,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统

在我们前面的系列博文中,关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了,结合智能化的设备可以实现只能除草等操作,玉米作物场景下的杂草检测我们则少有涉及,这里本文的主要目的就是想要基于YOLOv7系列的模型来开发…

Android14之解决编译报错:bazel: no such file or directory(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

如何通过代理IP安全使用Linkedln领英?

LinkedIn是跨境外贸必备的拓客工具,世界各地的许多专业人士都使用领英来作为发布和共享内容的主要工具,这使得它成为跨境出海必备的渠道工具。 但是不少做外贸的朋友都知道,领英账号很容易遭遇限制封禁,但如果善用工具&#xff0…

中小型水库安全监测运营解决方案,筑牢水库安全防线

我国水库大坝具有“六多”的特点。第一,总量多。我国现有水库9.8万座,是世界上水库大坝最多的国家。第二,小水库多。我国现有水库中95%的水库是小型水库。第三,病险水库多。 目前,在我国水库管理中,部分地方…

第3届图像处理与媒体计算国际会议(ICIPMC 2024)即将召开!

2024年第3届图像处理与媒体计算国际会议(ICIPMC2024)将于2024年5月17-19日在中国合肥举行。本次大会由安徽大学、西北工业大学,西北大学和IEEE联合主办。ICIPMC 2024旨在汇集该领域领先的学术科学家、研究人员和学者,并进行交流和…

Linux学习-C语言-运算符

目录 算术运算符: - * /:不能除0 %:不能对浮点数操作 :自增与运算符 i:先用再加 i:先加再用 --:自减运算符 常量,表达式不可以,--,变量可以 赋值运算符 三目运算符 逗号表达式 size…

Opencv基本操作 (上)

目录 图像基本操作 阈值与平滑处理 图像阈值 图像平滑处理 图像形态学操作 图像梯度计算 Sobel 算子 Canny 边缘检测 图像金字塔与轮廓检测 图像轮廓 接口定义 轮廓绘制 轮廓特征与相似 模板匹配 傅里叶变换 傅里叶变换的作用 滤波 图像基本操作 读取图像&…

关键字:private关键字作用,解析及用法

private关键字在 Java 中用于定义类的成员(如变量、方法)的访问权限。它表示该成员只能在类的内部被访问和修改,而在类的外部是不可见的。 以下是private关键字的主要作用和解析: 作用: 封装性:通过将类的…