图片是如何生成的--图像生成模型(GAN、VAE、扩散模型)简介

本文介绍了图像生成领域的几种主要模型,包括GAN、各种AutoEncoder变体(AE、DAE、VAE、VQVAE)以及扩散模型的原理和演化,如DDPM、DALLE2。文章强调了各模型的优缺点,如GAN的训练稳定性问题,AE家族的重构能力与不可采样性,以及扩散模型的高成本与多样性。此外,还提到了最新进展,如classifier-freeguidance在扩散模型中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.GAN

2.AutoEncoder及其变种:AE/DAE/VAE/VQVAE

2.1 AE: 

2.2 DAE:Denoising AutoEncoder

2.3 VAE:Variational AutoEncoder

2.4 VQVAE:Vector-quantised Variational AutoEncoder

3. 扩散模型 

3.1 扩散模型的基本原理

3.2 扩散模型的发展历程

3.2.1 DDPM 

3.2.2 improved DDPM

3.3.3 Diffusion Model Beats GAN

3.2.4 Glide

3.2.5 DALLE 2

4.AE家族 vs 扩散模型


本文简单介绍了下图像生成相关的一些模型。

本来想从吴恩达的deepai课程开始写的,但是感觉还是不够简单,推荐跟着李沐学AI里的DALL·E 2,我个人觉得讲的蛮清楚的。

传送门:DALL·E 2(内含扩散模型介绍)【论文精读】_哔哩哔哩_bilibili,从28分开始讲解。

1.GAN

GAN就是左右手互搏,生成器(G)和判别器(D)。

生成器:给定随机噪声,生成图像X’,希望X’尽可能的接近真实图像。

判别器:给定X’和真实图像X,判别图片真假。

目标函数:

通过训练,生成器和判别器不断迭代,最终生成器可以生成比较逼真的图像。

优点:生成的图像比较逼真,需要的数据量不那么多,可以在各个场景下使用

缺点:训练不稳定,容易模型坍塌。

           图片真实但是多样性不足。

           非概率模型,隐式生成图像,在数学上的可解释性不如VAE

2.AutoEncoder及其变种:AE/DAE/VAE/VQVAE

2.1 AE: 

原始图像X通过encoder后,得到一个较小维度的特征(bottleneck),再从bottleneck开始,经过decoder后得到新的X',希望X‘尽可能重建原始X。

2.2 DAE:Denoising AutoEncoder

原始图像经过扰乱后得到Xc(X corrupt),再将Xc传给encoder,后续和AE的步骤一致,目标也是希望X’能够尽可能地重建X(而不是扰乱之后的Xc)

 优点:训练出来的结果非常的稳健,也不容易过拟合(原因:图像这边的冗余太高了,参考MAE,masked AutoEncoder,masked 75%)

AE/DAE/MAE的目标都是生成中间的bottleneck,可以用这个embedding做下游的分类任务,但是这里的bottleneck不是一个概率分布,没法对其进行采样,所以无法做生成任务。

2.3 VAE:Variational AutoEncoder

和上面的图很像,只不过不再学习一个固定的bottleneck特征,而是去学习了一个分布,且这个分布满足高斯分布。

 

编码器的特征通过FC层,预测分布的均值和方差,

利用均值和方差,采样一个Z出来,后续的步骤和AE类似。

当模型训练好之后,可以直接由分布生成Z,再通过decoder生成对应的图片X‘,这样就可以做生成任务了。

数学解释:

q(Z|X)后验概率

分布:先验分布

p(X|Z):likelihood

优点:学习的是分布,图像多样性优秀。数学解释性好。

2.4 VQVAE:Vector-quantised Variational AutoEncoder

codebook:可以理解为聚类中心 ,用离散化的codebook替代distribution,效果更好(类比分类比回归效果好)

K:一般是8192,向量的个数

D:512或768,向量的维度

图片通过编码器得到特征图f后,在codebook中找到和特征图最接近的聚类中心,将聚类中心的编码记录到Z中,将index对应的特征取出,作为fa,完成后续的流程。

额外训练了一个pixel-CNN,当做prior网络,从而利用已经训练好的codebook去做图像的生成。

3. 扩散模型 

3.1 扩散模型的基本原理

一张图片X0,每一步都给它加一个极小的噪声,T步之后得到XT,当T特别大时,这时的XT就趋近于一个真正的噪声,满足各向同性的正态分布,整个过程就是forward disfussion,前向扩散过程。

reverse diffusion整个过程反过来,抽样一个噪声XT,通过不断地消除一点点噪声,T步之后,就可以得到一个真正的图片X0,所有的Xt->Xt-1都是用的同一个模型,共享参数,只不过需要抽样很多次。

U-Net:扩散模型一般使用的是U-Net模型,也就是CNN模型。

先用编码器不断压缩图像,再用解码器不断恢复图像,输入图像和输出图像大小一致,中间还有skip-connection,帮助更好地恢复图像。后续也有加入attention的操作,帮助更好地生成图像。

缺点:非常贵,推理也需要T次(T一般是1000)

3.2 扩散模型的发展历程

3.2.1 DDPM 

  1. 优化了SD的预测目标,将其从图像->图像,变为了去预测对应的噪声是如何加上的,有点像resnet,去预测对应的 residual。
  2. 加入了temporal embedding,时序相关的embedding,因为所有步骤的unet结构都一致,我们希望模型在不同步能够生成不同的东西就通过这个embedding来(PS:使用Stable Diffusion的时候会发现,先有轮廓再有细节就是因为这个)
  3. 提出只需要预测均值(方差只需要是常数就可以工作的很好),进一步降低模型优化的难度。

 

3.2.2 improved DDPM

1.在DDPM的基础上,还是去学习了对应的方差,生成图片的效果进一步提升。

2.添加噪声的schedule 由线性改为余弦添加(类似学习率的余弦schedule)

3.尝试使用扩散模型的大模型,发现模型越大,效果也越好。

3.3.3 Diffusion Model Beats GAN

1.将模型加大加宽

        增加自注意力头的数量,single-scale attention->multi-scale attention(多尺度注意力是指在神经网络中引入多个不同尺度的特征图,然后通过注意力机制对这些特征图进行加权融合,从而提高模型对不同尺度信息的感知能力和表达能力。)

2.新的归一化方式(Adaptive Group Normalization)

        根据步数做自适应的归一化

3.classifier guidance

        引导模型做采样和生成,让生成的图片效果更逼真,也加速了反向采样的速度(只需要25次反向采样,相比于之前的1000次,速度提升非常大)

图中的classifer 是在有噪声的ImageNet上训练的图片分类器,加入噪声是因为扩散模型本身就是在有噪声的图片上训练的。

每次训练时,将Xt传给classifer,预测它对应所属的类别,并且计算交叉熵,得到梯度g,用梯度g来指导后续噪声的采样。通过梯度的引导,让Unet采样的结果尽可能接近真实的物体,也就是能被classifer正确分类。

除了classifer之外,还有clip、image、text等其他的引导方式。它们都相当于是公式中条件y。

clip:后续除了使用classifer来引导图片的采样和生成,也可以将其:替换成clip,将文本和图像联系起来,从而用文本来引导图片的采样和生成,

image :图片的重建--像素级别的引导,特征层面的引导,图像风格的引导

text:大语言模型做引导

3.2.4 Glide

classifer-free guidance

 

之前的classfier guidance都是在扩散模型之外,再额外训练一个模型,训练过程不太可控。classifer-free guidance则是同一个模型同时生成2张图片,一张是有条件的(图片左边),一张是无条件的(图片右边),图片右边的条件是一个空集,在训练过程中,让模型学会两张图片的差距。在反向扩散的过程中,通过没有条件生成的图片去推测生成有条件y生成的图片。

3.2.5 DALLE 2

有空补DALLE和DALLE2的坑,哈哈哈。

4.AE家族 vs 扩散模型

都可以视作是编码器解码器结构

区别:1.AE的编码器是学习到的,Diffusion的编码器是固定的过程(这种固定更像是说,每一步都走同一道门,走1000次,最终变成了不同的样子,意会一下)

2.扩散模型每一步的中间过程,尺寸和原始图片大小都是相同的,而AE的bottleneck则是远小于输入图片的。

3.扩散模型有很多步,所以有time step,time embedding的概念,而在AE中则没有。

后续应该还会开坑:

1.写dalle和dalle2,这2个是使用文本生成图像的,效果也很惊艳。网上也有一些API可以玩

2.吴恩达的扩散模型系列,好像视频只有半小时,看看有没有新东西,如果有的话,也蹭个热度。

3.unclip,比如blip

感兴趣的可以点个关注,ღ( ´・ᴗ・` )比心

<think>好的,用户需要查找LTspice的使用教程详细指南。首先,我要确认用户的需求。LTspice是一款电路仿真软件,用户可能刚开始接触,需要详细的入门指导。根据用户提供的引用内容,引用[1]提到的是LTspice Control Library的安装和配置,而引用[2]则是关于LTspice的使用教程,用户可能希望得到更全面的教程信息。 接下来,我需要整理已有的信息。用户提供的引用中,引用[2]提到了根据步骤基本能使用软件,并建议参考原生资源深入学习。但用户可能需要更具体的步骤,比如安装、基本操作、仿真设置等。因此,我应该分步骤回答,确保结构清晰,符合用户要求的中文回答和系统级指令中的格式要求。 还要检查是否有其他资源或常见的教程要点需要补充。比如,LTspice的官方网站可能有详细文档,或者常见的教程内容如原理图绘制、元件库添加、波形查看等。需要确保回答涵盖这些基础内容,同时引用提供的参考链接,帮助用户进一步学习。 另外,用户的问题中提到要生成相关问题,我需要根据LTspice的使用场景,提出相关的问题,例如高级功能、模型导入、仿真优化等,这些能帮助用户深入探索软件功能。 最后,确保回答符合LaTeX格式要求,行内公式用$...$,独立公式用$$...$$,但根据当前问题,可能数学公式较少,但如果有涉及电路方程的地方需要注意格式。例如,在解释仿真设置时,可能会提到电压、电流的计算公式,如$V=IR$,需要正确应用格式。 总结回答结构:分步骤指南,涵盖安装、界面介绍、原理图绘制、仿真设置、波形分析、高级功能,然后提供相关资源和问题。确保每个步骤简明扼要,引用标识正确添加,例如在提到安装和基础使用时引用[2],在提到控制块设计时引用[1]。</think>以下是LTspice使用教程的详细指南,结合基础操作和进阶功能: ### 一、安装与配置 1. **下载安装** 访问Analog Devices官网下载最新版LTspice,支持Windows/macOS/Linux系统[^2]。 2. **添加元件库** 通过`File > New Schematic`新建原理图,使用`F2`键打开元件库。第三方模型(如LTspice Control Library)需将`.lib`文件放入安装目录的`lib/sub`文件夹[^1]。 ### 二、界面与基本操作 1. **主界面功能** - 工具栏:包含仿真控制(Run/Stop)、测量工具(Voltage Probe) - 快捷键:`F2`添加元件,`F3`画线,`F4`添加标签 2. **绘制原理图** - 添加基础元件:电阻$R=\frac{V}{I}$、电容$Q=CV$、电感$V=L\frac{di}{dt}$ - 使用符号:`GND`为参考地,`SPICE Directive`添加仿真指令 ### 三、仿真设置 ```spice .tran 0 1ms 0 1us ; 瞬态分析:仿真1ms,步长1μs .ac dec 10 1Hz 1MegHz ; 交流分析:1Hz-1MHz,每十倍频10个点 .step param R load 1k 10k 1k ; 参数扫描:电阻从1kΩ到10kΩ步进 ``` ### 四、波形分析 1. **查看波形** 点击节点电压或元件电流自动生成波形窗口,支持$V_{pp}$、$V_{avg}$等测量 2. **数学运算** 在波形窗口输入表达式如: $$ P = V(n001)*I(R1) $$ 可实时显示功率曲线 ### 五、高级功能 - **控制框图设计** 通过LTspice Control Library绘制PID控制器,支持传递函数$G(s)=\frac{K_p + K_i/s + K_d s}{1}$[^1] - **蒙特卡洛分析** 使用`.step Monte Carlo 100`进行容差分析
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值