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

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

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

相关文章

基于SpringBoot多模块项目引入其他模块时@Autowired无法注入

基于SpringBoot多模块项目引入其他模块时Autowired无法注入 一、问题描述1、解决方案 一、问题描述 启动Spring Boot项目时报 Could not autowire. No beans of ‘xxxxxxxx’ type found. 没有找到bean的实例,即spring没有实例化对象,也就无法根据配置文…

【LeetCode-中等】209.长度最小的子数组-双指针/滑动窗口

力扣题目链接 1. 暴力解法 这道题的暴力解法是两层嵌套for循环,第一层循环从 i 0 开始遍历至数组末尾,第二层循环从 j i 开始遍历至找到总和大于等于 target 的连续子数组,并将该连续子数组的长度与之前找到的子数组长度相比较&#xff0…

什么是IP公网?

IP公网是指互联网上可以公开访问的IP地址。它是经过互联网服务提供商(ISP)向用户提供的公共网络IP地址。与之相对的是内网IP地址,内网IP地址一般是由路由器或交换机分配给连接在局域网中的设备使用。 IP公网的作用非常广泛,可以应…

Web APIs知识点讲解(阶段二)

DOM-事件基础 一.事件 1.事件 目标:能够给 DOM元素添加事件监听 事件:事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮 事件监听:就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函…

金仕达与 DolphinDB 建立深度合作,共筑 FICC 科技创新新篇章

从“关起门做交易”到“打开门做服务”,国内 FICC 业务正经历从自营到市场化服务的转变,借助数据分析、算法交易等技术的快速发展,交易团队能够更加主动地发现市场需求,为不同客群提供更好的做市业务,FICC 交易电子化已…

打造智能汽车微服务系统平台:架构的设计与实现

随着智能汽车技术的飞速发展,微服务架构在汽车行业中的应用越来越广泛。采用微服务架构可以使汽车系统更加灵活、可扩展,并且有利于快速推出新功能和服务。本文将从设计原则、关键技术、数据安全等方面,介绍如何搭建智能汽车微服务系统平台架…

【Python】FastAPI 项目创建 与 Docker 部署

文章目录 前言&需求描述1. 本地FastAPI1.1 Python 环境准备1.2 本地 Pycharm 创建FastAPI项目 2. Python FastAPI 部署2.1 服务器配置Python环境2.2.1 下载与配置Git、Pyenv等工具2.2.2 下载与配置Python 2.2 FastAPI 打包成镜像2.2.1 项目准备所需环境文件2.2.2 编写Docke…

AI智能分析网关V4车辆违停算法在园区场景中的应用及特点

随着城市化进程的加速,车辆违停问题愈发严重,给城市交通带来了极大的困扰。为了解决这一问题,AI技术逐渐被应用于车辆违停的检测中。AI检测算法在车辆违停方面的应用,主要是通过计算机视觉技术,对道路上的车辆进行实时…

智慧灌区项目案例(甘肃省兰州市某重点灌区)

​甘肃省兰州市某重点灌区自上个世纪80年代建成后,灌溉面积达到30万亩,对推动当地农业发展发挥了重要作用。但长期以来,该灌区的水利管理仍主要依靠人工统计记录,缺乏实时监测和精细化管理。为实现灌区管理的现代化升级,甘肃水利局委托星创易联公司设计实施水利信息化项目。 项…

【Python笔记-设计模式】状态模式

一、说明 状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为 (一) 解决问题 在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性 (二) 使用场景 当对象的行为取决于其状态&#…

C#使用iText7将多个PDF文档合并为单个文档

使用HtmlAgilityPack抓取并分析网页内容,然后再调用PuppeteerSharp将网页生成PDF文件,最终的成果如下图所示,得到将近120个pdf文档。能看,但是不方便,需要逐个打开文档才能看到所需的内容,最好能将这些文档…

浅谈 Linux 网络编程 socket

文章目录 socket 介绍 socket 介绍 socket 被翻译成 网络套接字,这个名字实在是不好理解,我更愿意称为"插槽"。 忽略 socket 的中文名,先无脑记住两个规则: ① 记住,一个文件描述符(fd) 指向一个 socket&…

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程,语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境,并挂起执行python脚本 conda activ…

机器学习(II)--样本不平衡

现实中,样本(类别)样本不平衡(class-imbalance)是一种常见的现象,如:金融欺诈交易检测,欺诈交易的订单样本通常是占总交易数量的极少部分,而且对于有些任务而言少数样本更…

Linux信号【产生-保存-处理】

目录 前言: 1、进程信号基本概念 1.1、什么是信号? 1.2、信号的作用 2、键盘键入 2.1、ctrlc 终止前台进程 2.1.1、signal 注册执行动作 3、系统调用 3.1、kill 函数 3.2、模拟实现 myKill 3.3、raise 函数 3.4、abort 函数 4、软件条件信号…

人工智能福利站,初识人工智能,图神经网络学习,第五课

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

nginx设置缓存时间、日志分割、开启多进程、网页压缩、配置防盗链

一、设置缓存时间 当网页数据返回给客户端后,可针对静态网页设置缓存时间,在配置文件内的http段内server段添加location,更改字段expires 1d来实现:避免重复请求,加快访问速度 第一步:修改主配置文件 #修…

Vulnhub靶机:basic_pentesting_2

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.4) 靶机:basic_pentesting_2(10.0.2.7) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.c…

如何选择O2OA(翱途)开发平台的部署架构?

概述 O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]支持公有云,私有云和混合云部署,也支持复杂的网络结构下的分布式部署。本篇主要介绍O2OA(翱途)开发平台支持的部署环境以及常用的集群部署架构。 软硬件环境说明 支持的云化平台: 华为云…

LLM 聊天对话界面chatwebui 增加实时语音tts功能

类似豆包聊天,可以实时语音回复 1、聊天界面 streamlit页面 参考界面:https://blog.csdn.net/weixin_42357472/article/details/133199866 stream_web.py 2、 增加实时语音tts功能(接入melotts api服务) 参考:https://blog.csdn.net/weixin_42357472/article/detai…