【Diffusion】DDPM - (2)公式推导 之 前向扩散

news/2025/3/3 21:25:30/

1、加噪过程

1、将 图像 x 0 x_0 x0 像素值映射到 [-1, 1] 之间
x 255 × 2 − 1 , w h e r e    x 为图像中的像素值 \quad \frac{x}{255} \times 2-1, \quad where \; x 为图像中的像素值 255x×21,wherex为图像中的像素值
\quad

2、生成一张尺寸相同的噪声图片,像素值服从标准正态分布
ϵ ∼ N ( 0 , 1 ) , w h e r e    ϵ 为噪声图像中的像素值 \quad \epsilon \sim N(0, 1), \quad where \; \epsilon 为噪声图像中的像素值 ϵN(0,1),whereϵ为噪声图像中的像素值
\quad

3、将 处理好的原图像 和 噪音图像 进行融合
\quad 新生成的图像像素计算公式为: β × ϵ + 1 − β × x \sqrt \beta \times \epsilon + \sqrt{1-\beta} \times x β ×ϵ+1β ×x ,      β \;\;\beta β 取值范围 为 0~1

4、 连续的对图像进行加噪
在这里插入图片描述

t = 1 、 2 、 3... t=1、2、3 ... t=123... 时刻的图像像素值为
x 1 = β 1 × ϵ 1 + 1 − β 1 × x 0 x 2 = β 2 × ϵ 2 + 1 − β 2 × x 1 x 3 = β 3 × ϵ 3 + 1 − β 3 × x 2 . . . . x t = β t × ϵ t + 1 − β t × x t − 1 . . . . x t = β T × ϵ T + 1 − β T × x T − 1 (1) x_1 = \sqrt \beta_1 \times \epsilon_1 + \sqrt{1-\beta_1} \times x_0 \\ x_2 = \sqrt \beta_2 \times \epsilon_2 + \sqrt{1-\beta_2} \times x_1 \\ x_3 = \sqrt \beta_3 \times \epsilon_3 + \sqrt{1-\beta_3} \times x_2 \\ .... \\ x_t = \sqrt \beta_t \times \epsilon_t + \sqrt{1-\beta_t} \times x_{t-1} \\ .... \\ x_t = \sqrt \beta_T \times \epsilon_T + \sqrt{1-\beta_T} \times x_{T-1} \tag{1} x1=β 1×ϵ1+1β1 ×x0x2=β 2×ϵ2+1β2 ×x1x3=β 3×ϵ3+1β3 ×x2....xt=β t×ϵt+1βt ×xt1....xt=β T×ϵT+1βT ×xT1(1)

备注 :
1) ϵ t \epsilon_t ϵt 都是在每个时刻 t t t 重新采样的随机数
2)每个时刻的 β t \beta_t βt 都各不相同, 0 < β t < 1 0< \beta_t <1 0<βt<1, 且 β 1 < β 2 < . . . < β T − 1 < β T \beta_1 < \beta_2 < ... < \beta_{T-1} < \beta_{T} β1<β2<...<βT1<βT

为了简化推导过程,我们引入新的变量 α \alpha α \quad α t = 1 − β t \alpha_t = 1-\beta_t αt=1βt

α t = 1 − β t \alpha_t = 1-\beta_t αt=1βt 带入上面的公式(1),得 :
x t = 1 − α t × ϵ t + α t × x t − 1 (2) x_t = \sqrt {1- \alpha_t} \times \epsilon_t + \sqrt{\alpha_t} \times x_{t-1} \tag{2} xt=1αt ×ϵt+αt ×xt1(2)


2、简化加噪过程

目的 : 我们想直接使用 t=0 时刻的原始图像 x 0 x_0 x0 表示 t 时刻的图像 x t x_t xt
在这里插入图片描述

我们一步一步来推导,我们先尝试用 x t − 2 x_{t-2} xt2 表示 x t x_t xt
在这里插入图片描述

由 公式 (2), 我们可得:
x t = 1 − α t × ϵ t + α t × x t − 1 (2) x_t = \sqrt {1- \alpha_t} \times \epsilon_t + \sqrt{\alpha_t} \times x_{t-1} \tag{2} xt=1αt ×ϵt+αt ×xt1(2)
x t − 1 = 1 − α t − 1 × ϵ t − 1 + α t − 1 × x t − 2 (3) x_{t-1} = \sqrt {1- \alpha_{t-1}} \times \epsilon_{t-1} + \sqrt{\alpha_{t-1}} \times x_{t-2} \tag{3} xt1=1αt1 ×ϵt1+αt1 ×xt2(3)

将 公式 (3) 带入 公式 (2), 得:

x t = 1 − α t × ϵ t + α t × ( 1 − α t − 1 × ϵ t − 1 + α t − 1 × x t − 2 ) = α t ( 1 − α t − 1 ) × ϵ t − 1 + 1 − α t × ϵ t + α t α t − 1 × x t − 2 \begin{align}x_t &= \sqrt {1- \alpha_t} \times \epsilon_t + \sqrt{\alpha_t} \times (\sqrt {1- \alpha_{t-1}} \times \epsilon_{t-1} + \sqrt{\alpha_{t-1}} \times x_{t-2}) \notag \\ &= \sqrt {\alpha_t(1- \alpha_{t-1})} \times \epsilon_{t-1} + \sqrt{1-\alpha_t} \times \epsilon_t+\sqrt {\alpha_t \alpha_{t-1}} \times x_{t-2} \tag{4} \end{align} xt=1αt ×ϵt+αt


http://www.ppmy.cn/news/1135898.html

相关文章

Map声明、元素访问及遍历、⼯⼚模式、实现 Set - GO语言从入门到实战

Map声明、元素访问及遍历 - GO语言从入门到实战 Map 声明的方式 m := map[string]int{"one": 1, "two": 2, "three": 3} //m初始化时就已经设置了3个键值对,所以它的初始长度len(m)是3。m1 := map[string]int{} //m1被初始化为一个空的m…

博物馆藏品管理系统-美术馆藏品管理系统

一、项目背景 文物作为前史留存下来最为珍贵的遗物&#xff0c;具有非常高的科学价值和艺术价值&#xff0c;博物馆的存在便是为了保存这些珍贵的前史文化遗产&#xff0c;所以对博物馆的建造必定要重视品质问题。对博物馆的库存办理工作也必定要注意细节&#xff0c;不能出一…

十天学完基础数据结构-第二天(数据结构简介)

什么是数据结构&#xff1f; 在计算机科学中&#xff0c;数据结构是一种组织和存储数据的方式。它定义了数据的布局&#xff0c;以及对这些数据执行的操作。你可以把数据结构看作是计算机内存中的特定组织方式&#xff0c;就像图书馆中书籍的排列一样。 数据结构可以是各种形…

抑郁了怎么办?改变抑郁情绪的几个建议

如今抑郁已经是个很常见的名词了&#xff0c;不论是校园还是职场&#xff0c;内卷无处不在&#xff0c;在这个抑郁高发的时代&#xff0c;需要我们正确的认识抑郁&#xff0c;找到适合自己的解决方法&#xff0c;将抑郁消灭在萌芽状态。 如果感觉自己有了抑郁情绪怎么办&#…

Java EE改Jakarta

昨天折腾了一天&#xff0c;把旧项目升级了 旧项目运行环境 jdk &#xff1a;jdk1.7 TomCat&#xff1a;TomCat8.0 或者 TomCat 8.5 Eclipse 2022-12 spring&#xff1a;spring-2.5.6.jar Hibernate&#xff1a;hibernate-3.2.6.ga.jar Struts&#xff1a;struts2-core-2.1.6.…

Elasticsearch基础篇(四):Elasticsearch7.x的官方文档学习(Set up Elasticsearch)

Set up Elasticsearch 1 Configuring Elasticsearch(配置 Elasticsearch)1.1 Setting JVM Options(设置JVM选项)1.2 Secure Settings(安全设置)Introduction(介绍)Using the Keystore(使用密钥库)Applying Changes(应用更改)Reloadable Secure Settings(可重新加载的安全设置)R…

基于Android的香格里拉美食分享APP/美食分享平台/基于android的美食平台

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的APP应运而生&#xff0c;各行各业相继进入信息管理时代&#x…

如何使用Git和GitHub进行版本控制

如何使用Git和GitHub进行版本控制 版本控制是软件开发过程中的重要组成部分&#xff0c;它允许开发者跟踪和管理代码的变化&#xff0c;以确保团队协作顺畅&#xff0c;并帮助在需要时回溯到以前的代码状态。Git和GitHub是最流行的版本控制工具之一&#xff0c;本文将介绍如何…