【论文系列解读】StableDiff总结

news2024/9/25 17:20:14

1. diffusion

(0) 总结

可以参考此处:https://blog.csdn.net/weixin_40920183/article/details/130652651

https://zhuanlan.zhihu.com/p/599887666

总的来说,diffusion就是分为训练和采样两个阶段。

(A)训练阶段:其中,训练阶段的目标是将加噪后的隐向量输入到UNetModel 来输出预估噪声,和真实噪声信息标签(初始化使用随机高斯噪声Gaussian Noise)作比较来计算 KL 散度 loss,并通过反向传播算法更新 UNetModel 模型参数;引入文本向量 context 后,UNetModel 在训练时把其作为 condition,利用注意力机制(具体来说就是把文本特征作为V时序信息作为KUNet中间层的输出作为Q,然后计算这样的跨模态注意力图,从而将文本信息融入到图像中)来更好地引导图像往文本向量方向生成。注意,这个阶段的目标是学习将加噪后的图片,与真实噪声尽可能地相近,目标就是要让图片最后变成一个高斯分布的噪声。注意,这个过程会记录下每一步图片->加噪图片的参数信息,在之后的采样阶段,这些可学习参数将会被直接用来进行反向推理。注意,加噪100步,那么100个时间步的噪声是一次性都加入进去的!只不过一次迭代是不足以完成加噪学习过程,需要进行很多次迭代。此外,训练过程的Steptime,时使用随机步长的!避免陷入局部最优!

小细节:(1)用 AutoEncoderKL 自编码器把输入图片从像素空间映射到隐向量空间,把 RGB 图片转换到隐式向量表达。其中,在训练 Unet 时自编码器参数已经训练好和固定的,自编码器把输入图片张量进行降维得到隐向量。(2)用 FrozenCLIPEmbedder 文本编码器来编码输入提示词 Prompt,生成向量表示 context,这里需要规定文本最大编码长度向量嵌入大小。(CLIP是一个图像-文本预训练模型:根据从网络上抓取的图像及其文字说明进行训练的。CLIP 是图像编码器和文本编码器的组合,它的训练过程可以简化为给图片加上文字说明)

(B)采样阶段:采样阶段就是将随机种子产生的随机噪声+ FrozenCLIPEmbedder 文本编码器把输入提示词 Prompt 得到的编码,然后送入训练好的UNetModel 模型,结合不同采样器(如 DDPM/DDIM/PLMS)迭代 T 次不断去除噪声,得到具有文本信息的隐向量表征。用 AutoEncoderKL 自编码器把上面得到的图像隐向量进行解码,得到被映射到像素空间的生成图像。注意,这里有个很核心的理论就是,逆向过程也服从高斯分布。

一般默认20步即可得到预期效果。采样过程就是将训练阶段得到的可学习参数 ε ε ε 直接应用在这个噪声数据上,通过贝叶斯法则,重参数技巧,大概简化即为 x 0 x_0 x0 * ε 1 ε_1 ε1 即可得到 x 1 x_1 x1 如此迭代下去,最后得到 x n x_n xn 即满意的效果图。

小细节:稳定扩散算法最适用于处理高斯噪声和一些常见的图像生成和处理任务。当你使用其他类型的噪声时(伯努利分布,二项分布,泊松分布,Gamma分布,均匀分布,指数分布),算法的效果可能会有所下降,因此可能需要进行适当的调整和改进。具体来说,如果高斯噪声改变,比如在你做的分子生成任务中,那么是要达到某种目的的,比如旋转平移不变性,那么噪声的均值和方差会改变,得到的生成结果也会具有和噪声一样的性质的结果。自然图像中就是高斯分布,所以没必要更改均值和方差,改了的话对于损失函数就要更改,比如KL散度的平方。

(0-1) 文本到图像生成(Stable Diffusion)

High-Resolution Image Synthesis with Latent Diffusion Models(Latent Diffusion Models) CVPR2022

Stable diffusion是一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型。具体来说,得益于Stability AI的计算资源支持和LAION的数据资源支持,Stable Diffusion在LAION-5B的一个子集上训练了一个Latent Diffusion Models,该模型专门用于文图生成。

核心创新点:通过构建latent-diffusion-model(LDM) ,解决了之前直接在高维度特征建立扩散模型带来的资源消耗和精度限制 ,在多类下游任务中都实现了State-of-the-art。

(1)贡献:

  • Diffusion model相比GAN可以取得更好的图片生成效果,然而该模型是一种自回归模型,需要反复迭代计算,因此训练和推理代价都很高。论文提出一种在潜在表示空间(latent space)上进行diffusion过程的方法,从而能够大大减少计算复杂度,同时也能达到十分不错的图片生成效果。
  • 相比于其它空间压缩方法(如),论文提出的方法可以生成更细致的图像,并且在高分辨率图片生成任务(如风景图生成,百万像素图像)上表现得也很好。
  • 论文将该模型在无条件图片生成(unconditional image synthesis), 图片修复(inpainting),图片超分(super-resolution)任务上进行了实验,都取得了不错的效果。
  • 论文还提出了cross-attention的方法来实现多模态训练,使得条件图片生成任务也可以实现。论文中提到的条件图片生成任务包括类别条件图片生成(class-condition), 文图生成(text-to-image), 布局条件图片生成(layout-to-image)。这也为日后Stable Diffusion的开发奠定了基础。

(2)模型细节:

1682566430939

Latent Diffusion Models整体框架如图,首先需要训练好一个自编码模型(AutoEncoder,包括一个编码器 E \mathcal{E} E 和一个解码器 D \mathcal{D} D)。这样一来,我们就可以利用编码器对图片进行压缩,然后在潜在表示空间上做diffusion操作,最后我们再用解码器恢复到原始像素空间即可,论文将这个方法称之为感知压缩(Perceptual Compression)。个人认为这种将高维特征压缩到低维,然后在低维空间上进行操作的方法具有普适性,可以很容易推广到文本、音频、视频等领域。

潜在表示空间上做diffusion操作其主要过程和标准的扩散模型没有太大的区别,所用到的扩散模型的具体实现为 time-conditional UNet。但是有一个重要的地方是论文为diffusion操作引入了条件机制(Conditioning Mechanisms),通过cross-attention的方式来实现多模态训练,使得条件图片生成任务也可以实现

(0-2) 图片感知压缩(Perceptual Image Compression)

感知压缩本质上是一个tradeoff,之前的很多扩散模型没有使用这个技巧也可以进行,但原有的非感知压缩的扩散模型有一个很大的问题在于,由于在像素空间上训练模型,如果我们希望生成一张分辨率很高的图片,这就意味着我们训练的空间也是一个很高维的空间

引入感知压缩就是说通过VAE这类自编码模型对原图片进行处理,忽略掉图片中的高频信息,只保留重要、基础的一些特征。这种方法带来的的好处就像引文部分说的一样,能够大幅降低训练和采样阶段的计算复杂度,让文图生成等任务能够在消费级GPU上,在10秒级别时间生成图片,大大降低了落地门槛。

感知压缩主要利用一个预训练的自编码模型,该模型能够学习到一个在感知上等同于图像空间的潜在表示空间。这种方法的一个优势是只需要训练一个通用的自编码模型,就可以用于不同的扩散模型的训练,在不同的任务上使用。这样一来,感知压缩的方法除了应用在标准的无条件图片生成外,也可以十分方便的拓展到各种图像到图像(inpainting,super-resolution)和文本到图像(text-to-image)任务上。

由此可知,基于感知压缩的扩散模型的训练本质上是一个两阶段训练的过程,第一阶段需要训练一个自编码器,第二阶段才需要训练扩散模型本身。在第一阶段训练自编码器时,为了避免潜在表示空间出现高度的异化,作者使用了两种正则化方法,一种是KL-reg,另一种是VQ-reg,因此在官方发布的一阶段预训练模型中,会看到KL和VQ两种实现。在Stable Diffusion中主要采用 AutoEncoderKL这种实现。

具体来说,给定图像 x ∈ R H × W × 3 x \in \mathbb{R}^{H \times W \times 3} xRH×W×3 ,我们可以先利用一个编码器 E \mathcal{E} E 来将图像编码到潜在表示空间 z = E ( x ) z=\mathcal{E}(x) z=E(x) ,其中 z ∈ R h × w × c z \in \mathbb{R}^{h \times w \times c} zRh×w×c ,然后再用解码器从潜在表示空间重建图片 x ~ = D ( z ) = D ( E ( x ) ) \tilde{x}=\mathcal{D}(z)=\mathcal{D}(\mathcal{E}(x)) x~=D(z)=D(E(x)) 。在感知压缩压缩的过程中,下采样因子的大小为 f = H / h = W / w f=H / h=W / w f=H/h=W/w ,它是2的次方,即 f = 2 m f=2^{m} f=2m

(0-3) 潜在扩散模型(Latent Diffusion Models)

首先简要介绍一下普通的扩散模型(DM),扩散模型可以解释为一个时序去噪自编码器(equally weighted sequence of denoising autoencoders) ϵ θ ( x t , t ) ; t = 1 … T \epsilon_{\theta}\left(x_{t}, t\right) ; t=1 \ldots T ϵθ(xt,t);t=1T ,其目标是根据输入 x t x_{t} xt 去预测一个对应去噪后的变体,或者说预测噪音,其中 x t x_{t} xt 是输入 x x x 的噪音版本。相应的目标函数可以写成如下形式:
L D M = E x , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 2 ] L_{D M}=\mathbb{E}_{x, \epsilon \sim \mathcal{N}(0,1), t}\left[\left\|\epsilon-\epsilon_{\theta}\left(x_{t}, t\right)\right\|_{2}^{2}\right] LDM=Ex,ϵN(0,1),t[ϵϵθ(xt,t)22]
其中 t t t { 1 , … , T } \{1, \ldots, T\} {1,,T} 中均匀采样获得。

而在潜在扩散模型(LDM)中,引入了预训练的感知压缩模型,它包括一个编码器 E \mathcal{E} E 和一个解码器 D \mathcal{D} D 。这样就可以利用在训练时就可以利用编码器得到 z t z_{t} zt,从而让模型在潜在表示空间中学习,相应的目标函数可以写成如下形式:
L L D M = E E ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t ) ∥ 2 2 ] L_{L D M}=\mathbb{E}_{\mathcal{E}(x), \epsilon \sim \mathcal{N}(0,1), t}\left[\left\|\epsilon-\epsilon_{\theta}\left(z_{t}, t\right)\right\|_{2}^{2}\right] LLDM=EE(x),ϵN(0,1),t[ϵϵθ(zt,t)22]

(0-4) 条件机制(Conditioning Mechanisms)

除了无条件图片生成外,我们也可以进行条件图片生成,这主要是通过拓展得到一个条件时序去噪自编码器(conditional denoising autoencoder) ϵ θ ( z t , t , y ) \epsilon_{\theta}\left(z_{t}, t, y\right) ϵθ(zt,t,y) 来实现的,这样一来我们就可通过 y y y 来控制图片合成的过程。具体来说,论文通过在UNet主干网络上增加cross-attention机制来实现 ϵ θ ( z t , t , y ) \epsilon_{\theta}\left(z_{t}, t, y\right) ϵθ(zt,t,y) 。为了能够从多个不同的模态预处理 y y y ,论文引入了一个领域专用编码器(domain specific encoder) τ θ \tau_{\theta} τθ ,它用来将 y y y 映射为一个中间表示 τ θ ( y ) ∈ R M × d τ \tau_{\theta}(y) \in \mathbb{R}^{M \times d_{\tau}} τθ(y)RM×dτ ,这样我们就可以很方便的引入各种形态的条件(文本、类别、layout等等)。最终模型就可以通过一个cross-attention层映射将控制信息融入到UNet的中间层,cross-attention层的实现如下:
Attention ⁡ ( Q , K , V ) = softmax ⁡ ( Q K T d ) ⋅ V ,  with  Q = W Q ( i ) ⋅ φ i ( z t ) , K = W K ( i ) ⋅ τ θ ( y ) , V = W V ( i ) ⋅ τ θ ( y ) \begin{array}{l} \operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d}}\right) \cdot V, \text { with } \\ Q=W_{Q}^{(i)} \cdot \varphi_{i}\left(z_{t}\right), K=W_{K}^{(i)} \cdot \tau_{\theta}(y), V=W_{V}^{(i)} \cdot \tau_{\theta}(y) \end{array} Attention(Q,K,V)=softmax(d QKT)V, with Q=WQ(i)φi(zt),K=WK(i)τθ(y),V=WV(i)τθ(y)

(1) 摘要

通过将图像形成过程分解为去噪自编码器的顺序应用,扩散模型(DMs)在图像数据和其他数据上实现了最先进的合成结果。此外,它们的配方允许一个指导机制来控制图像生成过程,而无需再训练。然而,由于这些模型通常直接在像素空间中操作,因此优化功能强大的dm通常会消耗数百个GPU天,并且由于顺序评估而导致推理成本高昂。为了使DM训练在有限的计算资源上同时保持其质量和灵活性,我们将它们应用于强大的预训练自编码器的潜在空间。与之前的工作相比,在这种表示上训练扩散模型可以首次在复杂性降低和细节保存之间达到近乎最佳的点,极大地提高了视觉保真度。通过在模型架构中引入交叉注意层,我们将扩散模型转变为强大而灵活的生成器,用于一般条件输入(如文本或边界框),并以卷积方式实现高分辨率合成。我们的潜在扩散模型(ldm)在图像绘制类别条件图像合成方面取得了最新的技术水平,并在各种任务上表现出极具竞争力的性能,包括无条件图像生成、文本到图像合成和超分辨率,同时与基于像素的DMs相比,显著降低了计算需求

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

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

相关文章

spring boot security快速使用示例

创建spring boot项目 生成脚手架 登录 https://start.spring.io/ 快速创建一个spring boot脚手架的demo&#xff1a; 配置依赖 因为本地依赖的原因&#xff0c;所以更换了spring boot版本为&#xff1a;2.6.11 <parent><groupId>org.springframework.boot<…

GC垃圾回收

GC垃圾回收 了解什么是垃圾回收掌握垃圾会回收的常见算法学习串行、并行、并发、G1垃圾收集器学习GC日志的可视化查看 1.什么是垃圾回收&#xff1f; 程序的运行必然需要申请内存资源&#xff0c;无效的对象资源如果不及时处理就会一直占有内存资源&#xff0c;最终将导致内…

设计模式(二十一):行为型之访问者模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

Debian openssh-server 的安装

在之前安装系统的时候有一个安装 SSH 服务的&#xff0c;结果没点上&#xff0c;导致系统完成后&#xff0c;ssh无法连接上啊&#xff0c;于是要安装sshd 服务。使用命令&#xff1a;apt-get install openssh-server 结果就出现问题了&#xff1a; 网上搜索说是要更新源&#x…

004 maven 插件默认的

Maven – Guide to Configuring Plug-inshttps://maven.apache.org/guides/mini/guide-configuring-plugins.html 默认插件 参数 Apache Maven Compiler Plugin – compiler:compilehttps://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#forceJavacCom…

MATLAB读取OpenFOAM的二进制文件

OpenFOAM的文件格式 上面是OpenFOAM二进制文件的格式&#xff0c;我们可以看出&#xff0c;前面21行都是无关的说明文件&#xff0c;22开始时除了一个括号之外&#xff0c;其它的都是数据。 读取数据 读取数据的思路非常简单&#xff0c;忽略不需要的&#xff0c;读取需要的。…

第七十七天学习记录:高等数学:定积分应用(宋浩板书)

定积分是微积分的一种应用&#xff0c;通过定积分可以求出曲线下面的面积、弧长、质心、转动惯量等一系列物理量。以下是定积分的一些常见应用&#xff1a; 曲线下面的面积&#xff1a;定积分可以用于求曲线下面的面积。举个例子&#xff0c;如果想要求函数f(x) x^2在区间[0,1…

VFC芯片结构及其工作原理

&#xff08;二&#xff09; VFC芯片结构及其工作原理 1&#xff0e;VFC芯片 AD654的结构 AD654芯片是一个单片VFC变换芯片&#xff0c;中心频率为250kHZ。它是由阻抗变换器A、压控振荡器和一个驱动输出级回路构成&#xff0c;其内部结构见图1&#xff0d;15&#xff08;a入压…

VFC式数据采集系统

三、VFC式数据采集系统 &#xff08;一&#xff09;VFC型的A&#xff0f;D变换概述 一般来说在 A&#xff0f;D的变换过程中&#xff0c; CPU要使 S&#xff0f;H、 MPX、 A&#xff0f;D三个芯片之间控制协调好&#xff0c;因此接口电路复杂。而且ADC芯片结构较复杂&#xff0…

车载软件架构 —— 闲聊几句AUTOSAR OS(五)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最…

Nature揭示--迷幻药物如何实现其强大的健康益处

迷幻药物MDMA&#xff08;也称为摇头丸&#xff09;的结晶&#xff0c;可以恢复小鼠从环境中学习特定方面的能力。图片来源&#xff1a; Police Scotland/Contraband Collection/Alamy 迷幻药物是一类能够引起意识状态改变的药物&#xff0c;被广泛应用于精神和医疗领域。尽管迷…

【简单便捷】解决Ubuntu内存不足问题:Ubuntu16.0.4 进行内存扩容

文章目录 电脑环境前言一、总述二、先在标题&#xff1a;虚拟机-->设置上进行扩容三、扩容之后 打开终端 执行 sudo apt install gparted四、执行 sudo gparted五、扩容成功六、重启测试 可以看到大概率成功了。 电脑环境 Windows 11 专业版系统 前言 在开发初期&#xf…

232 · 短网址

链接&#xff1a;LintCode 炼码 题解&#xff1a; class TinyUrl { public:/** param url: a long url* return: a short url starts with http://tiny.url/*/string longToShort(string &url) {// write your code herestd::string shorturl generate_shorturl(url);whi…

为CentOs配置静态IP

目录 第一步&#xff1a;查看物理机IP 第二步&#xff1a;虚拟机网络设置 点击虚拟机->编辑虚拟机设置 第三步&#xff1a;CentOS网络配置文件 第四步&#xff1a;重启网络 第五步&#xff1a;测试网络 为什么要设置静态IP 在安装好CentOS虚拟机以后&#xff0c;一般我…

代码随想录算法训练营第三十九天| 62.不同路径 、63. 不同路径 II

不同路径 题目链接&#xff1a;力扣 题外话&#xff1a;这题拿到的时候就发现其实是小学三年级的奥数题&#xff0c;甚至寒假看我妹做过【笑哭&#x1f602;】 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0,0&…

nvm控制nodejs版本

1.关系如图 2. 环境配置 3.报错解决 路径导致的nvm安装nodejs失败&#xff1f; The system cannot find the path specified. Could not download node.js v16.19.1 64-bit executable. 解决&#xff1a;nvm安装路径D:\Program Files\nvm&#xff0c;nvm管理的nodejs路径D:\Pro…

在Qgis中使用QMetaTiles插件进行XYZ瓦片离线下载方法

目录 前言 一、Qgis插件库 1、插件库简介 2、QMetaTiles介绍 二、QMetaTiles插件安装 1、在线安装 2、离线安装 三、瓦片下载 1、打开QmeaTiles插件 2、Leaflet加载下载的瓦片 总结 前言 电子地图是地图类应用的基石&#xff0c;作为整个系统的基础。其它的图层要素都构…

Web应用技术(第八周/第4次练习/4h)

这一次练习对JSP和Servlet进行了补充学习 1.JSP的本质&#xff1a;2.include指令的作用&#xff1a;3.EL表达式语言与JSTL&#xff1a;关于EL表达式&#xff1a;&#xff08;1&#xff09;EL表达式用于取参数值与参数值的设定&#xff1a;&#xff08;2&#xff09;EL表达式的本…

【Redis】哨兵机制

一、哨兵机制高可用架构图 哨兵模式时给予主从模式的&#xff0c;是为了解决主从模式单点&#xff08;master&#xff09;故障导致服务不可用的问题&#xff0c;但并未解决单节点存储能力有限的问题。 二、心跳检测机制 三、 选举机制 主观下线&#xff1a;主服务器master宕机后…

html实现好看的个人介绍,个人主页模板4(附源码)

文章目录 1.设计来源1.1 主界面1.2 我的文章界面1.3 我的相册界面1.4 关于我界面1.5 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.2 源代码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/131265259 …