Diffusion大模型

前言

人工智能生成内容(AI Generated Content,AIGC)

生成式模型本质上是一组概率分布。

DDPM

训练——加噪过程

数据集中随机选出图片X0,随机选择t时刻,标准正态分布随机选择噪声epsilon,unet网络预测的epsilon_theta,是该时刻的噪音图像。输入已经添加好噪声的图像,预测输出本次添加的噪声。
这是一个加噪的过程,x(t-1)再加上了当前随机的产生的噪声epsilon后变成了x(t)。所以网络要根据输入x(t)以及时刻t,学习到加的这个噪声到底是什么,所以损失函数就是使网络输出epsilon_theta无限接近epsilon
在这里插入图片描述
下图也是一个加噪示意图(来自下面的视频),无论加噪降噪,核心还是那两个公式,都在图中。这两个公式是结论,推导过程就是最终得出这俩公式。
在这里插入图片描述
加噪过程,因为通过推导建立了x(t)和x(0)的直接联系,如上图所示,x(t)可由x(0)直接得出,所以训练的时候,t是随机uniform得到的,而无需从0到1000迭代训练。

推理——降噪过程

先随机产生一个x(T),T一般是1000,二者(T是经过编码的)同时输入网络得到噪声
在这里插入图片描述
sample推理过程图:
在这里插入图片描述

DDPM很好的视频讲解

DDIM

DDIM主要有两项改进:

  • 对于一个已经训练好的DDPM,只需要对采样公式做简单的修改,模型就能在去噪时「跳步骤」,在一步去噪迭代中直接预测若干次去噪后的结果。比如说,假设模型从时刻T=100开始去噪,新的模型可以在每步去噪迭代中预测10次去噪操作后的结果,也就是逐步预测时刻t=90,80,…,0的结果。这样,DDPM的采样速度就被加速了10倍。
  • DDIM论文推广了DDPM的数学模型,打破了马尔科夫链的过程,从更高的视角定义了DDPM的反向过程(去噪过程)。在这个新数学模型下,我们可以自定义模型的噪声强度,让同一个训练好的DDPM有不同的采样效果。

VQ-VAE

先学习总结文末的链接博客
总结:

  • VQ-VAE也是一种VAE,就是特征加了量化
  • 在LDM模型中,训练VQ-VAE的时候,encoder和decoder都需要,推理或训练二阶段diffusion模型的时候,只需要encoder,拿到中间特征即可

lantent diffusion models(LDM)

DDPM是一个基于马尔可夫链的算法,它通过对一个随机噪声进行逐步去噪来实现了图像生成任务。DDPM等算法是直接在图像像素空间中进行操作,并且因为DDPM的链式特性,这造成了它的训练和推理都是非常消耗资源的。为了提升扩散模型的生成效率,LDM提出了将扩散空间从图像空间转移到潜空间(Latent Space),而这个潜空间的概率分布可以通过训练好的VAE得到。预测概率分布除了能够提升生成效率,还能够避免扩散模型在图像像素上的过度训练,而图像的这些细节我们交给更擅长做这个的VAE去完成,从而显著提升了生成图像的质量。最后,LDM通过交叉注意力模块,支持将不同模态的条件加入到扩散过程中,从而实现了生成模型的生成内容的可控性。

优势:

  • 压缩潜在空间:在低分辨率的潜在空间中训练扩散模型计算效率更高
  • 整的平滑/压缩潜在空间:扩散模型任务更容易,采样速度更快
  • 灵活性:自动编码器可以根据数据(图像、视频、文本、图形、3D点云、网格等)进行定制

模型结构

LDM是一个二阶段的模型,包括训练

### Stable Diffusion 大模型概述 Stable Diffusion 是一种基于深度学习的大规模生成模型,主要用于图像合成和其他视觉任务。该模型利用扩散过程来逐步将随机噪声转换成有意义的图像[^2]。 #### 架构设计 架构上,Stable Diffusion 结合了编码器-解码器结构以及U-net的设计理念: 1. **编码阶段**:输入一张图片或纯噪音作为起始点; 2. **中间层处理**:通过一系列卷积操作捕捉不同尺度下的特征表达; 3. **解码阶段**:逐渐恢复细节并最终输出目标分辨率的高质量图像; 为了提高效率和效果,在训练过程中引入了一种特殊的损失函数——变分下界(Variational Lower Bound),它能够有效地指导模型参数优化方向。 #### 应用场景 在人工智能领域内,Stable Diffusion 已经展现出广泛的应用潜力: - **科学研究**:科研人员正在利用此技术可视化复杂数据集或是模拟假设情景。例如,在医学研究方面可以帮助创建逼真的器官模型用于手术规划。 - **交互媒体创作**:借助于强大的图像生成功能,开发者们可以构建更加生动有趣的用户体验,如虚拟现实环境中的物体渲染等。 ```python import torch from diffusers import StableDiffusionPipeline model_id = "CompVis/stable-diffusion-v1-4" device = "cuda" pipe = StableDiffusionPipeline.from_pretrained(model_id).to(device) prompt = "a photograph of an astronaut riding a horse" image = pipe(prompt).images[0] image.save("astronaut_rides_horse.png") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值