DDPM - Denoising Diffusion Probabilistic Models 扩散模型

news2024/11/25 0:22:26

DDPM - Denoising Diffusion Probabilistic Models 扩散模型

扩散模型概述

扩散模型是在模拟图像加噪的逆向过程。也就是在实现一个去噪的过程。简单的来说就包括两个过程组成

  • 前向的扩散过程 Forward Diffusion Process
  • 反向扩散过程 Reverse Diffusion Process

在这里插入图片描述

下面我们对整个的加噪的过程细节进行一个简单的描述。每次加噪的比例都只占很小的一部分

在这里插入图片描述
下面的公式中我们说明了加噪的比例,

x t  与  x t − 1  的关系 :  x t = β t × ϵ t + 1 − β t × x t − 1 x_{t} \text { 与 } x_{t-1} \text { 的关系 : } x_{t}=\sqrt{\beta}_{t} \times \epsilon_{t}+\sqrt{1-\beta_{t}} \times x_{t-1} xt  xt1 的关系 : xt=β t×ϵt+1βt ×xt1

为了方便进行表示我们可以定义:αt = 1 - βt

x t = 1 − α t ϵ t + α t x t − 1 x_{t}=\sqrt{1-\alpha_{t}} \epsilon_{t}+\sqrt{\alpha_{t}} x_{t-1} xt=1αt ϵt+αt xt1

细节说明:

  1. 我们并不是在原图像上进行加噪的而是将图像 x0 像素值映射到 [-1,1] 之间。
    x 255 × 2 − 1 \frac{x}{255} \times 2-1 255x×21

  2. 生成一张尺寸相同的噪声图片,像素值服从标准正态分布

ϵ ∼ N ( 0 , 1 ) \epsilon \sim N(0,1) ϵN(0,1)

  1. α与β 每个时刻的 βt 都各不相同, 0 < βt < 1, 且 β1 < β2 < … < βT-1 < βT β是作为一个权重存在的

  2. 任一时刻的图像xt 都可以由原图像 x0 直接生成 (可以由含x0 的公式直接表示)

x t  与  x 0  的关系 :  x t = 1 − α ˉ t ϵ + α ˉ t x 0 α t = 1 − β t α ˉ t = α t α t − 1 … α 2 α 1 x_{t} \text { 与 } x_{0} \text { 的关系 : } x_{t}=\sqrt{1-\bar{\alpha}_{t}} \epsilon+\sqrt{\bar{\alpha}_{t}} x_{0} \quad \alpha_{t}=1-\beta_{t} \quad \bar{\alpha}_{t}=\alpha_{t} \alpha_{t-1} \ldots \alpha_{2} \alpha_{1} xt  x0 的关系 : xt=1αˉt ϵ+αˉt x0αt=1βtαˉt=αtαt1α2α1

在这里插入图片描述

我们将t时刻的值和图像输入到Denoise Model里面去。就可以得到一个输出的图像。

Denoise Model的一个最主要的部分就是其中的一个Unet网络架构。T时刻的图像t时刻的值 我们将其输入到Unet网络中去,其输出就是一张噪声图像。

ϵ θ \epsilon_{\theta} ϵθ

其中的theta表示的就是Unet网络中所有参数的集合。weight bias等等一些参数。

我们得到噪音图像之后将它乘以一个系数。

1 − α t 1 − α ˉ t ϵ θ \frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}} \boldsymbol{\epsilon}_{\theta} 1αˉt 1αtϵθ

x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ ‾ t ϵ θ ) + σ t z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\overline{\bar{\alpha}} t}} \boldsymbol{\epsilon}_{\theta}\right)+\sigma_{t} \mathbf{z} xt1=αt 1(xt1αˉt 1αtϵθ)+σtz

σ 2 = β t ( 1 − α ˉ t − 1 ) 1 − α ˉ t \sigma^{2}=\frac{\beta_{t}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} σ2=1αˉtβt(1αˉt1)

经过这些计算就可以得到前一时刻T-1的图像。整个过程可以用下面的一张图来进行表示。

在这里插入图片描述

这就是我们去噪的一个过程了。

训练阶段和预测阶段的示意图

论文中给出了训练阶段和预测阶段的算法描述图。

在这里插入图片描述

1: 对于训练阶段我们重复的进行执行直到模型收敛的时候算法结束。

x 0 ∼ q ( x 0 ) \mathbf{x}_{0} \sim q\left(\mathbf{x}_{0}\right) x0q(x0)

2:表示从我们的数据集中筛选出一张图像。其为x0

t ∼ Uniform ⁡ ( { 1 , … , T } ) t \sim \operatorname{Uniform}(\{1, \ldots, T\}) tUniform({1,,T})

3: 表示从我们的均匀分布中取出一个值令其为t T=1000

ϵ ∼ N ( 0 , 1 ) \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{1}) ϵN(0,1)

4: 从标准的正态分布中采样出一个epsilon 这个epsilon的尺寸和原图像的尺寸要是一样的。

 Take gradient descent step on  ∇ θ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 \begin{array}{l} \text { Take gradient descent step on }\\ \nabla_{\theta}\left\|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_{\theta}\left(\sqrt{\bar{\alpha}_{t}} \mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}} \boldsymbol{\epsilon}, t\right)\right\|^{2} \end{array}  Take gradient descent step on θ ϵϵθ(αˉt x0+1αˉt ϵ,t) 2

5 : 计算epsilon和epsilon theta的均方误差作为损失函数,并通过梯度下降法去优化这个函数。

在这里插入图片描述

这个过程就类似于一个正向扩散的过程了。下面我们继续看我们这个模型的预测过程的算法流程

x T ∼ N ( 0 , I ) \mathbf{x}_{T} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) xTN(0,I)

1:我们先从随机分布中采样出一个XT来

2 :循环T次来执行我们的算法

z ∼ N ( 0 , I )  if  t > 1 , else  z = 0 \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \text { if } t>1 \text {, else } \mathbf{z}=\mathbf{0} zN(0,I) if t>1, else z=0

3: 根据条件在随机分布中又采样出了一个z

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αˉ t1αtϵθ(xt,t))+σtz

根据这个公式我们来预测上一个时刻的图像xt-1。

在这里插入图片描述
循环的执行这个操作直到产生出了最开始的原图像之后,整个预测过程中的算法在停止执行。

未完下周在写

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

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

相关文章

流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的应用

流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的应用 专题一、生态系统服务评价技术框架 1.1 生态系统服务概述 1.2 流域生态系统服务的分类与作用 1.3 生态系统服务评估方法 专题二、AI大模型与生态系统服务评价 2.1 目前常用大模型介绍 2…

Java并发 - AQS之ReentrantLock

文章目录 ReentrantLockAQS 队列AbstractOwnableSynchronizerAbstractQueuedSynchronizerNodewaitStatusSHARED/EXCLUSIVE 模式 加锁流程尝试加锁 tryAcquire加锁失败入队addWaiterenq 阻塞等待 acquireQueuedparkAndCheckInterrupt 放弃加锁 cancelAcquire唤醒阻塞线程 unpark…

大语言模型训练

大语言模型训练 1.两大问题2.并行训练2.1数据并行2.2模型并行2.3张量并行2.4混合并行 3.权重计算3.1浮点数3.2混合精度训练3.3deepspeed&#xff08;微软&#xff09;3.3.1 ZeRO3.3.2ZeRO-offload 3.3总结 4.PEFT4.1Prompt TuningPrefix-tuning4.2P-tuning & P-tuning v2 5…

arcpy总结

arcpy 一、是什么二、为什么三、怎么用1、在哪里打开2、基础术语3、代码组织4、案例&#xff08;1&#xff09;裁剪&#xff08;2&#xff09;土地变化特征分析&#xff08;4&#xff09;文件访问与检测&#xff08;5&#xff09;空间数据的查询、插入与更新&#xff08;6&…

伯努利分布(Bernoulli distribution)的两次成功之间间隔次数的分布

伯努利分布&#xff08;Bernoulli distribution&#xff09;是一种特殊的二项式分布&#xff0c;即0-1分布。百科上已经说明了这种分布&#xff0c;即&#xff0c;其中。其数学期望为&#xff0c;方差为。详细说明见0—1分布_百度百科 本文进一步说明对于这类分布的事件&#…

BUUCTF-greatescape1

发现有ftp包和tcp包居多 下载解压是个流量包&#xff0c;使用wiresharh打开&#xff0c;CTRLF&#xff0c;按下图搜索ftp tcp18流发现ssc.key 传送&#xff0c;在19流发现key内容 复制保存为ssc.key, 加载key解密tls&#xff0c;再追踪tls流可得flag INS{OkThatWasWay2Easy} …

微知-Bluefield DPU使用flint烧录固件报错MFE_NO_FLASH_DETECTED是什么?MFE是什么?

文章目录 背景一些报错场景MFE是什么&#xff1f;有哪些MFE 背景 在DPU的fw操作flint的时候&#xff0c;很多命令都会报这个错误&#xff1a;MFE_NO_FLASH_DETECTED&#xff0c;早期很疑惑并且猜测MFE是Mellanox Firmware Engine。实际并不是&#xff0c;具体还得走到mellanox…

linux 中mysql my.cnf 配置模版

前置准备 sudo systemctl stop mysqld 注意&#xff1a; 原本配置重命名做备份 备份数据 删文件 直接新建 my.cnf 把配置 11要粘进去的内容 直接粘进去 注意&#xff1a;尽管log-bin 和 log_bin 都可以启用二进制日志&#xff0c;但为了保持与现代MySQL版本的兼容性和一…

【算法系列-哈希表】两数之和(Map)

【算法系列-哈希表】两数之和 (Map) 文章目录 【算法系列-哈希表】两数之和 (Map)1. 两数之和(LeetCode 1, 梦开始的地方)1.1 思路分析&#x1f3af;1.2 解题过程&#x1f3ac;1.3 代码示例&#x1f330; 2. 四数相加II(LeetCode 454)2.1 思路分析&#x1f3af;2.2 解题过程&am…

MySQL-08.DDL-表结构操作-创建-案例

一.MySQL创建表的方式 1.首先根据需求文档定义出原型字段&#xff0c;即从需求文档中可以直接设计出来的字段 2.再在原型字段的基础上加上一些基础字段&#xff0c;构成整个表结构的设计 我们采用基于图形化界面的方式来创建表结构 二.案例 原型字段 各字段设计如下&…

rsync 数据镜像同步服务笔记

1. rsync概述 定义&#xff1a;rsync是一款数据镜像备份工具&#xff0c;支持快速完全备份和增量备份&#xff0c;支持本地复制与远程同步。镜像指两份完全相同的数据备份.特点&#xff1a; 支持整个目录树和文件系统的更新&#xff1b;可选择性地保留符号链接、文件属性、权限…

【Orange Pi 5嵌入式应用编程】-BMP280传感器驱动

BMP280传感器驱动 文章目录 BMP280传感器驱动1、BMP280传感器介绍2、BMP280的测量流程2.1 气压测量2.2 温度测量2.3 IIR滤波2.4 滤波器选择2.5 噪声3、BMP280的功耗模式3.1 休眠模式3.2 强制模式3.3 正常模式3.4 模式转换4、数据读取及计算4.1 寄存器数据覆盖4.2 输出补偿4.3 补…

一键生成证件照的开源利器:HivisionIDPhotos使用教程

HivisionIDPhotos使用教程&#xff1a;一键生成证件照的开源利器 HivisionIDPhotos 是一款开源的、轻量级且高效的AI工具&#xff0c;专注于证件照的自动生成。通过这一工具&#xff0c;用户只需上传一张自拍或其他照片&#xff0c;便能快速生成标准尺寸的证件照&#xff0c;免…

跟李沐学AI:Transformer

Transformer架构 (图源:10.7. Transformer — 动手学深度学习 2.0.0 documentation) 基于编码器-解码器架构来处理序列对 与使用注意力的seq2seq不同&#xff0c;Transformer纯基于注意力 多头注意力&#xff08;Multi-Head Attention&#xff09; (图源:10.5. 多头注意力 …

MyBatis环境配置详细过程

在此之前我们需要知道Maven和依赖是什么。 什么是Maven&#xff1f; Maven 是一个项目管理和构建自动化工具&#xff0c;最初由Apache软件基金会开发&#xff0c;主要用于Java项目的构建、依赖管理、文档生成和发布。Maven使用一种基于XML的配置文件&#xff08;pom.xml&…

vue后台管理系统从0到1(6)引入pinia实现折叠功能

文章目录 vue后台管理系统从0到1&#xff08;6&#xff09;引入pinia实现折叠功能分析&#xff1a;安装并使用 pinia vue后台管理系统从0到1&#xff08;6&#xff09;引入pinia实现折叠功能 分析&#xff1a; 首先&#xff0c;接着上一期&#xff0c;我们项目启动起来应该是…

【算法思想·二叉树】用「遍历」思维解题 II

本文参考labuladongsuanfa笔记[【强化练习】用「遍历」思维解题 II | labuladong 的算法笔记] 如果让你在二叉树中的某些节点上做文章&#xff0c;一般来说也可以直接用遍历的思维模式。 270. 最接近的二叉搜索树值 | 力扣 | LeetCode | 给你二叉搜索树的根节点 root 和一个目…

通信工程学习:什么是SDRAM同步动态随机存取存储器

SDRAM&#xff1a;同步动态随机存取存储器 SDRAM&#xff0c;全称为Synchronous Dynamic Random Access Memory&#xff0c;即同步动态随机存取存储器&#xff0c;是一种广泛应用于计算机和嵌入式系统中的内存技术。以下是对SDRAM的详细介绍&#xff1a; 一、SDRAM的定义与特点…

TimeGen3.2

一、安装 1.安装包下载 软件安装压缩包&#xff0c;点击链接下载&#xff0c;自取。 链接: https://pan.baidu.com/s/1kebJ2z8YPMhqyvDiHLKktw?pwd0000 提取码: 0000 二、解压安装 1.解压 2.安装软件 &#xff08;1&#xff09;双击timegen-pro-3.2.exe文件 &#xff…

[CTF夺旗赛] CTFshow Web13-14 详细过程保姆级教程~

前言 ​ CTFShow通常是指网络安全领域中的“Capture The Flag”(夺旗赛)展示工具或平台。这是一种用于分享、学习和展示信息安全竞赛中获取的信息、漏洞利用技巧以及解题思路的在线社区或软件。参与者会在比赛中收集“flag”&#xff0c;通常是隐藏在网络环境中的数据或密码形…