1.U-Net模型基础
1.基础概念
UNet模型是一种基于卷积神经网络的图像分割算法,它采用了U型的网络结构,由编码器(下采样路径)和解码器(上采样路径)两部分组成。
- 编码器负责提取输入图像的特征,
- 解码器则通过上采样操作将特征图恢复到原始输入图像的尺寸,并逐步生成分割结果。
UNet的关键创新在于解码器中引入了跳跃连接(Skip Connections),将编码器中的特征图与解码器中对应的特征图进行连接。这种跳跃连接有助于解码器更好地利用不同层次的特征信息,从而提高图像分割的准确性和细节保留能力。
2.Unet模型的基础结构
图一
Unet可以分为三个部分,如上图所示:
- 第一部分是主干特征提取部分,我们可以利用主干部分获得一个又一个的特征层,Unet的主干特征提取部分与VGG相似,为卷积和最大池化的堆叠。利用主干特征提取部分我们可以获得五个初步有效特征层,在第二步中,我们会利用这五个有效特征层可以进行特征融合。
- 第二部分是加强特征提取部分,我们可以利用主干部分获取到的五个初步有效特征层进行上采样,并且进行特征融合,获得一个最终的,融合了所有特征的有效特征层。
- 第三部分是预测部分,我们会利用最终获得的最后一个有效特征层对每一个特征点进行分类,相当于对每一个像素点进行分类。
3.作用及意义
在Stable Diffusion中,U-Net模型是一个关键核心部分,能够预测噪声残差,并结合Sampling method(调度算法:DDPM、DDIM、DPM++等)对输入的特征矩阵进行重构,逐步将其从随机高斯噪声转化成图片的Latent Feature。
具体来说,在前向推理过程中,SD模型通过反复调用 U-Net,将预测出的噪声残差从原噪声矩阵中去除,得到逐步去噪后的图像Latent Feature,再通过VAE的Decoder结构将Latent Feature重建成像素级图像。
2.VAE模型基础
1.VAE概念
VAE(变分自编码器,Variational Auto Encoder)是一种深度学习模型,用于生成新的数据样本。 它通过引入隐变量来描述复杂分布,从而生成新的数据点。VAE结合了编码器和解码器,编码器负责将输入数据压缩为低维的隐状态,而解码器则将隐状态恢复为原始数据的高品质复制。这种模型在图像生成、自然语言处理等领域有广泛应用。
VAE的核心思想在于利用变分推断来近似复杂的概率分布。它通过引入隐变量来描述数据生成的过程,这些隐变量对模型中可观察变量的输出有影响。通过训练编码器和解码器,VAE能够学习数据的概率分布,并生成新的数据点。具体来说,编码器将输入数据映射到低维隐空间,而解码器则将这个低维隐状态恢复为原始数据的高品质复制。
在AI绘画领域,VAE技术被广泛应用于生成新的绘画作品。例如,触站AI是一个集成了VAE技术的在线绘画模型,用户可以通过简单的勾画几笔来生成真实的、艺术感十足的图像。这种技术不仅提高了绘画作品的生成效率,还释放了用户的创造力和艺术潜能。
2.核心作用
在Stable Diffusion中,VAE(变分自编码器,Variational Auto-Encoder)是基于Encoder-Decoder架构的生成模型。VAE的Encoder(编码器)结构能将输入图像转换为低维Latent特征,并作为U-Net的输入。VAE的Decoder(解码器)结构能将低维Latent特征重建还原成像素级图像。
1.核心作用一:
VAE通过encoder编码器将输入数据压缩至Latent隐空间中,作为Unet模型的输入,最后通过decoder解码器进行图像重建的作用;
图二
如图二,有编码器和解码器组成,当我们输入一个尺寸为 H×W×C 的数据,VAE的Encoder模块会将其编码为一个大小为h×w×c的低维Latent特征,其中f=H/h=W/w为VAE的下采样率(Downsampling Factor)。反之,VAE的Decoder模块有一个相同的上采样率(Upsampling Factor)将低维Latent特征重建成像素级别的图像。
- Q1:什么是隐空间(Latent space)/隐变量(hidden variables)?
- 图三
隐变量:如上图三左半部分
假设:从a很难推导出b
但是从a能够推导出某个中间变量“c”,从“c”能够推导出b;
因此我们要从a推导出b,可以通过从a推导出中间变量“c”,然后再推导出b。这里的中间变量“c”就称为“隐变量”
有时遇到的原始数据建模很困难,此时可以将原始数据装换成另一种格式的数据----“隐变量”
隐空间(latent space):如上图右半部分
隐变量所在空间,这极大地降低了扩散模型的计算复杂度。
- 而VAE模型在编码器之后得到一组维度小于原图维度的隐变量(一组对图片的压缩表示)
2.核心作用二:
不同版本的VAE模型,能够在生成的图片的细节与整体颜色上发生改变,通俗理解:滤镜+微调
图四
通过图四可以清晰看到VAE模型的第二个核心作用;
3.Diffusion Mode基础
1.Diffusion Mode的基础
扩散模型Diffusion Models是一种新型的、先进的生成模型,用于生成与训练数据相似的数据,可以生成各种高分辨率图像。
它通过两个核心过程——前向扩散过程和反向去噪过程——来实现从噪声数据生成复杂样本。
图五
如图五:
前向扩散:向原始数据逐步添加噪声的过程,直到数据变为纯噪声。
虽然这个过程本身并不能直接生成图片,但它对于理解扩散模型的工作原理以及构建训练样本的目标(ground truth,简称GT)至关重要。
逆扩散:前向扩散的逆操作,从纯噪声开始,逐步去除噪声以还原出原始数据。
这个过程依赖于模型学习到的如何从噪声中恢复出原始数据的模式。模型通过神经网络学习逆扩散过程,从而能够生成与原始数据相似的样本。
这种模型之所以有效,是因为它能够通过学习去噪步骤,在重建过程中捕捉到数据的复杂结构和分布,尽管直观上加噪看似与生成清晰图像相悖。
扩散模型在图像生成、分类、以及如Stable Diffusion、DALL-E等以文生图应用中展现出了卓越性能,其成功在于其强大的特征学习能力、生成高质量样本的能力,以及在数据有限时的良好泛化性能。
2.为什么要加噪和去噪
提高模型鲁棒性:加入噪声可以使模型更具有鲁棒性,能够更好地处理现实世界中的变化和噪声。在训练过程中,模型需要学会从不完美的数据中提取有用的信息,并且对噪声更具有容忍性。
促进样本多样性:通过引入不同类型和强度的噪声,可以增加训练数据的多样性,从而帮助模型更好地泛化到未见过的数据。这有助于防止过拟合,并提高模型的性能。
解决模型偏差:在一些情况下,模型可能存在偏差,即对数据的错误偏好或错误假设。加入噪声可以帮助模型更好地克服这种偏差,从而提高模型的泛化能力和性能。
模拟真实场景:现实世界中的数据往往会受到各种噪声的影响,例如传感器误差、环境变化等。通过在训练数据中引入类似的噪声,可以使模型更好地模拟真实场景,并提高其在实际应用中的效果。
3.扩散模型的网络结构
图六
利用马尔可夫链来定义扩散步骤,通过每一步的状态转移来逐渐将数据“破坏”成纯噪声。然后,通过训练神经网络来逼近真实的反转扩散过程,扩散模型能够从纯噪声中逐步还原出原始数据。
目前有两种结构:
1.基于UNet的网络结构
图七
2.基于DiT的网络结构
图八
4.图像生成模型Stable Diffusion(SD)基础
1.图像生成模型的发展
图九
2.SD模型的结构
1.基于UNet的SD网络结构
图十
如上图:End-to-End模型,由VAE(左侧红色部分),基于Unet的diffusion mode(中间绿色部分)以及CLIP Text Encoder(右侧白色部分)三个核心组件构成
2.基于DiT的SD网络结构
图十一
DiT(Diffusion Transformer)模型由Meta在2022年首次提出,其主要是在ViT(Vision Transformer)的架构上进行了优化设计得到的。DiT是基于Transformer架构的扩散模型,将扩散模型中经典的U-Net架构完全替换成了Transformer架构。
3.SD文生图工作流程
图十二
- 输入:(文本emdedding)将输入的文本(prompt)通过Text Encoder提取出Text Embeddings特征(77x768);(初始化latent噪音矩阵)同时初始化一个Latent空间的随机高斯噪声矩阵(维度为64x64x4,对应512x512分辨率图像)。
- 生成过程:(图文融合)将Text Embeddings特征和随机高斯噪声矩阵通过CrossAttention机制送入U-Net中,(去噪)结合Scheduler algorithm(调度算法)迭代去噪,(输出)经过N次迭代后生成去噪后的Latent特征。
- 输出:(VAE构建)将去噪后的Latent特征送入VAE的Decoder模块,重建出像素级图像(512x512分辨率)。
以上就是本次分享的关于文生图SD模型相关的模型知识,个人观点,希望有所帮助