《昇思25天学习打卡营第19天|Diffusion扩散模型》

news2024/12/23 14:28:03

什么是Diffusion Model? 什么是Diffusion Model? ¶

如果将Diffusion与其他生成模型(如Normalizing Flows、GAN或VAE)进行比较,它并没有那么复杂,它们都将噪声从一些简单分布转换为数据样本,Diffusion也是从纯噪声开始通过一个神经网络学习逐步去噪,最终得到一个实际图像。 Diffusion对于图像的处理包括以下两个过程:

  • 我们选择的固定(或预定义)正向扩散过程 𝑞𝑞 :它逐渐将高斯噪声添加到图像中,直到最终得到纯噪声

  • 一个学习的反向去噪的扩散过程 𝑝𝜃𝑝𝜃 :通过训练神经网络从纯噪声开始逐渐对图像去噪,直到最终得到一个实际的图像

Image-2

由 𝑡𝑡 索引的正向和反向过程都发生在某些有限时间步长 𝑇𝑇(DDPM作者使用 𝑇=1000𝑇=1000)内。从𝑡=0𝑡=0开始,在数据分布中采样真实图像 𝐱0𝑥0(本文使用一张来自ImageNet的猫图像形象的展示了diffusion正向添加噪声的过程),正向过程在每个时间步长 𝑡𝑡 都从高斯分布中采样一些噪声,再添加到上一个时刻的图像中。假定给定一个足够大的 𝑇𝑇 和一个在每个时间步长添加噪声的良好时间表,您最终会在 𝑡=𝑇𝑡=𝑇 通过渐进的过程得到所谓的各向同性的高斯分布。

Diffusion 前向过程
  • 这个过程逐步将数据添加噪声,直到最终数据变成纯噪声。具体地,给定一个初始数据分布 q(x0)q(\mathbf{x}_0)q(x0​),我们通过一系列马尔可夫链来生成一个噪声序列 x1,x2,…,xT\mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_Tx1​,x2​,…,xT​,使得每一步 xt+1\mathbf{x}_{t+1}xt+1​ 都是在 xt\mathbf{x}_txt​ 的基础上添加了一定的噪声。

  • 这个过程的转移概率可以表示为:

    q(xt+1∣xt)=N(xt+1;1−βtxt,βtI)q(\mathbf{x}_{t+1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t+1}; \sqrt{1-\beta_t}\mathbf{x}_t, \beta_t\mathbf{I})q(xt+1​∣xt​)=N(xt+1​;1−βt​​xt​,βt​I)

    其中, βt\beta_tβt​ 是一个逐渐增加的噪声系数。

    具体过程如下:

  • 初始化数据

    • 给定一组数据样本 x0\mathbf{x}_0x0​(例如,图像)。
  • 逐步添加噪声

    • 对于每一步 t=1,2,…,Tt = 1, 2, \ldots, Tt=1,2,…,T,按照以下方式添加噪声: q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)q(\mathbf{x}_t | \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1-\beta_t}\mathbf{x}_{t-1}, \beta_t\mathbf{I})q(xt​∣xt−1​)=N(xt​;1−βt​​xt−1​,βt​I)
    • 这里, βt\beta_tβt​ 是噪声的方差,通常设置为一组递增的值,如线性递增或余弦递增。
  • 从初始数据到纯噪声

    • 经过多次添加噪声(例如,经过 T 步),最终数据 xT\mathbf{x}_TxT​ 将接近于纯噪声分布。
Diffusion 逆向过程
  • 这个过程从纯噪声数据开始,逐步去噪声以生成新的数据样本。我们希望学习一个模型 pθ(xt−1∣xt)p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)pθ​(xt−1​∣xt​) 来近似逆转正向过程,即从 xT\mathbf{x}_TxT​ 开始逐步去噪,得到 x0\mathbf{x}_0x0​。

  • 反向过程的转移概率为:

    pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t))pθ​(xt−1​∣xt​)=N(xt−1​;μθ​(xt​,t),Σθ​(xt​,t))

    其中, μθ\mu_\thetaμθ​ 和 Σθ\Sigma_\thetaΣθ​ 是需要通过模型训练得到的参数。

  • 初始化噪声

    • 从一个标准正态分布中采样初始噪声 xT\mathbf{x}_TxT​(例如,图像中的每个像素都是从 N(0,1)\mathcal{N}(0, 1)N(0,1) 中采样的值)。
  • 逐步去噪声

    • 对于每一步 t=T,T−1,…,1t = T, T-1, \ldots, 1t=T,T−1,…,1,根据以下公式去噪声: pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t))pθ​(xt−1​∣xt​)=N(xt−1​;μθ​(xt​,t),Σθ​(xt​,t))
    • 其中, μθ(xt,t)\mu_\theta(\mathbf{x}_t, t)μθ​(xt​,t) 和 Σθ(xt,t)\Sigma_\theta(\mathbf{x}_t, t)Σθ​(xt​,t) 是模型参数,需通过训练来学习。
  • 生成新数据

    • 最终得到 x0\mathbf{x}_0x0​,即生成的新数据样本。
U-Net神经网络预测噪声

神经网络需要在特定时间步长接收带噪声的图像,并返回预测的噪声。请注意,预测噪声是与输入图像具有相同大小/分辨率的张量。因此,从技术上讲,网络接受并输出相同形状的张量。那么我们可以用什么类型的神经网络来实现呢?

这里通常使用的是非常相似的自动编码器,您可能还记得典型的"深度学习入门"教程。自动编码器在编码器和解码器之间有一个所谓的"bottleneck"层。编码器首先将图像编码为一个称为"bottleneck"的较小的隐藏表示,然后解码器将该隐藏表示解码回实际图像。这迫使网络只保留bottleneck层中最重要的信息。

在模型结构方面,DDPM的作者选择了U-Net,出自(Ronneberger et al.,2015)(当时,它在医学图像分割方面取得了最先进的结果)。这个网络就像任何自动编码器一样,在中间由一个bottleneck组成,确保网络只学习最重要的信息。重要的是,它在编码器和解码器之间引入了残差连接,极大地改善了梯度流(灵感来自于(He et al., 2015))。

Image-4

可以看出,U-Net模型首先对输入进行下采样(即,在空间分辨率方面使输入更小),之后执行上采样。

训练过程

训练扩散模型的目标是学习到反向扩散过程的参数,使其能够准确地将噪声转化为数据。具体步骤包括:

  1. 变分推断(Variational Inference)

    • 通过变分推断最小化正向过程和反向过程之间的差异。定义损失函数为: L(θ)=Eq(x0:T)[∑t=1TDKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]L(\theta) = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \sum_{t=1}^T D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) || p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)) \right]L(θ)=Eq(x0:T​)​[t=1∑T​DKL​(q(xt−1​∣xt​,x0​)∣∣pθ​(xt−1​∣xt​))]
      其中, DKLD_{KL}DKL​ 表示 Kullback-Leibler 散度,用于衡量两个概率分布之间的差异。
  2. 参数优化

    • 使用梯度下降法更新模型参数 θ\thetaθ,使其能够更好地近似逆向过程。

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

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

相关文章

传统墙面装饰已成过去?创意投影互动墙引领新潮流?

你是否曾遐想过,那些日常中屡见不鲜的平凡墙面,能够摇身一变,成为既炫酷又高度互动的奇迹之地?事实上,这并非遥不可及的梦想,只需巧妙融合前沿的投影技术、灵敏的传感器与智能软件系统,便能瞬间…

01 机器学习概述

目录 1. 基本概念 2. 机器学习三要素 3. 参数估计的四个方法 3.1 经验风险最小化 3.2 结构风险最小化 3.3 最大似然估计 3.4 最大后验估计 4. 偏差-方差分解 5. 机器学习算法的类型 6. 数据的特征表示 7. 评价指标 1. 基本概念 机器学习(Machine Le…

AdobeInDesign ID软件三网下载+Id教程

简介: InDesign还可以结合其他产品发布适合平板设备的内容。平面设计师和生产艺术家是主要用户,创作和布局期刊出版物、海报和印刷媒体。它还支持导出到EPUB和SWF格式,以创建电子书和数字出版物,包括数字杂志,以及适合…

【linux高级IO(三)】初识epoll

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux高级IO 1. 前言2. 初识e…

【python】PyQt5的窗口界面的各种交互逻辑实现,轻松掌控图形化界面程序

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

H3C Intelligent Management Center无线认证新增设备如何配置

目录 前提条件 一、IPsec VPN配置 二、IMC平台的配置 1.组网 ​编辑 2.核心设备配置 3.AAA服务器侧配置 4.创建认证的用户 5.登录测试 三、AC无线控制器图形界面配置 1.认证配置 1.1 新增ISP域 ​编辑​编辑 1.2新增 RADIUS 1.3 Portal认证配置​编辑​编辑​编…

Rust编程-crates.io

发布配置和开发配置: [profile.dev]: > cargo build opt-level0 [profile.release]: > cargo build --release opt-level3 发布到crates.io 文档注释: 三斜线(///),使用markdown语法来格式化内容 可以为函数…

fatal: read error: Connection reset by peer

参考文章:https://www.cnblogs.com/sisimi/p/7910272.html 问题: 首先确认是否可以访问外网: ping www.baidu.com如果可以访问外网,把 git: 修改为 http: 即可:

高职院校人工智能人才培养成果导向系统构建、实施要点与评量方法

一、引言 近年来,人工智能技术在全球范围内迅速发展,对各行各业产生了深远的影响。高职院校作为培养高技能人才的重要基地,肩负着培养人工智能领域专业人才的重任。为了适应社会对人工智能人才的需求,高职院校需要构建一套科学、…

Java学习 - spring Bean 详解

Bean 的别名配置 接着上一篇文章中的 <bean> 配置&#xff0c;其中配置了 id 属性&#xff0c;通过 id 属性我们就可以获取到对象。其实 <bean> 配置也提供了 name 属性&#xff0c;它是用于定义 Bean 的别名&#xff0c;一个 Bean 的别名是可以有多个的&#xff…

[C++]——同步异步日志系统(7)

同步异步日志系统 一、日志器管理模块&#xff08;单例模式&#xff09;1.1 对日志器管理器进行设计1.2 实现日志器管理类的各个功能1.3. 设计一个全局的日志器建造者1.4 测试日志器管理器的接口和全局建造者类 二、宏函数和全局接口设计2.1 新建一个.h,文件,文件里面放我们写的…

视图库对接系列(GA-T 1400)十九、视图库对接系列(级联)注册

背景 在上一章视图库对接系列(GA-T 1400)十八、视图库对接系列(级联)代码生成中我们已经把代码生成了,那怎么实现级联? 我们可以抓包看设备是怎么注册到我们平台的, 那我们就怎么实现就可以了。 实现 先看设备注册到我们服务端的包 步骤 注册我们可以参考视图库对接系列(…

Data类中的常用方法

Calender类 java.util.Calendar是一个抽象的基类&#xff0c;创建对象需要使用静态方法Calendar.getInstance()完成。通过Calendar对象可以获得详细的日历信息&#xff0c;例如年、月、日、小时、分和秒&#xff0c;Calendar的子类可以实现特定的日历系统。 当前时间 Calenda…

CV每日论文--2024.7.16

1、Radiance Fields from Photons 中文标题&#xff1a;光子的辐射场 简介&#xff1a;神经辐射场(NeRFs)已成为从多个视角捕获的图像进行高质量视图合成的事实标准方法。然而,在野外环境下捕获图像时,仍存在许多挑战,例如低光、高动态范围或快速运动导致的模糊重建和明显的伪…

【MySQL进阶篇】索引

1、索引概述 索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c…

高职院校专业群的生成机制研究

摘要&#xff1a;本研究针对我国产业转型升级背景下高职院校专业群的生成机制进行了深入探讨。运用案例分析法&#xff0c;从生成决策、生成目标、生成规则三个维度出发&#xff0c;对专业群的生成机制进行了系统分析。研究发现&#xff0c;高职院校专业群的生成是一个与产业环…

容器之Harbor

Harbor 是一个开源的企业级 Docker 镜像仓库&#xff0c;用于存储、签名和扫描 Docker 镜像。它由 VMware 开发&#xff0c;旨在增强用户在容器化环境中的安全性和效率。以下是对 Harbor 的详细介绍&#xff1a; 主要功能 1. 镜像管理 镜像存储&#xff1a;提供高效的存储管理…

誉天教育与武汉晴川学院携手开展鸿蒙实训营,共筑鸿蒙生态新篇章!

在数字经济蓬勃发展的今天&#xff0c;鸿蒙系统作为华为自主研发的操作系统&#xff0c;正逐步构建起一个开放、协同、共赢的生态体系。为了进一步推动鸿蒙生态的繁荣发展&#xff0c;培养更多具备鸿蒙原生应用开发能力的专业人才&#xff0c;誉天教育与武汉晴川学院强强联合&a…

苹果公司等科技巨头涉嫌违规使用 YouTube 视频训练 AI|TodayAI

YouTube 强调&#xff0c;使用其平台内容训练人工智能违反服务条款&#xff0c;苹果公司&#xff08;Apple&#xff09;、Anthropic 等科技巨头却涉嫌违规 根据 Proof News 和 Wired 合作的一项调查报告&#xff0c;超过 17 万个 YouTube 视频成为了苹果公司、Anthropic、Nvid…

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…