【大模型系列】图片生成(DDPM/VAE/StableDiffusion/ControlNet/LoRA)

news2024/12/24 11:36:33

文章目录

  • 1 DDPM(UC Berkeley, 2020)
    • 1.1 如何使用DDPM生成图片
    • 1.2 如何训练网络
    • 1.3 模型原理
  • 2 VAE:Auto-Encoding Variational Bayes(2022,Kingma)
    • 2.1 如何利用VAE进行图像增广
    • 2.2 如何训练VAE网络
    • 2.3 VAE原理
      • 2.3.1 Auto-Encoder
      • 2.3.2 VAE编码器
      • 2.3.3 VAE解码器
  • 3 Stable Diffusion(2022, CompVis & RunwayML)
    • 3.1 Stable diffusion可以干什么?
    • 3.2 Stable diffusion解决什么问题?
    • 3.3 训练过程
  • 4 ControlNet(2023, Stanford)
    • 4.1 网络结构
    • 4.2 总结
  • 5 LoRA:一种低成本的大模型微调方案(2021,微软)
    • 5.1 LoRA要解决什么问题?
    • 5.2 实际的应用方式
    • 5.3 总结

1 DDPM(UC Berkeley, 2020)

DDPM:Denoising Diffusion Probabilistic Models

  • Paper:https://arxiv.org/abs/2006.11239

  • 详细公式推导:https://arxiv.org/pdf/2208.11970.pdf

  • 博客:

    • https://juejin.cn/post/7215640327633748027
    • https://zhuanlan.zhihu.com/p/563661713
    • https://hf-mirror.com/blog/annotated-diffusion

生成模型的4种类型:

在这里插入图片描述
Source: Lilian_Weng

扩散模型中最重要的思想根基是马尔可夫链,它的一个关键性质是平稳性。即如果一个概率随时间变化,那么再马尔可夫链的作用下,它会趋向于某种平稳分布,时间越长,分布越平稳。

扩散模型包括两个过程:前向过程(forward process)和反向过程(reverse process),其中前向过程又称为扩散过程(diffusion process),如下图所示。无论是前向过程还是反向过程都是一个参数化的马尔可夫链(Markov chain),其中反向过程可以用来生成数据,这里我们将通过变分推断来进行建模和求解。
在这里插入图片描述

  • 前向过程(扩散过程): 逐渐将高斯噪声添加到图像中,直到得到一个纯噪声的图像;
  • 反向过程:从纯噪声图像中逐渐对其进行去噪,直到得到真实的图像。

1.1 如何使用DDPM生成图片

参考代码:https://github.com/zoubohao/DenoisingDiffusionProbabilityModel-ddpm-/blob/main/Diffusion/Diffusion.py
在这里插入图片描述

DDPM使用U-Net作为图像生成网络,并在中间层添加了Attention模块,用于将time embedding与image embedding进行计算,其流程如下:

  • Step1:随机生成一组噪声,作为初始图像xT,后续过程就是就这个图像进行去噪
  • Step2:将 x t x_t xt输入到UNet中,得到输出
  • Step3:根据下列公式计算 x t − 1 x_{t-1} xt1,即为( x t − U n e t ( x t ) x_t-Unet(x_t) xtUnet(xt))与一组的噪声的加权
    x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)+\sigma_t \mathbf{z} xt1=αt 1(xt1αˉt 1αtϵθ(xt,t))+σtz
  • Step4:t=0的时候,不加上述公式的最后一项噪声,直接输出第一项作为最后的结果。

其中:

  • α t α_t αt是t时刻的系数, α t = 1 − β t αt = 1 - βt αt=1βt,其中β取值[0.0001, 0.02]
  • α ˉ t \bar\alpha_{t} αˉt是t时刻α系数累乘的结果
  • z是从正太分布中采样的一个跟输出一样大小的随机噪声
  • σ t = β t ∗ ( 1 − α ˉ t − 1 ) / ( α ˉ t ) ≈ β t = 1 − α t \sigma_t = \beta_t * (1 - \bar\alpha_{t-1}) / (\bar\alpha_{t}) ≈ \beta_t = 1 - \alpha_t σt=βt(1αˉt1)/(αˉt)βt=1αt
  • ϵ θ ( x t , t ) \epsilon_\theta(x_t, t) ϵθ(xt,t)表示t时刻的网络的输出

1.2 如何训练网络

在这里插入图片描述

扩散模型的过程是逐渐向图像中加入噪声的过程,从时刻0~T时刻的t的变化叫做差异时间表。DDPM使用的是线性时间表:

  • 对T个时间步做均匀拆分得到 β t \beta_{t} βt(与时间T相关的线性函数),越往后 β t \beta_{t} βt越大
  • 根据 β t \beta_t βt计算 α t = 1 − β t \alpha_t = 1 - \beta_t αt=1βt

随着逐渐添加噪声,图片越来越难以区分,直到彻底变成一个二维高斯噪声
在这里插入图片描述

Source: The Annotated Diffusion Model, Niels Rogge et al.

训练流程如下:

  • Step1: 准备输入图像x0,将其归一化到[-1, 1]
  • Step2: 随机生成一个与图像尺寸的相同的随机高斯噪声ε
  • Step3: 通过 x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t = \sqrt{\bar\alpha_t}x_0 + \sqrt{1 - \bar\alpha_t}\epsilon xt=αˉt x0+1αˉt ϵ,计算经过T次加噪之后的结果;
  • Step4: 计算随机高斯噪声 ϵ \epsilon ϵ与输入图片 x 0 x_0 x0被T次加噪之后的结果 x t x_t xt之间的均方误差损失MSE

扩散模型的损失函数是计算两张图像的相似性,输入是加完噪声后的图像,输出是预测的噪声, 计算两者的MSE损失:

def p_losses(denoise_model, x_start, t, noise=None, loss_type="l1"):
    # 1. 根据时刻t计算随机噪声分布,并对图像x_start进行加噪
    x_noisy = q_sample(x_start=x_start, t=t, noise=noise)
    # 2. 根据噪声图像以及时刻t,预测添加的噪声
    predicted_noise = denoise_model(x_noisy, t)
    # 3. 对比添加的噪声和预测的噪声的相似性
    loss = F.mse_loss(noise, predicted_noise)
    return loss

1.3 模型原理

公式推导参考资料(后续更新公式推导笔记):

  • https://arxiv.org/pdf/2006.11239.pdf
  • https://zhuanlan.zhihu.com/p/565901160
  • https://zhuanlan.zhihu.com/p/563661713
  • https://lilianweng.github.io/posts/2021-07-11-diffusion-models/

2 VAE:Auto-Encoding Variational Bayes(2022,Kingma)

参考资料:

  • Paper:https://arxiv.org/pdf/1312.6114.pdf
  • 博客:
    • https://blog.51cto.com/Lolitann/5920438
    • https://zhuanlan.zhihu.com/p/578619659

VAE模型是Kingma(也是Adam的作者)大神在2022年发表的文章,是一篇非常非常经典,且实现非常优雅的生成模型,同时它还为bayes概率图模型难以求解的问题提供了一种有效的思路。
在这里插入图片描述
Source: 卷积变分自编码器

2.1 如何利用VAE进行图像增广

VAE是一种思想,需要使用Auto-Encoder结构,包含一个Encoder和一个Decoder,在论文中作者仅仅采用了简单MLP来实现Encoder和Decoder,在实际实践中可以使用更为复杂的网络结构以提升网络的生成效果。下面阐述基于VAE思想的图片生成流程:

  • Step1: 图片输入到Encoder中得到图像编码image embedding
  • Step2: 将图像编码输入到不同的分支中得到均值 μ \mu μ和方差 σ \sigma σ向量;
  • Step3: 从正太分布中随机产生一个向量z;
  • Step4: 计算新的向量: z ’ = exp ⁡ ( σ ) × z + μ z’ = \exp(\sigma)×z+\mu z=exp(σ)×z+μ
  • Step5: 将新的向量送入Decoder中产生图片

2.2 如何训练VAE网络

在AE中只需要最小化重构损失。但是在VAE中就不能只最小化重构损失了,因为是模型自己学的,如果不加约束,那它可以直接学成0,开摆了,那模型就会退化回AE。所以需要加条件限制,其实就是计算其与标准正太分布的距离,让编码器输出的参数靠近标准正太分布(涉及到极大似然)。因此整体损失函数为:

L o s s = M S E ( X , X ′ ) + K L ( N ( μ , σ 2 ) , N ( 0 , 1 ) ) K L ( N ( μ , σ 2 ) , N ( 0 , 1 ) ) = 1 2 ( μ 2 + σ 2 − 2 log ⁡ ( σ ) − 1 ) Loss = MSE(X, X') + KL(N(\mu, \sigma^2), N(0, 1)) \\ KL(N(\mu, \sigma^2), N(0, 1)) = \frac{1}{2}(\mu^2+\sigma^2-2\log(\sigma) - 1) Loss=MSE(X,X)+KL(N(μ,σ2),N(0,1))KL(N(μ,σ2),N(0,1))=21(μ2+σ22log(σ)1)
第一项为重构损失,第二项为编码器输出的均值与方差与标准正太分布之间的KL散度。

2.3 VAE原理

2.3.1 Auto-Encoder

自编码器的目的是利用无标签数据找到一个有效的低维度的特征提取器,输入样本x通过编码器获得低维度特征z,最后通过解码器重构。
在这里插入图片描述
问题在于,这种方式只记录了x和z的对应关系,并没有泛化能力。

2.3.2 VAE编码器

VAE的编码器不再是对一个样本直接生成一个码空间上的一个点,而是使一个样本对应一个分布。如何做到的呢?AE编码器是直接得到一个低维的特征表示,而VAE会生成一组均值和方差,这样编码器出来的东西就可以变成一个正太分布,再从这个分布中采样获得z编码。
在这里插入图片描述
VAE出来的编码是: z = exp ⁡ ( σ ) × ϵ + μ z = \exp(\sigma)×\epsilon+\mu z=exp(σ)×ϵ+μ, 这里使用的参数重整化技巧。即在一个标准的正太分布中采样一个 ϵ \epsilon ϵ,再与编码器输出的均值跟方差进行运算,就可以等价于从编码器输出的正太分布中进行的采样。使用这种方式的原因在于直接从原始正太分布中采用出z的这个过程是不可导的,因此采用参数重整化来实现整个过的可导。

重参数技巧

英文名是reparameterization trick,就是我们要从 p ( Z ∣ X k ) p\left(Z \mid X_k\right) p(ZXk) 中采样一个 Z k Z_k Zk 出来,尽管我们知道了 p ( Z ∣ X k ) p\left(Z \mid X_k\right) p(ZXk) 是正态分布,但是均值方差都是靠模型算出来的,我们要靠这个过程反过来优化均值方差的模型,但是“采样”这个操作是不可导的,而采样的结果是可导的。我们利用
1 2 π σ 2 exp ⁡ ( − ( z − μ ) 2 2 σ 2 ) d z = 1 2 π exp ⁡ [ − 1 2 ( z − μ σ ) 2 ] d ( z − μ σ ) \begin{aligned} & \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left(-\frac{(z-\mu)^2}{2 \sigma^2}\right) d z \\ = & \frac{1}{\sqrt{2 \pi}} \exp \left[-\frac{1}{2}\left(\frac{z-\mu}{\sigma}\right)^2\right] d\left(\frac{z-\mu}{\sigma}\right) \end{aligned} =2πσ2 1exp(2σ2(zμ)2)dz2π 1exp[21(σzμ)2]d(σzμ)

这说明 ( z − μ ) / σ = ε (z-\mu) / \sigma=\varepsilon (zμ)/σ=ε 是服从均值为0 、方差为 1 的标准正态分布的,要同时把 d z d z dz 考虑进去,是因为乘上 d z d z dz 才算是概率,去掉 d z d z dz 是概率密度而不是概率。这时候我们得到: 从 N ( μ , σ 2 ) 从 \mathcal{N}\left(\mu, \sigma^2\right) N(μ,σ2) 中采样一个 Z Z Z ,相当于从 N ( 0 , I ) \mathcal{N}(0, I) N(0,I) 中采样一个 ε \varepsilon ε ,然后让 Z = μ + ε × σ Z=\mu+\varepsilon \times \sigma Z=μ+ε×σ

于是,我们将从 N ( μ , σ 2 ) \mathcal{N}\left(\mu, \sigma^2\right) N(μ,σ2) 来样变成了从 N ( 0 , I ) \mathcal{N}(0, I) N(0,I) 中来样,然后通过参数变换得到从 N ( μ , σ 2 ) \mathcal{N}\left(\mu, \sigma^2\right) N(μ,σ2) 中采样的结果。这样一来,“采样”这个操作就不用参与梯度下降了,改为采样的结果参与,使得整个模型可训练了。
在这里插入图片描述
Source: 变分自编码器(一):原来是这么一回事

2.3.3 VAE解码器

在这里插入图片描述

高斯混合模型:任何一个部分都可以用多个高斯分布取逼近(类似于波的分解)。
编码器的作用是把输入分布编码成一个码空间,解释器的作用就是从这个码空间中采样,去尽力还原编码器的那个分布。

3 Stable Diffusion(2022, CompVis & RunwayML)

参考资料:

  • Paper:https://arxiv.org/pdf/2112.10752.pdf

  • 博客:

    • https://developer.aliyun.com/article/1134030
    • https://www.zhangzhenhu.com/aigc/稳定扩散模型.html

Stable diffusion是latent diffusion models(LDMs,见Paper链接)的一个开源预训练模型。LDM本身是由CompVis提出并联合Runway ML进行开发实现,后来Stability AI也参与进来并提供了一些资源,联合搞了一个预训练的LDM模型,成为Stable diffusion。
在这里插入图片描述

Source: Deephub IMBA

3.1 Stable diffusion可以干什么?

Stable diffusion相较于DDPM,可以增加额外的指导信息,可以生成我们想要的图像:

  • 基于本文生成图像
  • 基于图像生成图像

3.2 Stable diffusion解决什么问题?

DDPM的问题:

  • DDMP在生成图像时,需要输入与图像尺寸一样大的随机噪声进行前向去噪。生成的图像分辨率越高,所需的计算和显存资源也就越多,耗费的成本也就越高。
  • DDPM无法控制图像生成的方向;

Stable diffusion的解决方案:

  • 针对生成高分辨率图像成本高的问题:Stable diffusion先引入一个编码器,对原始图像进行压缩编码,然后对编码后的向量进行扩散过程,即在潜在空间进行扩散;
  • 针对无法控制图像生成方向的问题:在UNet中加入Attention机制,处理条件变量y(语义、文本等)用于指导图像的生成;

3.3 训练过程

  • Step1: 训练一个自编码器,将图像数据压缩为低维表示:
    在这里插入图片描述

Source: Deephub IMBA

  • Step2: 在latent space进行正向和反向扩散过程:
    在这里插入图片描述

Source: Deephub IMBA

正向过程:向潜在数据中添加噪声

反向过程:从潜在数据中去除噪声

  • Step3: 在反向过程中接受条件输入:如文本、图像、语义等
    在这里插入图片描述

  • Step4: 计算loss

相较于DDMP,条件化的LDM目标函数稍微变化了一些,即预测的噪声需要上一轮的结果、时间步和条件输入(文本、图像等)
在这里插入图片描述

4 ControlNet(2023, Stanford)

  • Paper:https://arxiv.org/abs/2302.05543

  • Github:https://github.com/lllyasviel/ControlNet-v1-1-nightly

  • 博客:

    • https://www.zhangzhenhu.com/aigc/controlnet.html
    • https://blog.csdn.net/xs1997/article/details/134482651

Stable diffusion支持text guidance图像生成,但是文本的描述能力是有限的,图像的很多细节是无法用文本进行清晰描述的,比如人的姿态等。ControlNet在Stable Diffusion的基础上加入了更多可控生成方式,通过一张图像(姿态图、线稿、草图等)去控制图像生产的过程,这个额外的输入作为stable diffusion的一个控制条件condition,它可以控制图像的生成结果,使其更符合我们输入的条件图像特征。ControlNet和SAM同时获得了ICCV2023最佳论文奖。

在这里插入图片描述

4.1 网络结构

要使图像作为额外的信息,需要先对图像进行编码,controlNet的做法是直接利用stable diffusion的UNet来作为图像编码器:
在这里插入图片描述

首先回顾一下 Unet 的结构,Unet 的网络结构呈现一个 U 型,按照左侧、中间底部、右侧的划分方式,可以将整个网络结构分为三个子部分:

  • 降采样部分,一共包含12个网络块(blocks),把输入的 64×64 的 latent image 逐步降维到 8×8, 这个过程类似于压缩过程,所以可以称为编码器(encoder),也可以称为降采样(down sample)。
  • 中间部分,U 型结构的最低层,负责处理 8×8 的数据,一般称为 Middle block。
  • 上采样部分,同样包含12个网络块(blocks),把输入的 8×8 的 latent image 逐步升维到 64×64, 这个过程类似于解压过程,所以可以称为解码器(decoder),也可以称为上采样(up sample)。

注:zero convolution层指的是卷积层z初始化为0的1x1卷积,这样在训练的前期不会影响stable diffusion图像生成部分,不对原始SD的能力造成较大的破坏。

ControlNet的输出会和Unet的对应部分输出的元素Add到一起,然后再通过跳线输入给Unet的Decoder部分,所以增加了ControlNet并不会影响原来的结构。

4.2 总结

ControlNet 是一个任务相关的端到端方法,即对于每一种控制类型都要训练一个特定的 ControlNet 支持, 比如线图控制、深度图控制、姿态控制等等。这样有好处也有坏处, 单独看一个场景,拥有使用简单、训练成本低等优点。 但是,如果面对一个复杂场景(多场景),反而变得略麻烦,每一个细分场景都要训练和维护一个模型, 成本高昂,也不易用。

5 LoRA:一种低成本的大模型微调方案(2021,微软)

LoRA: Low-Rank Adaptation of Large Language Models

  • Paper:https://arxiv.org/abs/2106.09685

  • 博客:

    • https://finisky.github.io/lora/
      • https://www.cnblogs.com/LittleHann/p/17318509.html#_label3

5.1 LoRA要解决什么问题?

微调大模型目前的方案有:部分微调、使用adapters和prompting,这些方法都存在一些问题:

  • Adapters引入额外的推理延迟 (由于增加了模型层数)
  • Prefix-Tuning难于训练,且预留给prompt的序列挤占了下游任务的输入序列空间,影响模型性能

LoRA的解决思路: 不对原始模型进行微调

LoRA的思想也很简单,在原始大模型旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的intrinsic rank。训练的时候固定大模型的参数,只训练降维矩阵A与升维矩阵B。而模型的输入输出维度不变,输出时将BA与大模型的结果叠加。用随机高斯分布初始化A,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵。这种思想有点类似于残差连接,同时使用这个旁路的更新来模拟full finetuning的过程。
在这里插入图片描述

LoRA核心点:

  • 不对原始模型进行微调:增加旁路,训练分布的偏移量来模拟对原始网络的整体finetune
  • 对旁路矩形进行低秩分解以降低旁路模型训练参数;

5.2 实际的应用方式

理论上lora可以支持任何线性层,包括transformer中的4个attention矩阵和2个feed forward中的矩阵,论文只在attention上做了实验,它限制总参数量不变的情况下观察是:

  • 在attention其中一个矩阵上,放一个更高秩的lora效果好?
  • 在多个attention的矩阵上,分别放置低秩一点的lora效果好?

结论是:把秩分散到多个矩阵上,效果会优于集中在单个上的效果。在一般任务上很小的秩就可以和很大秩具备类似的效果,这也证明了作者一开始做出的改变量低秩的假设。

流程如下:

  • Step1: 针对原始网络中Attention模块的变换矩阵W,构造一个旁路矩阵ΔW;
  • Step2: 将旁路矩阵ΔW底秩分解成AB两个矩阵,A的维度是[n, r], B的维度是[r, m],AB相乘的结果维度是[n, m],这就与原理的矩阵规模一样了;
  • Step3: 训练时将AB的结果与原来网络中的矩阵W相加,计算网络输出前向结果和Loss,反向传播时只更新A、B矩阵;
  • Step4: 模型训练完成后,将AB的结果与对应的原网络中的参数进行相加,即可得到更新后的网络的参数;

5.3 总结

  • LoRA与Adapter的区别:
    • adapter是在模块的后面接上一个mlp,对模块的计算结果进行一个后处理
    • lora是和模块的计算并行的去做一个mlp,和原来的模块共用一个输入
  • LoRA通过低秩分解,降低网络训练测参数量;
  • LoRA训练完成之后可以合并到原始网络中,不会增加额外的耗时与计算量;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手撕HashMap底层源码 (JDK1.7版本的HashMap)

day27 集合框架 标绿已经学习底层,深入底层主要是研究实现类底层 手撕HashMap底层源码 JDK1.7版本的HashMap 切换版本 原因:jdk1.7和jdk1.8的HashMap不同(头插法/尾插法) 首先如果没有jdkjre1.7,就安装jdkjre1.7&am…

黄金期货在投资组合多样化中的作用

投资组合多样化是投资者通过持有多种不同的资产来降低风险和提高收益的一种投资策略。黄金期货是投资组合多样化中的一种选择,它可以为投资者提供一种在市场波动期间保持资产价值的方法。在本文中,我们将探讨黄金期货在投资组合多样化中的作用以及投资黄…

网站首页添加JS弹屏公告窗口教程

很多小白站长会遇到想给自己的网站添加一个弹屏公告&#xff0c;用于做活动说明、演示站提示等作用与目的。 下面直接上代码&#xff1a;&#xff08;直接复制到网页头部、底部php、HTML文件中&#xff09; <script src"https://www.mohuda.com/site/js/sweetalert.m…

中国金融统计年鉴、中国保险统计年鉴、中国人口与就业统计年鉴、国民经济和社会发展公报、中国劳动统计年鉴

数据下载链接&#xff1a;百度云下载链接 统计年鉴是指以统计图表和分析说明为主&#xff0c;通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年…

JVM 面试——G1和ZGC的区别

ZGC是一款JDK 11中新加入的具有实验性质的低延迟垃圾收集器ZGC的目标主要有4个 支持TB量级的堆。我们生产环境的硬盘还没有上TB呢&#xff0c;这应该可以满足未来十年内&#xff0c;所有JAVA应用的需求了吧。最大GC停顿时间不超10ms。目前一般线上环境运行良好的JAVA应用Minor …

versal pcie/gty quad location debug

qdma的pcie 不能都放在同样的位置 pcie 和gty quad的对应关系 在nvme工程中&#xff0c; 把pcie错误的都放在x1y0&#xff1b; 工具包critical warning&#xff0c;工具自动把其中一个位置改成了x1y2 CRITICAL WARNING: [Vivado 12-2285] Cannot set LOC property of instanc…

物联网技术助力智慧城市转型升级:智能、高效、可持续

目录 一、物联网技术概述及其在智慧城市中的应用 二、物联网技术助力智慧城市转型升级的路径 1、提升城市基础设施智能化水平 2、推动公共服务智能化升级 3、促进城市治理现代化 三、物联网技术助力智慧城市转型升级的成效与展望 1、成效显著 2、展望未来 四、物联网技…

C#,数值计算,矩阵相乘的斯特拉森(Strassen’s Matrix Multiplication)分治算法与源代码

Volker Strassen 1 矩阵乘法 矩阵乘法是机器学习中最基本的运算之一,对其进行优化是多种优化的关键。通常,将两个大小为N X N的矩阵相乘需要N^3次运算。从那以后,我们在更好、更聪明的矩阵乘法算法方面取得了长足的进步。沃尔克斯特拉森于1969年首次发表了他的算法。这是第…

基于Centos7部署OceanBase4.2版本单副本集群

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

PDM产品数据管理系统、产品数据管理系统有哪些?

产品数据管理系统&#xff08;Product Data Management&#xff0c;简称PDM&#xff09;主要用于管理公司产品的各类信息&#xff0c;如品牌管理、系列管理、颜色管理以及产品生命周期等。以下是一些常见的产品数据管理系统&#xff1a; 彩虹PDM系统是一款功能强大的在线产品数…

谁有FPGA高速接口学习路线?身边的资料太少了,不知道该从哪入手?

找FPGA教程&#xff0c;FPGA项目&#xff0c;高速接口的来看 首先针对高速接口教程市面上没有完整的免费课提供&#xff0c;压根找不到.... 所以推荐&#xff1a; FPGA课程5.0 版&#xff1a;Xilinx体系高速接口项目实操&#xff0c;全新升级&#xff0c;课程完全根据企业招…

C# Onnx C2PNet 图像去雾 室内场景

目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx C2PNet 图像去雾 室内场景 介绍 github地址&#xff1a;GitHub - YuZheng9/C2PNet: [CVPR 2023] Curricular Contrastive Regularization for Physics-aware Single Image Dehazing [CVPR 2023] Curricular Contrasti…

避免阻塞主线程 —— Web Worker 示例项目

前期回顾 迄今为止易用 —— 的 “盲水印“ 实现方案-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136720192?spm1001.2014.3001.5501 目录 CSDN 彩色之外 &#x1f4dd; 前言 &#x1f6a9; 技术栈 &#x1f6e0;️ 功能 &#x1f916; 如何运行 ♻️ …

C# OpenCvSharp 图片批量改名

目录 效果 项目 代码 下载 C# OpenCvSharp 图片批量改名 效果 项目 代码 using NLog; using OpenCvSharp; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; namespace OpenCvSharp_Demo { publi…

国创证券策略:股指预计维持震荡格局 关注汽车、通信设备等板块

国创证券指出&#xff0c;近期两市指数持续反弹创新高&#xff0c;但沪指现已率先出现滞涨状况&#xff0c;一起均已进入阻力重压区。不过当时技术形状上坚持较好&#xff0c;可持续做多&#xff0c;一旦跌破重要支撑如沪指的3030点&#xff0c;则需降仓防卫&#xff0c;防止指…

空间、向量和序列

摘要&#xff1a; 在数学中&#xff0c;“空间”这一概念超越了简单的集合含义&#xff0c;它通过对集合添加特定的结构和运算规则&#xff0c;构建出了具有丰富内涵的数学对象。在这些空间中&#xff0c;数学对象&#xff08;如向量、点、函数等&#xff09;是空间的元素&…

手写Mybatis自动填充插件

目录 一、Mybatis插件简介&#x1f959;二、工程创建及前期准备工作&#x1f96b;实现代码配置文件 三、插件核心代码实现&#x1f357;四、测试&#x1f953; 一、Mybatis插件简介&#x1f959; Mybatis插件运行原理及自定义插件_简述mybatis的插件运行原理,以及如何编写一个…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-2、线条平滑曲面且可通过面观察柱体变化(二)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

类比半导体基于高边驱动方案选型

一、高边驱动简介 高边驱动&#xff0c;也称之为高边开关&#xff0c;其主要用于车内负载的驱动与开关&#xff0c;并对负载进行保护和诊断。高边驱动以高可靠性、灵活性、低功耗以及小型轻量等特点&#xff0c;正逐渐替代传统的保险丝、继电器等方案。 随着新能源汽车的渗透…

【蓝桥杯-单片机】基础模块:数码管

文章目录 【蓝桥杯-单片机】基础模块&#xff1a;数码管01 数码管原理图什么是位选和段选共阳极数码管和共阴极数码管的区分&#xff08;1&#xff09;共阳极数码管&#xff08;Common Anode&#xff09;&#xff1a;&#xff08;2&#xff09;共阴极数码管&#xff08;Common …