首页 > 其他分享 >Stable Diffusion文生图技术详解

Stable Diffusion文生图技术详解

时间:2024-12-11 15:47:33浏览次数:8  
标签:Diffusion 文生 生成 序列 Stable 空间 Net 向量

Stable Diffusion(SD模型),由Stability AI与LAION等机构合作研发,是一款功能强大的生成式模型,拥有约10亿(1B)参数。其应用广泛,包括但不限于文生图(txt2img)、图生图(img2img)及图像修复(inpainting)等功能。

 

这张图上来就给人看晕了,这个结构其实是Latent Diffusion(Stable Diffusion的前身)所提出来的结构。

在上半部分是训练模型相关的,简单来说就是在像素空间给一张正常的图片增加噪声,然后得到一张混乱噪声图片。

 

生成图片:

Pixel Space像素空间

就是平常所看到的正常图像,一张完整的画像。

在像素空间里有一个E去潜空间然后D回到像素空间,这个就是常说的VAE

VAE(Variational Autoencoder)是一种生成模型,通过编码器和解码器学习潜在空间的分布,用于生成数据。VAE在图像生成领域有着广泛的应用,通过学习图像数据的潜在空间分布,生成与训练集数据分布相近的新图像。

VAE相当于是潜空间和像素空间的桥梁

Conditioning条件:平常在进行图片生成时所输入的提示词(Text)或者图生图输入的图像(Image)都是在这里。

在输入Text的时候会传到潜空间的QKV

 

这个QKV(Query查询向量、Key键向量、Value值向量)

Q‌:表示当前位置需要关注的信息。每个注意力头都会根据输入序列生成自己的查询向量。Q向量用于与K向量进行相似度计算,已确定哪些值(V)应该被关注。

K‌:代表输入序列中每个元素的特征。每一个输入元素都有一个对应的K向量,Q与K的相似度决定了该元素对当前查询的重要性。

‌V‌:表示其他位置的实际内容。值向量用于生成最终的输出,根据查询向量和键向量的相似度加权求和V向量得到的,其中权重由Q和K的相似度决定。

 

在底下有个Corssattention也就是交叉注意力层。

交叉注意力(Cross-Attention)是一种注意力机制,用于处理两个不同序列之间的依赖关系。它允许一个序列通过注意力机制关注另一个序列,从而捕获两个序列之间的关系。这种机制在多模态任务(如图像和文本匹配)或序列到序列任务(如机器翻译)中应用广泛‌。

QKV所在的这整个结构叫做U-Net:

 

Denoising U-Net是指以U-Net为架构的去噪网络,用于从噪声中恢复图像,这一点看过超分放大笔记的小伙伴可能有点印象。

这个生成图片的全部过程都是在Latent Space潜空间里完成,潜空间可以理解为是一个压缩过的空间。

之所以用压缩过的空间是因为绝大部分家用电脑的算力是无法直接计算一张完整图片的,压缩后可以显著减少电脑的计算量。 

Clip(Text Encoder)文本编码器

现在Stable Diffusion基本上都是先输入一段文字→经过文本编码器后到U-Net(主要生成图片的部分)→U-Net生成的图片送到Vae里→正常图片。

所以文本编码器这个东西如果需要经常用的话也是需要训练到的。

Clip这个东西像是先输入一个词语例如1girl,然后这个词会经过Tokenize得到一组数字。

token很好理解就是我们常用的令牌,tokenize也就是令牌化:Tokenize是指将文本数据分割成一个个的令牌(tokens)的过程。‌这些令牌可以是关键字、变量名、字符串、直接量和大括号等语法标点。Tokenize的过程通常涉及将文本分解为更小的单元,以便于后续的处理和分析。

得到的这组数字会经过一个叫Embedding look up的东西,Embedding之前我们还学习过,在这里的Embedding指的是将高维数据映射到低维空间的技术,目的是将离散的、稀疏的数据转换为连续的、密集的向量表示,使得这些数据可以被机器学习或深度学习模型更好地处理和理解。

之后输入到Transormer最终得到一个生成条件,这个生成条件再去指导U-Net去生成一张图片。

简单来讲这个Clip的过程就是把人的语言通过一系列手段转换为这个模型能够理解的语言,文本编码器就相当于机器的翻译软件,能让机器听得懂人类要表达什么。

 

标签:Diffusion,文生,生成,序列,Stable,空间,Net,向量
From: https://www.cnblogs.com/gslsoft/p/18599757

相关文章