Diffusion Model 学习笔记

论文链接:Denoising Diffusion Probabilistic Models。

Diffusion Model 分为两部分,前向扩散过程和后向生成过程,前向扩散过程从一张原始图像逐步加噪声变为一张纯噪声图像,后向生成过程则从随机噪声来逐步恢复出原图像。

贝叶斯公式角度

在这里插入图片描述

这里的符号 X T \mathbf{X}_T XT表示经过 T \mathbf{T} T步生成的纯噪声图像, X 0 \mathbf{X}_0 X0表示原始图像, Z t \mathbf{Z}_t Zt表示 t t t 时刻随机采样的高斯噪声。设我们有系数 α t \alpha_t αt β t \beta_t βt,其中满足关系 α t + β t = 1 \alpha_t+\beta_t=1 αt+βt=1,生成过程可以表示为:
X t = α t X t − 1 + 1 − α t Z t X t − 1 = α t − 1 X t − 2 + 1 − α t − 1 Z t − 1 . . . \begin{align} \mathbf{X}_t&=\sqrt{\alpha_t}\mathbf{X}_{t-1}+\sqrt{1-\alpha_t}\mathbf{Z}_t\\ \mathbf{X}_{t-1}&=\sqrt{\alpha_{t-1}}\mathbf{X}_{t-2}+\sqrt{1-\alpha_{t-1}}\mathbf{Z}_{t-1}\\ ... \end{align} XtXt1...=αt Xt1+1αt Zt=αt1 Xt2+1αt1 Zt1将上面的两个公式联合求解消除 X t − 1 \mathbf{X}_{t-1} Xt1
X t = α t ( α t − 1 X t − 2 + 1 − α t − 1 Z t − 1 ) + 1 − α t Z t = α t α t − 1 X t − 2 + α t ( 1 − α t − 1 ) Z t − 1 + 1 − α t Z t \begin{align} \mathbf{X}_t&=\sqrt{\alpha_t}(\sqrt{\alpha_{t-1}}\mathbf{X}_{t-2}+\sqrt{1-\alpha_{t-1}}\mathbf{Z}_{t-1})+\sqrt{1-\alpha_t}\mathbf{Z}_t\\ &=\sqrt{\alpha_t\alpha_{t-1}}\mathbf{X}_{t-2}+\sqrt{\alpha_t(1-\alpha_{t-1})}\mathbf{Z}_{t-1}+\sqrt{1-\alpha_t}\mathbf{Z}_t \end{align} Xt=αt (αt1 Xt2+1αt1 Zt1)+1αt Zt=αtαt1 Xt2+αt(1αt1) Zt1+1αt Zt其中都服从标准高斯分布,即:
Z ∼ N ( 0 , 1 ) α t ( 1 − α t − 1 ) Z t − 1 ∼ N ( 0 , α t ( 1 − α t − 1 ) ) 1 − α t Z t ∼ N ( 0 , 1 − α t ) \begin{align} \mathbf{Z}&\sim\mathcal{N}(0,1)\\ \sqrt{\alpha_t(1-\alpha_{t-1})}\mathbf{Z}_{t-1}&\sim\mathcal{N}(0,\alpha_t(1-\alpha_{t-1}))\\ \sqrt{1-\alpha_t}\mathbf{Z}_t&\sim\mathcal{N}(0,1-\alpha_t)\\ \end{align} Zαt(1αt1) Zt11αt ZtN(0,1)N(0,αt(1αt1))N(0,1αt)根据高斯分布的相加性质,有:
α t ( 1 − α t − 1 ) Z t − 1 + 1 − α t Z t ∼ N ( 0 , 1 − α t α t − 1 ) \begin{align} \sqrt{\alpha_t(1-\alpha_{t-1})}\mathbf{Z}_{t-1}+\sqrt{1-\alpha_t}\mathbf{Z}_t\sim\mathcal{N}(0,1-\alpha_t\alpha_{t-1}) \end{align} αt(1αt1) Zt1+1αt ZtN(0,1αtαt1)由此可得:
X t = α t α t − 1 X t − 2 + ( 1 − α t α t − 1 ) Z ˉ t − 1 \begin{align} \mathbf{X}_t=\sqrt{\alpha_t\alpha_{t-1}}\mathbf{X}_{t-2}+\sqrt{(1-\alpha_t\alpha_{t-1})}\mathbf{\bar{Z}}_{t-1} \end{align} Xt=αtαt1 Xt2+(1αtαt1) Zˉt1如果继续往下求解,我们可以得到:
X t = α ˉ t X 0 + 1 − α ˉ t Z ˉ 1 \begin{align} \mathbf{X}_t=\sqrt{\bar{\alpha}_t}\mathbf{X}_{0}+\sqrt{1-\bar{\alpha}_t}\mathbf{\bar{Z}_1} \end{align} Xt=αˉt X0+1αˉt Zˉ1其中符号
α ˉ t = ∏ i = 1 t α i \begin{align}\bar{\alpha}_t=\prod_{i=1}^{t} \alpha_i\end{align} αˉt=i=1tαi由此可以看出,我们可以通过一步扩散能够生成任意时刻的噪声的图像,但我们的问题是如果从噪声图像恢复原始图像?能不能像上面一样一步生成,即求 p ( X 0 ∣ X t ) p(\mathbf{X}_0|\mathbf{X}_t) p(X0Xt) ,答案显然是否定的,降低难度,我们能不能一步一步从噪声图像恢复到原始图像?即求 p ( X t − 1 ∣ X t ) p(\mathbf{X}_{t-1}|\mathbf{X}_t) p(Xt1Xt) ,或许可以尝试一下,根据贝叶斯公式,有:
p ( X t − 1 ∣ X t ) = p ( X t ∣ X t − 1 ) p ( X t ) p ( X t − 1 ) \begin{align} p(\mathbf{X}_{t-1}|\mathbf{X}_t)=p(\mathbf{X}_{t}|\mathbf{X}_{t-1})\frac{p(\mathbf{X}_{t})}{p(\mathbf{X}_{t-1})} \end{align} p(Xt1Xt)=p(XtXt1)p(Xt1)p(Xt)等号右边第一项我们是知道的,但分式上下的概率我们是未知的,因此我们考虑引入参数 X 0 \mathbf{X}_0 X0,则等式变为:
p ( X t − 1 ∣ X t , X 0 ) = p ( X t ∣ X t − 1 , X 0 ) p ( X t ∣ X 0 ) p ( X t − 1 ∣ X 0 ) \begin{align} p(\mathbf{X}_{t-1}|\mathbf{X}_t,\mathbf{X}_0)=p(\mathbf{X}_{t}|\mathbf{X}_{t-1},\mathbf{X}_0)\frac{p(\mathbf{X}_{t}|\mathbf{X}_0)}{p(\mathbf{X}_{t-1}|\mathbf{X}_0)} \end{align} p(Xt1Xt,X0)=p(XtXt1,X0)p(Xt1X0)p(XtX0)这个式子便可以用到上面推导的结论。其中
p ( X t ∣ X t − 1 , X 0 ) = α t X t − 1 + 1 − α t Z t ∼ N ( α t X t − 1 , 1 − α t ) p ( X t ∣ X 0 ) = α ˉ t X 0 + 1 − α ˉ t Z ˉ ∼ N ( α ˉ t X 0 , 1 − α ˉ t ) p ( X t − 1 ∣ X 0 ) = α ˉ t − 1 X 0 + 1 − α ˉ t − 1 Z ˉ ∼ N ( α ˉ t − 1 X 0 , 1 − α ˉ t − 1 ) \begin{align} p(\mathbf{X}_{t}|\mathbf{X}_{t-1},\mathbf{X}_0)&=\sqrt{\alpha_t}\mathbf{X}_{t-1}+\sqrt{1-\alpha_t}\mathbf{Z}_t\sim\mathcal{N}(\sqrt{\alpha_t}\mathbf{X}_{t-1}, 1-\alpha_t)\\ p(\mathbf{X}_{t}|\mathbf{X}_0)&=\sqrt{\bar{\alpha}_t}\mathbf{X}_{0}+\sqrt{1-\bar{\alpha}_t}\mathbf{\bar{Z}}\sim\mathcal{N}(\sqrt{\bar{\alpha}_t}\mathbf{X}_{0}, 1-\bar{\alpha}_t)\\ p(\mathbf{X}_{t-1}|\mathbf{X}_0)&=\sqrt{\bar{\alpha}_{t-1}}\mathbf{X}_{0}+\sqrt{1-\bar{\alpha}_{t-1}}\mathbf{\bar{Z}}\sim\mathcal{N}(\sqrt{\bar{\alpha}_{t-1}}\mathbf{X}_{0}, 1-\bar{\alpha}_{t-1}) \end{align} p(XtXt1,X0)p(XtX0)p(Xt1X0)=αt Xt1+1αt ZtN(αt Xt1,1αt)=αˉt X0+1αˉt ZˉN(αˉt X0,1αˉt)=αˉt1 X0+1αˉt1 ZˉN(αˉt1 X0,1αˉt1)根据高斯分布的表达式,既有:
p ( X t − 1 ∣ X t , X 0 ) ∝ e x p { − 1 2 ( ( X t − α t X t − 1 ) 2 1 − α t + ( X t − α ˉ t X 0 ) 2 1 − α ˉ t − ( X t − 1 − α ˉ t − 1 X 0 ) 2 1 − α ˉ t − 1 ) } ∝ e x p { − 1 2 ( ( α t β t + 1 1 − α ˉ t − 1 ) X t − 1 2 − ( 2 α t β t x t + 2 α ˉ t − 1 1 − α ˉ t − 1 X 0 ) X t − 1 + C ( X t , X 0 ) ) } \begin{align} p(\mathbf{X}_{t-1}|\mathbf{X}_t,\mathbf{X}_0)&\propto \mathbf{exp}\{-\frac{1}{2}\left(\frac{(\mathbf{X}_t-\sqrt{\alpha_t}\mathbf{X}_{t-1})^2}{1-\alpha_t}+\frac{(\mathbf{X}_{t}-\sqrt{\bar{\alpha}_{t}}\mathbf{X}_{0})^2}{1-\bar{\alpha}_{t}}-\frac{(\mathbf{X}_{t-1}-\sqrt{\bar{\alpha}_{t-1}}\mathbf{X}_{0})^2}{1-\bar{\alpha}_{t-1}}\right)\}\\ &\propto \mathbf{exp}\{-\frac{1}{2}\left(\left(\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}}\right)\mathbf{X}_{t-1}^2-\left(\frac{2\sqrt{\alpha_t}}{\beta_t}\mathbf{x}_t+\frac{2\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}\mathbf{X}_0 \right)\mathbf{X}_{t-1}+\mathbf{C}(\mathbf{X}_t,\mathbf{X}_0) \right)\} \end{align} p(Xt1Xt,X0)exp{21(1αt(Xtαt Xt1)2+1αˉt(Xtαˉt X0)21αˉt1(Xt1αˉt1 X0)2)}exp{21((βtαt+1αˉt11)Xt12(βt2αt xt+1αˉt12αˉt1 X0)Xt1+C(Xt,X0))}高斯分布的的指数项为:
e x p { − 1 2 ( 1 σ 2 x 2 − 2 μ σ 2 x + μ 2 σ 2 ) } , \begin{align}\mathbf{exp}\{-\frac{1}{2}\left( \frac{1}{\sigma_2}x^2-\frac{2\mu}{\sigma^2}x+\frac{\mu^2}{\sigma^2}\right)\}, \end{align} exp{21(σ21x2σ22μx+σ2μ2)}由此可以反解出对应的均值和方差,方差 σ \sigma σ 中的参数都是已知的,但均值 μ \mu μ X 0 \mathbf{X}_0 X0 X t \mathbf{X}_t Xt 有关系,但图 X 0 \mathbf{X}_0 X0 正是我们需要求解的,因此我们用一步扩散公式使用 X t \mathbf{X}_t Xt代替 X 0 \mathbf{X}_0 X0,反解得到:
σ 2 = 1 α t β t + 1 1 − α ˉ t − 1 μ = 1 α t ( X t − β t 1 − α ˉ t Z ˉ t ) \begin{align} \sigma^2 &= \frac{1}{\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}}}\\ \mu&=\frac{1}{\sqrt{\alpha_t}}(\mathbf{X}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\mathbf{\bar{Z}}_t) \end{align} σ2μ=βtαt+1αˉt111=αt 1(Xt1αˉt βtZˉt)
现在均值和方差中只有参数 Z ˉ t \bar{Z}_t Zˉt 是未知的,因此我们需要用神经网络来进行预测。下面是算法伪代码:

在这里插入图片描述
仔细看伪代码,训练过程中学的是什么?学习的就是从原始图像 X 0 \mathbf{X}_0 X0 一步扩散得到第 t t t 时刻加噪声图像所加的噪声 Z ˉ t \mathbf{\bar{Z}}_t Zˉt,即
Z ˉ t = ϵ θ ( X t , t ) = ϵ θ ( α ˉ t X 0 + 1 − α ˉ t Z , t ) \begin{align} \mathbf{\bar{Z}}_t=\mathbf{\epsilon }_{\theta}(\mathbf{X}_t,t)=\mathbf{\epsilon }_{\theta}(\sqrt{\bar{\alpha}_t}\mathbf{X}_{0}+\sqrt{1-\bar{\alpha}_t}\mathbf{Z},t) \end{align} Zˉt=ϵθ(Xt,t)=ϵθ(αˉt X0+1αˉt Z,t)训练过程如下图所示:
在这里插入图片描述
通过预测网络模块输入输出维度相同,使用U-net网络架构。训练时我有原始图像、以及 t t t 步加噪声后的图像、 t t t 步所加噪声总和(ground truth)。

在采样阶段
在这里插入图片描述

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

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

相关文章

HiWoo Box:远程监控DCS的强大助手

在工业自动化领域,分布式控制系统(DCS)被广泛应用于各种生产流程中,如化工、电力、制药等。然而,随着企业规模的扩大和生产流程的复杂化,对DCS的远程监控需求也日益迫切。HiWoo Box作为一种功能强大的工业智…

纯CSS实现马里奥效果,回忆一下童年吧

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 CSS专栏:想学CSS的,冲这里 &#x1f4…

基于彩虹表碰撞法破解SHA/MD5等hash加密——半非暴力破解哈希逆运算

背景知识 哈希加密算法应用范围广泛,包括但不限于:Unix风格的用户密码(Linux、*BSD、Solaris、AIX、QNX等)、macOS、Windows、Web应用程序(如WordPress)、办公软件(如Notes、Domino&#xff09…

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统,经过15年的平稳运行和不断演进,成功跟随通信技术的升级步伐,逐步迈向5G时代,并且在这期间完成了8次大版本的迭代,为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners Paper:https://arxiv.org/abs/2303.09769 Code:https://github.com/FutureXiang/ddae TL; DR:扩散模型的训练其实就是训练一个去噪模型,考虑到类似…

clickhouse连接工具dbeaver

地址 地址: Download | DBeaver Community 安装 表引擎 表引擎之TinyLog 以列文件的形式保存在磁盘上,不支持索引,没有并发控制。一般保存少量数据的小表, 生产环境上作用有限,多用于平时练习测试用。 内存引擎&am…

linux 内核模块

linux 内核模块 1. 内核相关命令与文件内核模块存放位置查看已加载内核模块加载与卸载内核模块修改内核参数永久调整内核参数 2. 常用模块进程调度模块进程间通信模块内存管理模块文件系统模块网络接口模块 Linux 内核采用的是模块化技术,这样的设计使得系统内核可以…

【第四章】用AIGC从0到1为主题乐园定制虚拟科普导游

4.1 场景:H5辅助博物馆的导游导览场景(卡通数字人) 4.1 先给大家体验下效果【采用清华元娲的AIGC平台能力】 形象需要企业方进行美术资源定制开发 点击如下链接: 点击体验 4.2 场景 后台管理,选择背景及FAQ问题库 将…

电脑开机自动断电,简单4招,快速解决!

“不知道我的电脑最近是怎么回事,每次一开机就会出现自动断电的情况,有什么方法可以解决吗?” 在使用电脑时,由于电源供应不稳定或过热,以及各种硬件问题,可能会导致电脑开机自动断电。遇到这种情况&#x…

Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解

Kubernetes 入门 回想 2017 年刚开始接触 Kubernetes 时,碰到 Pod一直起不来的情况,就开始抓瞎。后来渐渐地掌握了一些排查方法之后,这种情况才得以缓解。随着时间推移,又碰到了问题。有一天在部署某个 springboot 微服务时&…

【笔试强训】Day1_贪心算法_组队竞赛

题目链接:牛客_组队竞赛 目录 题目解析 代码书写 知识补充 题目解析 题目让我们求所有队伍的水平值总和最大 由题可得: 队伍的水平值等于该队伍队员中第二高水平值; 随机给定3*n个数,需要自己组队并且得出队伍水平最大值; 我…

vue-cli3/webpack打包时去掉console.log调试信息

文章目录 前言一、terser-webpack-plugin是什么?二、使用配置vue-cli项目 前言 开发环境下,console.log调试信息,有助于我们找到错误,但在生产环境,不需要console.log打印调试信息,所以打包时需要将consol…

BUUCTF Reverse/[2019红帽杯]Snake

BUUCTF Reverse/[2019红帽杯]Snake 下载解压缩后得到可执行文件,而且有一个unity的应用程序,应该是用unity编写的游戏 打开是一个贪吃蛇游戏 用.NET Reflector打开Assembly-CSharp.dll。(unity在打包后,会将所有的代码打进一个Ass…

Lumerical------按键中断程序执行

Lumerical------中断程序执行 引言正文 引言 在 Lumerical 中,很多时候我们需要通过 sweep 的方式来获取我们想要的结果,然而,有时候当我们运行程序后发现书写的脚本有问题时,我们想要强行终止程序的执行,该怎么办呢&…

[足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch12 Robotic …

竞赛保研 基于情感分析的网络舆情热点分析系统

文章目录 0 前言1 课题背景2 数据处理3 文本情感分析3.1 情感分析-词库搭建3.2 文本情感分析实现3.3 建立情感倾向性分析模型 4 数据可视化工具4.1 django框架介绍4.2 ECharts 5 Django使用echarts进行可视化展示5.1 修改setting.py连接mysql数据库5.2 导入数据5.3 使用echarts…

将H5封装为App:实现跨平台移动应用开发的新趋势

H5技术指的是HTML5、CSS3和JavaScript等一系列前端技术的综合应用。它具有跨平台、开发成本低、开发周期短等优势,可以快速实现丰富的界面和交互效果。而原生应用开发受限于操作系统的差异,需要分别开发不同平台的应用,这就增加了开发成本和工…

记一次redis内存没满发生key逐出的情况。

现象: 从监控上看,redis的内存使用率最大是80%,但是发生了key evicted 分析: 原因1、可能是阿里云监控没抓取到内存100%监控数据。 阿里控制台监控监控粒度是5秒。 内存使用率的计算方法。 used_memory_human/maxmemory 原因2、…

shiro1.10版本后-IniSecurityManagerFactory过期失效

1、问题概述? 今天在研究了shiro的新版本shiro1.13.0版本,发现用了很长时间的IniSecurityManagerFactory工厂失效了。 从下图中可以看出,在新版本中IniSecurityManagerFactory被打上了过期线了。 那么问题来了,新版本如何使用呢…

在SpringBoot中自定义指标并使用Prometheus监控报警

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享 在10 分钟教你使用Prometheus监控Spring Boot工程中介绍了如何使用Prometheus监控Spring Boot提供的默认指标,这篇介绍如何自定义业务指标,并使用Prometheus进行…