021_SSSS_Diffusion Models Already Have a Semantic Latent Space

news2025/1/8 0:02:43

Diffusion Models Already Have a Semantic Latent Space

1. Introduction

本文指出,现有的Diffusion模型可以在不同的领域有出色的表现,但是缺少可以控制其生成过程的语义隐空间(Semantic Latent Sapce)。本文提出了非对称的反向过程(Asymmetric reverse process,Asyrp),拥有可以控制的隐式语义空间,称作h-sapce。并且本文提出了一种新方法,可以达到versatile editing和quality boosting。

在这里插入图片描述

首先来看一下现有的diffusion图像编辑方法及其缺陷。图中(a)部分利用图像引导生成过程,但是这种方法很容易导致生成没有意义的结果。(b)部分利用额外引入的分类器来实现引导图像的生成,但是这种方法需要额外训练一个分类网络,而且通常会降低生成的质量,而且会改变生成的内容。(c)部分的DiffusionCLIP则需要对整个diffusion模型进行微调,代价比较大。(d)部分是本文的方法,可以在不改变训练好的Diffusion的基础上实现语义的编辑。

本文的主要贡献:
(1)提出了Asyrp,非对称的反向过程,可以对训练好的Diffusion模型的隐空间进行语义编辑。
(2)在这个隐式的语义空间h-space中,对不同的图像的隐变量做相同的shift可以达到相同语义的编辑效果。
(3)实验证明本文的方法在现有的DDPM++,IDDPM,ADM等Diffusion模型和不同的数据集上都可以达到需要的效果。

2. Methodology

首先来回顾一下DDIM的设计:

在这里插入图片描述

作者对这个式子的表示做了一些简化,用 P t ( ϵ t θ ( x t ) ) P_t(\epsilon^{\theta}_t (x_t)) Pt(ϵtθ(xt)) 来表示对于 x 0 x_0 x0 预测的部分predict,用 D t ( ϵ t θ ( x t ) ) D_t(\epsilon^{\theta}_t (x_t)) Dt(ϵtθ(xt)) 来表示对于 x 0 x_0 x0 的方向进行修正的部分。

在这里插入图片描述

由于Diffusion利用网络输出的结果是每一步的噪声 ϵ t θ \epsilon^{\theta}_t ϵtθ 这个噪声也可以看作是一种从 x t x_t xt x 0 x_0 x0 的方向信息。那么一种很直观的思路就是直接对Diffusion模型中利用神经网络输出的 ϵ t θ \epsilon^{\theta}_t ϵtθ 进行修正。

但是直接把这种修正的思路用在反向过程中,并不能达到很好的效果。因为 P t P_t Pt D t D_t Dt 两部分中 ϵ t θ \epsilon^{\theta}_t ϵtθ 的改变会相互抵消。作者用一个Theorem来描述这种情况。

在这里插入图片描述

证明过程如下:
在这里插入图片描述

以1000步的DDPM为例, β \beta β线性的从0.0001增大到0.02,分别取DDIM的 η = 0 \eta = 0 η=0 η = 1.0 \eta = 1.0 η=1.0。当 η = 1.0 \eta = 1.0 η=1.0 也就对应于DDPM的采样过程。把 △ ϵ \triangle \epsilon ϵ 前的参数输出可视化:

在这里插入图片描述

在这里插入图片描述

从图中可以看出,这个参数基本上是 1 0 − 2 ∼ 1 0 − 3 10^{-2} \sim 10^{-3} 102103 数量级的。作者额外补充了实验证明这一点, 如图所示,(a)中的是利用原始DDIM采样得到的结果,而(b)中则是对 P t P_t Pt D t D_t Dt 中的 ϵ t θ \epsilon^{\theta}_t ϵtθ 同时加上一个随机的扰动 z z z,即 ϵ ~ t θ = ϵ t θ + z \tilde{\epsilon}^{\theta}_t = \epsilon^{\theta}_t + z ϵ~tθ=ϵtθ+z 采样得到的结果,可以看出二者几乎一样。

在这里插入图片描述

2.1 Asymmetric Reverse Process

为了解决上面提到的两相抵消的问题,作者提出了非对称的反向过程,也就是只在 P t P_t Pt 部分加入对 ϵ t θ \epsilon^{\theta}_t ϵtθ 的调整信息 △ ϵ \triangle \epsilon ϵ ϵ ~ t θ = ϵ t θ + △ ϵ \tilde{\epsilon}^{\theta}_t = \epsilon^{\theta}_t + \triangle \epsilon ϵ~tθ=ϵtθ+ϵ

在这里插入图片描述

同时,为了达到编辑图像的效果,作者用CLIP loss来约束额外加入的调整信息 △ ϵ \triangle \epsilon ϵ

在这里插入图片描述

其中 P t e d i t P_t^{edit} Ptedit 表示加入了 △ ϵ \triangle \epsilon ϵ 预测得到的 x 0 x_0 x0, 而 P t s o u r c e P_t^{source} Ptsource 表示未加入 △ ϵ \triangle \epsilon ϵ (也即按照原始DDIM)得到的预测的 x 0 x_0 x0。相应的CLIP loss就是在约束这二者的差别要和文本 y r e f , y s o u r c e y^{ref}, y^{source} yref,ysource 对应的差别要一致。同时,为了避免图像在想要编辑的内容之外有太大的变动,在CLIP loss之外加入了对于图像内容保持的损失。

2.2 h-space

考虑到现有的几乎所有的Diffusion模型都用了UNet的结构,为了降低输入的规模,提高效率,同时在提高编辑的质量。作者不在 ϵ t θ \epsilon^{\theta}_t ϵtθ 的原始空间做语义的编辑,而是在UNet的bottle-neck,也就是最深层的特征 h t h_t ht 来进行编辑。这个空间称作 h-space

在这里插入图片描述

这样的设计有如下优点:

在这里插入图片描述

2.3 Implicit Neural Directions

这个部分很简单,也就是说,作者用一个简单的网络 f t f_t ft 接受bottle-neck feature h t h_t ht 和 时间步 t t t 作为输入,得到每一步需要的 △ h t \triangle h_t ht。于是 P t e d i t = P t ( ϵ t θ ( x t ∣ f t ) ) P_t^{edit} = P_t (\epsilon_t^{\theta}(x_t | f_t)) Ptedit=Pt(ϵtθ(xtft))

这个简单的网络可以不在所有的时间步上进行训练,而是在DDIM挑好的简化的步数上进行训练,从而降低训练时间。

3. Generative Process Design

这个部分将上一部分作者提出的编辑方法如何在实际的Diffusion模型中应用做了系统的描述。本文的方法主要是针对预训练好的Diffusion模型的反向采样过程进行改动,现有的Diffusion模型反向采样过程可以再early stage得到high-level context而在later stage得到fine details。因此作者将其分成三个阶段:
(1)在第一个阶段 [ T , t e d i t ] [T, t_{edit}] [T,tedit] 利用Asyrp进行编辑;
(2)第二阶段 [ t e d i t , t b o o s t ] [t_{edit}, t_{boost}] [tedit,tboost] 则是用DDIM的采样方法,但是 η = 0 \eta = 0 η=0 ,这样可以保持图像的内容尽可能保持不变;
(3)第三阶段 [ t b o o s t , 0 ] [t_{boost}, 0] [tboost0] 则是用DDIM的采样方法,但是 η = 1 \eta = 1 η=1 ,这样可以提高得到的最终结果的质量;

在这里插入图片描述

那么现在的问题就是如何确定两个分界点 t e d i t , t b o o s t t_{edit}, t_{boost} tedit,tboost

在这里插入图片描述

作者利用LPIPS来衡量editing strength和quality deficiency,从而达到既能够达到很好的编辑效果,又不会导致图像质量下降太多。

对于 t e d i t t_{edit} tedit,作者设计 t e d i t t_{edit} tedit 能够使得 L P I P S ( x , P t e d i t ) = 0.33 LPIPS(x, P_{t_{edit}}) = 0.33 LPIPS(x,Ptedit)=0.33, 这样可以有最小的editing interval,同时有足够强的editing strength。同时为了使得这个 t e d i t t_{edit} tedit 可以适用于多种地方,作者加入了基于CLIP的cosine距离项, L P I P S ( x , P t e d i t ) = 0.33 − δ LPIPS(x, P_{t_{edit}}) = 0.33 - \delta LPIPS(x,Ptedit)=0.33δ 其中 δ = 0.33 d ( E T ( y s o u r c e ) , E T ( y t a r g e t ) ) \delta = 0.33 d(E_T(y_{source}), E_T(y_{target})) δ=0.33d(ET(ysource),ET(ytarget)) d d d就表示两者的cosine距离。

对于 t b o o s t t_{boost} tboost,作者设计 L P I P S ( x , x t ) = 1.2 LPIPS(x, x_t) = 1.2 LPIPS(x,xt)=1.2 即为 t b o o s t t_{boost} tboost

4. Experiments

图像编辑效果
在这里插入图片描述

h-space的线性性质
在这里插入图片描述

更多实验结果见原文。

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

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

相关文章

C++模拟OpenGL库——图片处理及纹理系统(三):图片缩放操作:简单插值二次线性插值

目录 简单插值 二次线性插值 简单插值 如图,我们想把一张小图缩放成一张大图,自然的想法就是按照它们的长宽比例进行缩放(zoomX)。 但是问题也显而易见,在缩放的过程中,小图的像素并不能一一映射到大图的…

蜂巢能源冲刺科创板上市:拟募资150亿元,上半年收入37亿元

11月18日,蜂巢能源科技股份有限公司(下称“蜂巢能源”)在上海证券交易所递交招股书,准备在科创板上市。本次冲刺科创板上市,蜂巢能源计划募资150亿元,主要用于动力锂离子电池项目、研发中心建设项目等。 据…

Unity游戏Mod/插件制作教程02 - 开发环境准备

前言 虽然本教程的目标读者是有C#基础的玩家,但是作为流程,基础的开发软件部分我还是要记录一下。 安装VisualStudio VisualStudio是我们开发插件最重要的工具,也许你习惯其他开发.net的工具,但是免费的VisualStudio已经足够好用…

王道OS 1.1_1 操作系统的概念、功能和目标

王道OS 1.1_1 操作系统的概念、功能和目标 chap1 计算机系统概述 参考资料 B站王道考研操作系统概念 第9版 (原书、译本) 好久没有写博客总结整理和输出了,学习的惰性在一次次的考试周从零开始的经历中达到了巅峰,现在想重振旗鼓…

换工作有感

最近很长一段时间没有更新博客,更新关于vim相关的操作,主要是最近在忙于换工作的事情。其实本来我也没打算换工作的,主要是最近公司的一些骚操作让我觉得心里很不爽,所以一怒之下提出离职。 背景 先来说说这个事情的背景吧&#…

2022年 SecXOps 安全智能分析技术白皮书 附下载地址

近年来,互联网、大数据和人工智能 等技术都得到了飞速的发展,网络攻击的方法也越来越复杂,过去广泛、漫无目的的攻击威胁,在数年内迅速地转化为有目标、有组织、长期 潜伏的多阶段组合式高级可持续威胁(Advanced Persi…

计算机网络——第五章网络层笔记(5)

网络地址翻译(NAT) Private IP address:不可路由的地址、也可用于广域网链路上 NAT:net address translate 私有IP地址和公有IP地址之间的转换。 PAT:port address translate 将多个私有IP地址影射到同一个公有IP地址的不同…

跑步时戴什么耳机好、分享五款最适合跑步的运动耳机排名清单

在进行户外跑步、骑行等运动,往往会感到枯燥乏味,很难坚持下去,就像我经常跑一圈就觉得没了动力,但是当我戴上耳机听音乐跑步时,不知不觉就结束了,就感觉时间过得很快。不过话有说回来,适合跑步…

【JVM】jvm的体系结构

JVM体系结构如下图所示: JVM大致可以分为五大模块: 类加载子系统(Class Loader SubSystem)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)Java本地接口(Ja…

Java native关键字 实现

需要用到gcc mingw64: 下载安装MinGW-w64详细步骤(c/c的编译器gcc的windows版,win10真实可用)_jjxcsdn的博客-CSDN博客_mingw-w64 我也是根据上面地址安装的 在d盘创建一个.java文件 编写内容 testInt方法用 native关键字修饰 静态块里需要…

Tauri 打包

1、第一次打包运行命令 npm run tauri build 2、可能会出现下面问题 我们需要在tauri.conf.json里面查找identifier这个名称 原来是com.tauri.dev 随便改下名字,我这里改成build了 3、修改配置后,继续打包又出现问题,如下图 我们就单独去下…

Google Earth Engine(GEE)——join连接在GEE中的应用(同一sentinel-2影像集合)含滑动窗口平滑影像过程

JOIN联接允许您根据一个或多个条件组合不同的集合。 ImageCollection 到 ImageCollection 在数据融合中很有用(从不同的数据集中找到匹配的图像) FeatureCollection 到 ImageCollection 用于数据提取(在多个位置提取图像) FeatureCollection 到 FeatureCollection 在地理处…

公式编辑器Axmath+公式识别器SimpleTex+Markdown编辑器Typora

Ⅰ.公式编辑器Axmath 下载方式: ①百度网盘:https://pan.baidu.com/share/init?surlUWHIHWJHm-mC5q5LUCyEuA 提取码:1r2a ②城通网盘:https://url86.ctfile.com/f/32005086-727935308-6024d8?p5422 访问码:5422 软件…

Cellular/Wifi/Bluetooth频率

Cellular NR频率 3GPP R17定义的NR FR1频段如下表: 图片来自于38.101国内常用FDD频段: n1: 2100MHz~2170MHz,共79MHz带宽 n3: 1805MHz~1880MHz,共75MHz带宽 n5: 869MHz~894MHz,共25MHz带宽 n8: 925MHz~960MHz&…

【Redis-03】Redis数据库的实现原理

在之前的文章我们介绍过,Redis服务器在启动之初,会初始化RedisServer的实例,在这个实例中存在很多重要的属性结构,同理本篇博客中介绍的数据库实现原理也会和其中的某些属性相关,我们继续看一下吧。 1.服务器和客户端…

基于改进萤火虫算法的图像分割的应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

可执行文件的装载与进程

进程虚拟地址空间 每个程序被运行起来以后,它将拥有自己独立虚拟空间地址,这个虚拟地址空间的大学由计算机的硬件平台决定,具体地说是由CPU的位数决定。硬件决定了地址空间的最大理论上限,即硬件的寻址空间大小,比如32…

欢迎使用Markdown编辑器

欢迎使用Markdown编辑器欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

HTML的常用结构标签(详细)

1.文本标题 &#x1f340; <h1> </h1>~~~<h6> </h6>,从h1到h6字体由大到小 2.段落 &#x1f340; <p> </p> 3.加粗 &#x1f340; <b> </b> 和 <strong> </strong> 4.倾斜 &#x1f340; <i></i&…

[MQ] SpringBoot使用扇型(广播)交换机/主题交换机

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…