Stable diffusion文生图大模型——隐扩散模型原理解析

2024-06-04 05:52

本文主要是介绍Stable diffusion文生图大模型——隐扩散模型原理解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、前言

本篇文章,我们将讲这些年非常流行的文生图大模型——Stable Diffusion。该模型也不难,甚至说很简单。创新点也相对较少,如果你学会了我以前的文章讲过的模型,学习这个也自然水到渠成!

参考论文:High-Resolution Image Synthesis with Latent Diffusion Models (arxiv.org)

官方代码:GitHub - CompVis/latent-diffusion: High-Resolution Image Synthesis with Latent Diffusion Models

视频:[Stable diffusion生成大模型——隐扩散模型原理解析-哔哩哔哩]

演示:

在这里插入图片描述

2、Stable Diffusion

2.1、隐空间扩散

在传统的扩散模型中,都是一上来就对图像就行加噪去噪。这种做法有一些难以避免的问题——效率。一方面,图像的像素如果非常大,那么计算量将是难以想象地;另一方面,我们在VAE那里说到过,图像之中,总是存在一些冗余地部分。我们直接拿图像去扩散,相当于也把那些冗余的部分也一起计算了。

所以,作者选择先把图像编码成一个维度相对较小的编码向量(或特征图)。然后再训练扩散模型

那么,该如何进行编码呢?答案就是使用VAE(详细请看VAE变分自编码器原理)。总所周知,使用VAE可以把图像编码成维度相对较小的向量(或特征图)

除此之外,就是使用离散化的编码器——VQGAN(详细请看VQGAN原理解析)

这两种方法,都可以进行图像的压缩。压缩完成之后,在进行扩散过程

在这里插入图片描述

其中编码器对应图中的 E \mathcal{E} E,解码器对应 D \mathcal{D} D。也就是说,先把图像x通过 E \mathcal{E} E进行编码,再进行Diffusion Process

2.2、条件生成

如果你用过Stable Diffusion。就必然知道它可以进行条件生成。那么该如何把条件引入Diffusion里面呢?在Diffusion系列里面,我其实从没有讲过如何进行条件生成。

其实进行条件生成有一个很简单的理解方式。那就是直接采用下面的损失函数
L = ∣ ∣ ϵ − ϵ θ ( x t , t , y ) ∣ ∣ 2 (1) L=||\epsilon-\epsilon_\theta(x_t,t,y)||^2\tag{1} L=∣∣ϵϵθ(xt,t,y)2(1)
为什么可以这样?我们回忆一下DDPM里面的损失函数
L = ∣ ∣ ϵ − ϵ θ ( x t , t ) ∣ ∣ 2 (2) L=||\epsilon-\epsilon_\theta(x_t,t)||^2\tag{2} L=∣∣ϵϵθ(xt,t)2(2)
区别在哪里,那就是Eq.(1)里面神经网络的输入多加了一个条件y。这个条件y可以是标签,文本等等信息。

为什么多加了一个y就可以进行条件生成?

我们从一个比较简单的方面的来理解。在DDPM里面,我们层提到三种预测方式——均值、原始图像,噪声

我们最终只使用噪声而已。那假如我们预测的是原始图像呢?
L = ∣ ∣ x 0 − x θ ( x t , t ) ∣ ∣ 2 L=||x_0-x_\theta(x_t,t)||^2 L=∣∣x0xθ(xt,t)2
如果我们加入一个条件y
L = ∣ ∣ x 0 − x θ ( x t , t , y ) ∣ ∣ 2 L=||x_0-x_\theta(x_t,t,y)||^2 L=∣∣x0xθ(xt,ty)2
加入的一个条件y(比如假设它是图像的类别标签),这就意味着什么呢?意味着我们告诉了神经网络图像 x 0 x_0 x0的类别是什么。那么让神经网络去预测 x 0 x_0 x0,肯定会相对容易,因为神经网络已经知道了图像的类别,排除了其他类别图像的可能。

所以,对于预测噪声也是同理。那么Eq.(1)也是同理,加入一个条件y。更加有利于去噪。

2.3、损失函数和网络结构

对于DIffusion的网络结构,其实我从来没说过。我只讲了用神经网络去预测噪声。对网络结构这些东西,我以后打算出一个单独的系列来讲。

现在主要讲模型原理。但为了完整性。我还是简单讲一下吧。万一有些读者已经有这些方面的基础呢

那么网络的结构该如何呢?在DDPM中,其实用的是U-Net结构的神经网络去预测噪声。在Stable Diffusion里面的,也沿用了这个结构。

我们前面说过,要给预测噪声的神经网络加入条件。但我们不是纯粹的把条件直接送进去。而是对条件进行编码表征之后再送进去。我们用 T θ ( y ) \mathcal{T}_\theta(y) Tθ(y)表示把条件编码成对应的中间表征。所以损失函数变成了这样
L L D M = E E ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∣ ∣ ϵ − ϵ θ ( z t , t , T θ ( y ) ∣ ∣ 2 ] L_{LDM}=\mathbb{E}_{{\mathcal{E}(x)},\epsilon\sim \mathcal{N}(0,1),t}\left[||\epsilon-\epsilon_\theta(z_t,t,\mathcal{T}_\theta(y)||^2\right] LLDM=EE(x),ϵN(0,1),t[∣∣ϵϵθ(zt,t,Tθ(y)2]
其中, z t z_t zt E \mathcal{E} E编码得到图像加噪之后的结果。t代表时刻。

除此之外,如果你看了上面那张图,就能看到有一个Q,K,V的东西。那其实自注意力机制。这玩意儿是Transformer里面的。原本属于自然语言处理那边的。我打算以后分出一个系列讲自然语言处理。

在这里我简单讲一下,如果你会Transformer,应该不会陌生。如果不会,你听了估计也不会明白,我在这里不深入讲。讲到自然语言处理再讲

下面我们来简单过一下。对于里面的Q,K,V。计算如下
Q = W Q ( i ) ⋅ ϕ i ( z t ) , K = W k ( i ) ⋅ T θ ( y ) , V = W V ( i ) ⋅ T θ ( y ) Q=W^{(i)}_Q\cdot\phi_i(z_t),K=W_k^{(i)}\cdot \mathcal{T}_\theta(y),V=W_V^{(i)}\cdot\mathcal{T_{\theta}}(y) Q=WQ(i)ϕi(zt),K=Wk(i)Tθ(y),V=WV(i)Tθ(y)
其中, ϕ i ( z t ) \phi_i(z_t) ϕi(zt)是预测 ϵ θ \epsilon_\theta ϵθ的U-Net的中间表征。

那么,里面的 T θ \mathcal{T}_\theta Tθ究竟是什么呢?这要看具体情况,要根据具体特定领域而选择。比如当y是文本时,我们可以使用Transformer,或者使用CLIP等等。要根据具体情况而定。

2.4、训练

对于Stable Diffusion的训练。DIffusion和编码解码部分,并不是并行训练。

而是先训练好一个编码器和解码器。然后在训练Diffusion。对于条件的编码,一般情况下也是要一个训练好的,而不是跟着Diffusion一起训练。

2.5、采样

很简单,从高斯分布中采样一个 z T z_T zT,然后设置条件。慢慢去噪。到了 z 0 z_0 z0之后,使用解码器,就可以得到图像

3、结束

本篇文章到此结束,如有问题,还望指出。阿里嘎多!

在这里插入图片描述

这篇关于Stable diffusion文生图大模型——隐扩散模型原理解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029238

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

解析 XML 和 INI

XML 1.TinyXML库 TinyXML是一个C++的XML解析库  使用介绍: https://www.cnblogs.com/mythou/archive/2011/11/27/2265169.html    使用的时候,只要把 tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

tf.split()函数解析

API原型(TensorFlow 1.8.0): tf.split(     value,     num_or_size_splits,     axis=0,     num=None,     name='split' ) 这个函数是用来切割张量的。输入切割的张量和参数,返回切割的结果。  value传入的就是需要切割的张量。  这个函数有两种切割的方式: 以三个维度的张量为例,比如说一

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

模型压缩综述

https://www.cnblogs.com/shixiangwan/p/9015010.html

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

AI赋能天气:微软研究院发布首个大规模大气基础模型Aurora

编者按:气候变化日益加剧,高温、洪水、干旱,频率和强度不断增加的全球极端天气给整个人类社会都带来了难以估计的影响。这给现有的天气预测模型提出了更高的要求——这些模型要更准确地预测极端天气变化,为政府、企业和公众提供更可靠的信息,以便做出及时的准备和响应。为了应对这一挑战,微软研究院开发了首个大规模大气基础模型 Aurora,其超高的预测准确率、效率及计算速度,实现了目前最先进天气预测系统性能的显著