一文读懂Stable Diffusion 论文原理+代码超详细解读

背景

Stable diffusion是一个基于Latent Diffusion Models(LDMs)实现的的文图生成(text-to-image)模型。

2022年8月,游戏设计师Jason Allen凭借AI绘画作品《太空歌剧院(Théâtre D’opéra Spatial)》获得美国科罗拉多州博览会“数字艺术/数码摄影“竞赛单元一等奖,“AI绘画”引发全球热议。得力于Stability AI开源了Stable Diffusion,图像AIGC现在正在快速的发展迭代。

回顾

Stable Diffusion涉及的技术有Diffusion Model(DDPM)AttentionAutoencoder

DDPM

扩散模型包括两个过程:前向过程(forward process)和反向过程(reverse process),其中前向过程又称为扩散过程(diffusion process)。无论是前向过程还是反向过程都是一个参数化的马尔可夫链(Markov chain),其中反向过程可用于生成数据样本(它的作用类似GAN中的生成器,只不过GAN生成器会有维度变化,而DDPM的反向过程没有维

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Stable Diffusion Model (SDM) 是一种基于非参数稳定分布的模型,用于估计数据分布的密度函数。SDM 的核心思想是通过稳定分布中的参数来描述数据的分布形态。 稳定分布是一类具有“稳定性”特征的分布,即对于任意两个独立随机变量的和,其和的分布仍然是该类稳定分布的一个变种。稳定分布的特点是其拖尾(tail)程度比较重,能够较好地描述数据的长尾分布。常用的稳定分布有 Cauchy 分布、Levy 分布、Gaussian 分布等。 SDM 的基本思路是假设数据的分布是稳定分布,然后通过最大化似然函数来估计稳定分布的参数。SDM 的估计过程可以使用 EM 算法进行求解。 下面给出一个简单的 SDM 的 Python 实现,其中使用了 Scipy 库中的稳定分布函数实现。该实现基于 EM 算法进行求解。 ```python import numpy as np from scipy.stats import levy_stable class SDM: def __init__(self, alpha=1.5, beta=0, mu=0, sigma=1): self.alpha = alpha self.beta = beta self.mu = mu self.sigma = sigma def fit(self, data, max_iter=100, eps=1e-6): n = len(data) log_likelihood_old = -np.inf for i in range(max_iter): # E-step: calculate the responsibility u = np.random.rand(n) x = self.inv_cdf(u) log_likelihood = np.sum(np.log(self.pdf(x))) if np.abs(log_likelihood - log_likelihood_old) < eps: break log_likelihood_old = log_likelihood # M-step: update the parameters self.alpha, self.beta, self.mu, self.sigma = levy_stable.fit(x, alpha=self.alpha, beta=self.beta, loc=self.mu, scale=self.sigma) def pdf(self, x): return levy_stable.pdf(x, alpha=self.alpha, beta=self.beta, loc=self.mu, scale=self.sigma) def inv_cdf(self, u): return levy_stable.ppf(u, alpha=self.alpha, beta=self.beta, loc=self.mu, scale=self.sigma) ``` 上述代码中,`SDM` 类的 `fit` 方法用于对数据进行拟合,`pdf` 方法用于计算稳定分布的概率密度函数,`inv_cdf` 方法用于计算稳定分布的累积分布函数的反函数(即分位数函数)。在 `fit` 方法中,我们使用 EM 算法对稳定分布的参数进行迭代更新,直到似然函数的变化量低于阈值 `eps` 或达到最大迭代次数 `max_iter`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值