基于Difussion图像、视频生成综述

2024年大年初七(02.16)OpenAI 发布视频生成模型 Sora 在各大平台转疯了,和2022年发布ChatGPT3.5时一样的疯狂。在开工第一天,我就去官网上看了 Sora 的技术报告,遗憾的是,在这份技术报告中只披露了一些模型思想和效果展示,对于算法细节介绍的不多。一些大佬对此做了一些解读,提到最多的是 DiT (Scalable Diffusion Models with Transformers)这篇论文。直接讲 DiT 没有相关的知识铺垫难免有点像论文解读,为此本篇博文从Diffusion说起,梳理近几年来图像、视频生成相关的进展。对于理解不准确或者有误的地方,还需要多多交流讨论。

一、开山鼻祖(Diffusion)

随着深度学习的发展,图像生成一直是AI相关领域的研究热点,例如 GAN、VAE 等模型。2020年Jonathan Ho等人提出 DDPM 算法(Denoising Diffusion Probabilistic Models),这是一种基于扩散模型的图像生成算法。所谓的扩散,可以简单的理解为物体从有序到无序,最后到稳定的过程,比如一滴墨水滴入到水中逐渐变成一个均匀分布的水溶液。
红墨水扩散图 https://www.zhihu.com/question/310398434/answer/582993535

图1-1 红墨水扩散图 https://www.zhihu.com/question/310398434/answer/582993535

那么以此类比,一滴墨水扩散到均匀无序的状态就像是一个图像从清晰变成噪声的过程,就像下图中石原里美姐姐笑容逐渐消失的过程。

石原里美笑容消失

图1-2 石原里美笑容消失

假设扩散过程就是马尔可夫过程(可以简单理解为: 未来的状态或分布只与当前的状态有关,与过去的状态无关),扩散过程的逆过程符合高斯分布。从石原里美小姐姐笑容消失这个例子中理解就是, 左起第三张图的状态只与第二张图有关,与第一张图有关
在DDPM这篇论文中,将扩散过程分成两个部分,一个是前向过程,一个是反向过程。 前向过程就是图像加噪的过程(下图中从右往左)反向过程就是去噪的过程(下图中从左到右)。
前向过程与反向过程

图1-3 前向过程与反向过程

1.1 加噪过程

对于加噪过程的马尔可夫过程如公式(1)所示:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) (1-1) q(x_t|x_{t-1})=N(x_t;\sqrt{1-β_t}x_{t-1},β_tI) \tag{1-1} q(xtxt1)=N(xt;1βt xt1,βtI)(1-1)
其中 1 − β t \sqrt{1-β_t} 1βt 表示 t 时刻下的样本权重, β t β_t βt表示噪声的权重(正态分布)。用 z z z表示噪声,服从正态分布,将 α t = 1 − β t α_t=1-β_t αt=1βt α t ˉ = ∏ i = 1 T α i \bar{α_t}=\prod_{i=1}^Tα_i αtˉ=i=1Tαi带入计算,可得:
x t = α t x t − 1 + 1 − α t z t − 1 = α t α t − 1 x t − 2 + 1 − α t α t − 1 z ˉ t − 2 = . . . = a ˉ t x 0 + 1 − α ˉ t z \begin{align} x_t &=\sqrt{α_t}x_{t-1}+\sqrt{1-α_t}z_{t-1} \tag{1-2} \\ &=\sqrt{α_tα_{t-1}}x_{t-2}+\sqrt{1-α_tα_{t-1}}\bar z_{t-2} \tag{1-3} \\ &=...=\sqrt{\bar a_t}x_0+\sqrt{1-\bar α_t}z \tag{1-4} \end{align} xt=αt xt1+1αt zt1=αtαt1 xt2+1αtαt1 zˉt2=...=aˉt x0+1αˉt z(1-2)(1-3)(1-4)
从这样的推理来看, x t x_t xt可以由 x 0 x_0 x0和噪声得到,即:
q ( x t ∣ x 0 ) = N ( x t ; a ˉ t x 0 , ( 1 − α ˉ t ) I ) (1-5) q(x_t|x_0)=N(x_t;\sqrt{\bar a_t}x_0,(1-\bar α_t)I) \tag{1-5} q(xtx0)=N(xt;aˉt x0,(1αˉt)I)(1-5)
其中上式(3)中的 z ˉ t − 2 \bar z_{t-2} zˉt2 是什么呢?其实是 z t − 1 , z t − 2 z_{t-1},z_{t-2} zt1,zt2的加权求和,两个独立的正态分布相加之后还是一个正态分布。公式里面为了简化表示成一个正态分布了。
那么这一大推公式推导的目的是什么? 加噪的过程可以看成是马尔可夫过程,当前状态都取决于上一步的状态,现在推导发现,从 x 0 x_0 x0可以直接计算出来 x t x_t xt,这样就简单很多了呀!想象一下,石原姐姐的微笑,你一次就能让她消失,是不是会惊喜! 不用按照马尔可夫过程训练一个样本要迭代 T T T 次。

1.2 去噪过程

去噪过程也就是从噪声中恢复数据,这个过程要比加噪声复杂很多。在加噪声的时候,我们已知t-1时刻的图像,已知噪声分布,那么加上一个噪声的权重就可以得到加噪之后 t 时刻的图像; 反过来的话,我们只知道 t 时刻加噪之后的图像,不知道 t − 1 t-1 t1 时刻的原图和 t − 1 t-1 t1 时刻增加的噪声,这样就比较难搞了。 或许可以学习一个网络模型 f f f 用来预测增加的噪声,即 z t − 1 = f ( x t ) z_{t-1}=f(x_t) zt1=f(xt) 【默认 x t x_t xt= α t x t − 1 + 1 − α t z t − 1 \sqrt{\alpha_t}x_{t-1} + \sqrt{1-\alpha_t}z_{t-1} αt xt1+1αt zt1】,但是这样训练过程会非常复杂。想象一下:对于一个样本,需要迭代 t 个时间步,每迭代一个时间步都需要把 t-1 时刻的图像、 t-1 时刻添加的噪声以及 t 时刻的结果记录下来,然后拿过来去训练模型预测噪声。这样模型训练时需要先扩散到 t 时间步,然后训练一次 t-1 时间步,复杂度会非常高,如果 T 比较大更是增加了训练的难度。有人问了,上一节中推导可以直接从 x 0 x_0 x0 得到 x t x_t xt, 那么有没有什么方法可以从 x t x_t xt 得到 x t − 1 x_{t-1} xt1 呢? 也就是求解 x t − 1 = h ( x t , x 0 ) x_{t-1}=h(x_t,x_0) xt1=h(xt,x0), 即求 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0),其实是可以的。注意:这里把 x 0 x_0 x0 当做已知变量,为什么已知呢?因为它就是原图呀。

t-1时刻的数据可以表示为与上面的推导类似 [2],即:
q ( x t − 1 ∣ x t , x 0 ) = q ( x t − 1 , x t , x 0 ) q ( x t , x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 , x 0 ) q ( x t , x 0 ) = q ( x t ∣ x t − 1 , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) = q ( x t ∣ x t − 1 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) \begin{align} q(x_{t-1}|x_t,x_0)&=\frac{q(x_{t-1},x_t,x_0)}{q(x_t,x_0)} \tag{1-6} \\ &=\frac{q(x_t|x_{t-1},x_0)q(x_{t-1},x_0)}{q(x_t,x_0)} \tag{1-7} \\ &=\frac{q(x_t|x_{t-1},x_0)q(x_{t-1}|x_0)}{q(x_t|x_0)} \tag{1-8} \\ &=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)} \tag{1-9} \end{align} q(xt1xt,x0)=q(xt,x0)q(xt1,xt,x0)=q(xt,x0)q(xtxt1,x0)q(xt1,x0)=q(xtx0)q(xtxt1,x0)q(xt1x0)=q(xtx0)q(xtxt1)q(xt1x0)(1-6)(1-7)(1-8)(1-9)
其中 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0)就是公式(1)的扩散过程, q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0)就是公式(5), 带入一通操作(我也没有算明白,哈哈哈 ),对于 t 时刻:
q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ ( x t , x 0 ) , β ~ t I ) (1-10) q(x_{t-1}|x_t, x_0)=N(x_{t-1};\tilde \mu(x_t,x_0),\tilde \beta_{t}I)\tag{1-10} q(xt1xt,x0)=N(xt1;μ~(xt,x0),β~tI)(1-10)
其中:
β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t , μ ~ t ( x t , x 0 ) = α ˉ t − 1 β t 1 − α ˉ t x 0 + α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t (1-11) \tilde \beta_t=\frac{1-\bar \alpha_{t-1}}{1-\bar \alpha_t} \beta_t ,\tilde \mu_t(x_t,x_0)=\frac{\sqrt{\bar \alpha_{t-1}\beta_t}}{1-\bar\alpha_t}x_0+\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}x_t\tag{1-11} β~t=1αˉt1αˉt1βt,μ~t(xt,x0)=1αˉtαˉt1βt x0+1αˉtαt (1αˉt1)xt(1-11)
从公式(4)可以得到:
x 0 = 1 α ˉ t ( x t − 1 − α ˉ t z ) (1-12) x_0=\frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}z)\tag{1-12} x0=αˉt 1(xt1αˉt z)(1-12)
μ ~ t ( x t , t ) = 1 α t ( x t − β t 1 − α ˉ t z ˉ t ) (1-13) \tilde\mu_t(x_t,t)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\bar z_t)\tag{1-13} μ~t(xt,t)=αt 1(xt1αˉt βtzˉt)(1-13)
到了这里局势明朗了, q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)可以直接由 x t x_t xt 和 后面的噪声 z z z 决定了。那么反向扩散的推理就有了:
x t − 1 = u ~ t + β ~ t z t = 1 α t ( x t − 1 − α t 1 − α ˉ t z ˉ t ) + 1 − α ˉ t − 1 1 − α ˉ t β t z t ( x t , t ) \begin{align} x_{t-1}&=\tilde u_t+\tilde \beta_tz_t \tag{1-14} \\ &=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar\alpha_t}}\bar z_t) + \frac{1-\bar \alpha_{t-1}}{1-\bar \alpha_t}\beta_tz_t(x_t,t) \tag{1-15} \end{align} xt1=u~t+β~tzt=αt 1(xt1αˉt 1αtzˉt)+1αˉt1αˉt1βtzt(xt,t)(1-14)(1-15)
好了,说到这里优雅的理论推理就结束了,从这里可以看到当有了 x t x_t xt通过 z ˉ t \bar z_t zˉt就能得到 x t − 1 x_{t-1} xt1了。那么怎么去计算或者估计 z ˉ t \bar z_t zˉt呢,直接用神经网络来预测就好(既然算不出来,就学出来,嗯哼!!)。

1.3 模型的训练与推理

对于模型的训练,简单来说就是对图像进行加噪声,然后通过 UNet去预测的噪声。由公式(4-5)中推理证明了,时间 t 时刻的样本可以通过一次加噪实现,然后模型去预测这个噪声(如下图左图)。采样过程就是输入一个正态分布的噪声,然后迭代 T T T次,逐步预测 x t , x t − 1 , x t − 2 , . . . , x 1 , x 0 x_t,x_{t-1},x_{t-2},...,x_1,x_0 xt,xt1,xt2,...,x1,x0 (如下图右图)。
Denoising Diffusion Probabilistic Models中训练与采样过程

图1-4 Denoising Diffusion Probabilistic Models中训练与采样过程

1.3.1 预测噪声?预测 x 0 x_0 x0?

论文中提出的方法是预测噪声,那么有人问了,预测噪声这么抽象,能不能直接预测 x 0 x_0 x0 呢?其实也是可以的,论文的源码里面实现是预测的噪声(DDPM源码中通过噪声预测原图代码)。pytorch版本里面实现可以直接预测 x 0 x_0 x0 (链接),还有预测 v v v (链接)。
对于预测噪声或者 x 0 x_0 x0有什么区别呢?
(1)如果预测噪声,对于一个batch中采样不同的时间步,损失优化时会平等对待;
(2)如果预测 x 0 x_0 x0,由于时间步的关系,不同的时间步下噪声的权重不同,相当于时间步越大,权重越大。

1.4 模型分析

从训练过来看,就是预测一个图像中的噪声,然后把噪声恢复出来(或者恢复出清晰度更高的图);采样的过程就是一步步从带有噪声的图像中恢复原图。那么能不能直接从噪声中恢复出原图呢(这里是不是类似于VAE中的Decoder)?理论上应该可行。猜测通过这样一步步的恢复,效果可能会比较好,另外也降低了模型学习的难度。

二、崭露头角(LDM)

Diffusion 中提出使用UNet 预测噪声的方式来实现图像生成,在图像生成中需要迭代 T T T 个时间步。由于每次迭代都需要过一遍 UNet 网络,当 T T T比较大时,将会非常耗时;另外,Diffusion 无法控制生成的图像,只能随机生成。LDM 是一个两阶段的图像生成模型,第一个阶段先训练一个图像编解码器,第二阶段进行图像生成。(High-Resolution Image Synthesis with Latent Diffusion Models),主要从两个方面解决这些问题:
(1)通过编码器、解码器将图像降维到更低的尺度(下图中左边红色区域),然后再基于扩散模型进行训练(下图中中间绿色区域);
(2)增加条件控制模块(下图中右边模块),可以将图像、文本等特征注入到 UNet 中,指导图像生成。
LDM模型结构

图2-1 LDM模型结构

2.1 图像编码-解码器

对于图像编码部分,将使用 E \Epsilon E作为编码器, D D D 作为解码器,有:
x ~ = D ( z ) = D ( E ( x ) ) (2-1) \tilde x=D(z)=D(\Epsilon(x)) \tag{2-1} x~=D(z)=D(E(x))(2-1)
其中 x ∈ R H ∗ W ∗ 3 , z ∈ R h ∗ w ∗ c x∈R^{H*W*3},z∈R^{h*w*c} xRHW3,zRhwc, 下采样的倍数为 2 的次方。论文中提到两种视频编码模块,一种的VQ-reg,一种是 KL-reg,看代码本质都是采用对抗的方式进行训练的。下图是 LDM 中使用的Encoder-Decoder的结构(注意为什么没有残差连接呢?因为要做特征编码,如果有残差连接岂不是无法编码了),代码在这里。(相关VQ-VAE、VQ-GAN等内容讲解参考,感兴趣可以移步了解)。
Encoder-Decoder

图2-2 Encoder-Decoder模型结构

对于VQ-reg, 类似于一个VQ-GAN的损失如下,其中GEN 和 DIS 的损失是间隔一个 iter 进行优化的。
L V Q − G E N = L p i x e l + L p e r c e p t u a l + L g e n + L c o d e b o o k L V Q − D I S = L d i s \begin{align} L_{VQ-GEN}&=L_{pixel}+L_{perceptual}+L_{gen}+L_{codebook}\tag{2-2} \\ L_{VQ-DIS}&=L_{dis}\tag{2-3} \end{align} LVQGENLVQDIS=Lpixel+Lperceptual+Lgen+Lcodebook=Ldis(2-2)(2-3)
对于KL-reg, 类似 VAE,增加了 KL 损失,总得损失如下:
L A E K L − G E N = L p i x e l + L p e r c e p t u a l + L g e n + L k l L A E K L − D I S = L d i s \begin{align} L_{AEKL-GEN}&=L_{pixel}+L_{perceptual}+L_{gen}+L_{kl}\tag{2-4} \\ L_{AEKL-DIS}&=L_{dis}\tag{2-5} \end{align} LAEKLGENLAEKLDIS=Lpixel+Lperceptual+Lgen+Lkl=Ldis(2-4)(2-5)

2.2 LDM (Latent Diffusion Models)

LDM中直接使用 DDPM 的模型,代码中的 LDM 类直接继承 pytorch 版本的 DDPM,里面给出了预测噪声和 x 0 x_0 x0两个版本,默认预测噪声。UNet 的输入为 Encoder 对图像的编码,输出为噪声。由于经过 Encoder 编码之后,输入到Unet 的信息降低很多,论文中对比了 1 , 1 / 2 , 1 / 4 , 1 / 8 , 1 / 16 , 1 / 32 1,1/2,1/4,1/8,1/16,1/32 1,1/2,1/4,1/8,1/16,1/32这几种降采样的参数。当下采样倍数较小时(1、2)模型收敛比较慢,需要更长的训练时间;当下采样倍数较高时(32),由于损失了较多的洗洗脑,模型训练困难;4、8 能达到效果和速度的平衡。损失函数为:
L L D M = L p i x e l + L v l b (2-6) L_{LDM}=L_{pixel}+L_{vlb}\tag{2-6} LLDM=Lpixel+Lvlb(2-6)
其中 pixel 损失为 L1 或者 L2 损失,vlb(变分下界) 损失为时间步对应的权重乘以 pixel 损失。

2.3 条件控制机制

DDPM、LDM 其实只能随机的生成图像,无法进行内容控制。因此作者提出在图像生成阶段加上控制信息,如图2-1中右边模块。比如,对于文本类型的数据,先经过 BERTEmbedder 获得文本向量,concat 到 UNet 网络中。

未完待续~

参考文献(相关论文的引用直接在正文中贴上了论文名称及链接,可以直接点击跳转):
[1] https://zhuanlan.zhihu.com/p/563543020 (前面讲的关于GAN、VAE等模型的对比讲的好)
[2] https://zhuanlan.zhihu.com/p/663880249 (反向过程中问题说明讲的好)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/301609.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

memcached集群

一、介绍 memcache本身没有像redis所具备的数据持久化功能,但是可以通过做集群同步的方式,让各memcache服务器的数据进行同步,从而实现数据的一致性,即保证各memcache的数据是一样的,即使有任何一台memcache发生故障&…

2024-04-07 作业

作业要求: 1> 思维导图 2> 自由发挥应用场景实现一个登录窗口界面。 【可以是QQ登录界面、也可以是自己发挥的登录界面】 要求:尽量每行代码都有注释 作业1: 作业2: 运行代码: #include "myqwidget.h&quo…

提高网站安全性,漏洞扫描能带来什么帮助

随着互联网的蓬勃发展,网站已经成为人们获取信息、交流思想、开展业务的重要平台。然而,与之伴随的是日益严重的网络安全问题,包括恶意攻击、数据泄露、隐私侵犯等。 为了保障网站的安全性,提前做好网站的安全检测非常有必要&…

Spring学习笔记:IOC控制反转、AOP面向切面

挺快的,框架这一部分 文章目录 一、Spring概述入门案例导入依赖包在src下写配置文件创建普通类和测试类 二、IOC(控制反转)2.1 IOC bean 的XML操作(创建对象,注入属性2.2 IOC bean 的 注解 操作 三、AOP(面…

「每日跟读」英语常用句型公式 第6篇

「每日跟读」英语常用句型公式 第6篇 1. As ___ as possible 越 ___ 越好 As soon as possible (ASAP)(越快越好) As happy as possible (越快乐越好) As prepared as possible (越有准备越好) As much/many as possible (越多越好 *不可数/可数) As early as possible …

STM32一个地址未对齐引起的 HardFault 异常

1. 概述 客户在使用 STM32G070 的时候,KEIL MDK 为编译工具,当编译优化选项设置为Level0 的时候,程序会出现 Hard Fault 异常,而当编译优化选项设置为 Level1 的时候,则程序运行正常。表面上看,这似乎是 K…

云计算(五)—— OpenStack基础环境配置与API使用

OpenStack基础环境配置与API使用 项目实训一 【实训题目】 使用cURL命令获取实例列表 【实训目的】 理解OpenStack的身份认证和API请求流程。 【实训准备】 (1)复习OpenStack的认证与API请求流程的相关内容。 (2)熟悉cURL…

mysql慢sql排查与分析

当MySQL遇到慢查询(慢SQL)时,我们可以通过以下步骤进行排查和优化: 标题开启慢查询日志: 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启,可以…

2.SpringBoot利用Thymeleaf实现页面的展示

什么是Thymeleaf? Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。 Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这…

css实现更改checkbox的样式;更改checkbox选中后的背景色;更改checkbox选中后的icon

<input class"check-input" type"checkbox"> .check-input {width: 16px;height: 16px;} /* 设置默认的checkbox样式 */input.check-input[type"checkbox"] {-webkit-appearance: none; /* 移除默认样式 */border: 1px solid #999;outl…

Windows系统下安装java开发环境所需的JDK开发工具包

目录 一、JDK开发工具包下载二、安装三、环境变量配置3.1 添加安装包路径3.2 添加lib路径3.3 添加bin目录 四、检查是否安装成功五、总结 一、JDK开发工具包下载 官网地址&#xff1a;JDK下载 打开网址后有多个版本的JDK&#xff0c;学者根据自己电脑需求选择对应版本下载。如…

6.10物联网RK3399项目开发实录-驱动开发之SPI接口的使用(wulianjishu666)

嵌入式实战开发例程&#xff0c;珍贵资料&#xff0c;开发必备&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1149x7q_Yg6Zb3HN6gBBAVA?pwdhs8b SPI 使用 SPI 简介 SPI 是一种高速的&#xff0c;全双工&#xff0c;同步串行通信接口&#xff0c;用于连接微控制器、…

ics-05-攻防世界

题目 点了半天只有设备维护中心能进去 御剑扫一下 找到一个css 没什么用 再点击云平台设备维护中心url发生了变化 设备维护中心http://61.147.171.105:65103/index.php?pageindex试一下php伪协议 php://filter/readconvert.base64-encode/resourceindex.php base64解一下…

设计模式总结-建造者模式

建造者模式 模式动机模式定义模式结构模式分析建造者模式实例与解析实例&#xff1a;KFC套餐 模式动机 无论是在现实世界中还是在软件系统中&#xff0c;都存在一些复杂的对象&#xff0c;它们拥有多个组成部分&#xff0c;如汽车&#xff0c;它包括车轮、方向盘、发送机等各种…

LC低通滤波

LC滤波器&#xff0c;是指将电感L与电容器 C进行组合设计构成的滤波电路&#xff0c;可去除或通过特定频率的无源器件。电容器具有隔直流通交流&#xff0c;且交流频率越高越容易通过的特性。而电感则具有隔交流通直流&#xff0c;且交流频率越高越不易通过的特性。因此&#x…

C#仿OutLook的特色窗体设计

目录 1. 资源图片准备 2. 设计流程&#xff1a; &#xff08;1&#xff09;用MenuStrip控件设计菜单栏 &#xff08;2&#xff09;用ToolStrip控件设计工具栏 &#xff08;3&#xff09;用StatusStrip控件设计状态栏 &#xff08;4&#xff09;ImageList组件装载树节点图…

考虑预同步的虚拟同步机T型三电平逆变器并离网MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 三相 T 型三电平逆变器电路如图所示&#xff0c;逆变器主回路由三个单相 T 型逆变器组成。 直流侧输入电压为 UPV&#xff0c;直流侧中点电位 O 设为零电位&#xff0c;交流侧输出侧是三相三线制连…

RFID涉密载体柜 RFID智能文件柜系统

涉密载体管控RFID智能柜&#xff08;载体柜DW-G101R&#xff09;通过对涉密物资、设备进行RFID唯一标识并放置于RFID设备涉密物资柜柜体&#xff0c;通过定位每台设备每件涉密物资的位置&#xff0c;实现涉密物资审批、自助借还、防盗等出入库全流程自动化管理。主要管理对象移…

每天五分钟掌握深度学习框架pytorch:本专栏说明

专栏大纲 专栏计划更新章节在100章左右&#xff0c;之后还会不断更新&#xff0c;都会配备代码实现。以下是专栏大纲 部分代码实现 代码获取 为了方便用户浏览代码&#xff0c;本专栏将代码同步更新到github中&#xff0c;所有用户可以读完专栏内容和代码解析之后&#xff0c…

Blender怎么样启动默认移动和Cavity效果

在使用Blender的过程中&#xff0c;有一些特殊的技巧很重要。 比如默认地设置blender打开时&#xff0c;就是移动物体&#xff0c;这样怎么样设置的呢&#xff1f; 需要在界面里打开下面的菜单: 这样就找到默认设置的地方&#xff0c;把下面的移动勾选起来&#xff0c;这样点…