Stable Diffusion扩散模型【详解】小白也能看懂!!

   日期:2024-12-25    作者:qznuoer 移动:http://oml01z.riyuangf.com/mobile/quote/19490.html
文章目录
    • 1、Diffusion的整体过程
    • 2、加噪过程
      • 2.1 加噪的具体细节
      • 2.2 加噪过程的公式推导
    • 3、去噪过程
      • 3.1 图像概率分布
    • 4、损失函数
    • 5、 伪代码过程

此文涉及公式推导,需要参考这篇文章: Stable Diffusion扩散模型推导公式的基础知识

Stable Diffusion扩散模型【详解】小白也能看懂!!

1、Diffusion的整体过程

扩散过程是模拟图像加噪的逆向过程,也就是实现去噪的过程
加噪是如下图从右到左的过程,称为反向扩散过程
去噪是从左往右的过程,称为前向扩散过程

2、加噪过程

加噪过程如下图,下一时刻的图像是在上一时刻图像的基础上加入噪音生成的
图中公式的含义: x t x_t xt​表示 t 时刻的图像, ϵ t epsilon_t ϵt​ 表示 t 时刻生成的随机分布的噪声图像, β t beta_t βt​表示 t 时刻指定的常数,不同时刻的 β t beta_t βt​不同,随着时间 t 的递增而增加,但需要注意 β t beta_t βt​的值始终是比较小的,因为要让图像的数值占较大的比例

2.1 加噪的具体细节

A、将图像 x x x像素值映射到[-1,1]之间

图像加噪不是在原有图像上进行加噪的,而是通过把图片的每个像素的值转换为-1到1之间,比如像素的值是 x x x,则需要经过下面公式的处理 x 255 × 2 − 1 frac{x}{255} imes2-1 255x​×2−1,转换到范围是-1到1之间

代码

 

B、生成一张尺寸相同的噪声图片,像素值服从标准正态分布
ϵ ∼ N ( 0 , 1 ) epsilon sim N(0,1) ϵ∼N(0,1)

 

C、 α alpha α和 β beta β
每个时刻的 β t beta_t βt​都各不相同,0 < β t beta_t βt​< 1,因为 β t beta_t βt​是作为权重存在的,且 β 1 < β 2 < β 3 < β T − 1 < β T beta_1< beta_2< beta_3< beta_{T-1}< beta_T β1​<β2​<β3​<βT−1​<βT​

代码

 

β beta β的取值代码,比如 β 1 beta_1 β1​取值low, β T beta_T βT​取值high

 

α t = 1 − β t alpha_t=1-beta_t αt​=1−βt​,alphas = 1.0 - betas

 

D、任一时刻的图像 x t x_t xt​都可以由原图像 x 0 x_0 x0​直接生成(可以由含 x 0 x_0 x0​的公式直接表示)

x t x_t xt​与 x 0 x_0 x0​的关系: x t = 1 − α t ‾ ϵ + α t ‾ x 0 x_t=sqrt{1-overline{alpha_t}}epsilon+sqrt{overline{alpha_t}}x_0 xt​=1−αt​​ ​ϵ+αt​​ ​x0​, α t = 1 − β t alpha_t=1-beta_t αt​=1−βt​, α t ‾ = α t α t − 1 . . . α 2 α 1 overline{alpha_t}=alpha_talpha_{t-1}…alpha_2alpha_1 αt​​=αt​αt−1​…α2​α1​

由上式可知, β t beta_t βt​是常数,则 α t alpha_t αt​, 1 − α t ‾ sqrt{1-overline{alpha_t}} 1−αt​​ ​, α t ‾ sqrt{overline{alpha_t}} αt​​ ​也是常数, ϵ epsilon ϵ也是已知的,所以可以直接由 x 0 x_0 x0​生成 x t x_t xt​

 
 
2.2 加噪过程的公式推导

加噪过程

加噪过程的公式

总结

3、去噪过程

去噪是加噪的逆过程,由时间T时刻的图像逐渐去噪到时刻为0的图像
下面介绍一下由时刻为T的图像 x T x_T xT​去噪到时刻为T-1的图像 x T − 1 x_{T-1} xT−1​,输入为时刻为t的图像 x t x_t xt​和时刻t,喂给Unet网络生成 ϵ θ epsilon_ heta ϵθ​,其中 θ heta θ是Unet网络的所有参数,然后由下图中的 x t − 1 {bf x}_{t-1} xt−1​的公式即可生成时刻为t-1的图像 x t − 1 {bf x}_{t-1} xt−1​

3.1 图像概率分布

去噪过程的2个假设:
(1)加噪过程看作马尔可夫链,假设去噪过程也是马尔可夫链
(2)假设去噪过程是高斯分布

假设数据集中有100张图片,每张图片的shape是4x4x3,假设每张图片的每个channel的每个像素点都服从正态分布, x t − 1 x_{t-1} xt−1​的正态分布的均值 μ mu μ 和方差 σ 2 sigma^2 σ2 只和 x t x_t xt​有关,已知在t时刻的图像,求t-1时刻的图像

1、因为均值和方差 μ ( x t ) mu(x_t) μ(xt​), σ 2 ( x t ) sigma^2(x_t) σ2(xt​) 无法求出,所以我们决定让网络来帮我们预测均值和方差
2、因为每一个像素都有自己的分布,都要预测出一个均值和方差,所以网络输出的尺寸需要和图像尺寸一致,所以我们选用 Unet 网络
3、作者在论文中表示,方差并不会影响结果,所以网络只要预测均值就可以了

4、损失函数

为了实现对极大似然函数的求导,把对极大似然求导的问题转换为ELBO :Evidence Lower Bound

对ELBO的公式继续进行化简

q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1​∣xt​,x0​)公式的推导如下

5、 伪代码过程

下图是训练阶段的伪代码,第1行和第6行表示第2行到第5行的代码一直在循环
第2行:从数据集中筛选出一张图像,即为 x 0 bf{x}_0 x0​,
第3行:从0到 T T T的均匀分布中筛选出 t t t,源码中 T T T的范围设为1000
第4行:从均值为0,方差为1的标准正态分布中采样出 ϵ epsilon ϵ, ϵ epsilon ϵ的size和 x 0 bf{x}_0 x0​的size是相同的
第5行: x t x_t xt​和从0到 T T T的均匀分布中筛选出 t t t喂给Unet,输出 ϵ θ epsilon_ heta ϵθ​,和第4行代码采样出的 ϵ epsilon ϵ, ∣ ∣ ϵ − ϵ θ ( . . . ) ∣ ∣ 2 ||epsilon-epsilon_ heta(…)||^2 ∣∣ϵ−ϵθ​(…)∣∣2的均方差作为损失函数,对这个损失函数求梯度进行参数更新,参数是Unet所有参数的集合 θ heta θ

下图是推导/采样/生成图片阶段的伪代码

第1行:从随机分布中采样一个 x T {bf x}_T xT​
第2行:遍历从 T T T到1
第3行:从随机分布中采样一个 z bf{z} z
第4行:已知 z bf{z} z、 α t alpha_t αt​、 σ t sigma_t σt​, ϵ θ epsilon_ heta ϵθ​是Unet网络生成的,就可以得到 x t − 1 {bf x}_{t-1} xt−1​
循环2-4行代码


关于AI绘画技术储备

学好 AI绘画 不论是就业还是做副业赚钱都不错,但要学会 AI绘画 还是要有一个学习规划。最后大家分享一份全套的 AI绘画 学习资料,给那些想学习 AI绘画 的小伙伴们一点帮助

👉[[CSDN大礼包《StableDiffusion安装包&AI绘画入门学习资料》免费分享]]安全链接,放心点击

对于0基础小白入门

如果你是零基础小白,想快速入门AI绘画是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:stable diffusion安装包、stable diffusion0基础入门全套PDF,视频学习教程。带你从零基础系统性的学好AI绘画

👉stable diffusion新手0基础入门PDF👈

👉AI绘画必备工具👈

👉AI绘画基础+速成+进阶使用教程👈

👉大厂AIGC实战案例👈

👉12000+AI关键词大合集👈


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号