Denoising Diffusion Probabilistic Model,DDPM阅读笔记——(二)

news2024/10/6 18:34:14

Denoising Diffusion Probabilistic Model,DDPM阅读笔记

  • 一、去噪扩散概率模型(Denoising Diffusion Probabilistic Model,DDPM)

一、去噪扩散概率模型(Denoising Diffusion Probabilistic Model,DDPM)

在本节中,将详细讨论DDPM的相关概念与一些核心的数学推理过程,因为作者认为这些必要的数学推导与运算对理解DDPM有一定的帮助。同时,关于DDPM的详细数学推导,有兴趣的读者可以参考本文最后的参考文献。
扩散模型 (Diffusion Models) 是一类新的最先进的生成模型,可生成各种各样的高分辨率图像。在 OpenAI、英伟达和谷歌成功训练出大规模模型后,它们已经引起了广泛关注。基于扩散模型的示例架构有 GLIDE、DALLE-2、Imagen 和完全开源的 stable diffusion。扩散模型从根本上不同于所有以前的生成方法。直觉上,他们的目标是通过许多小的“去噪”步骤分解图像生成过程(采样)。
在这里插入图片描述

1、DDPM概述:扩散过程的表述相对简单,即输入图像 x 0 x_0 x0 ,经过时间T个步骤,逐渐向其添加高斯噪声,我们将其称为前向过程。值得注意的是,这与神经网络的前向传递无关。但是前向过程对于我们的神经网络生成(应用 t < T t<T t<T添加噪声步骤后的图像)目标是必要的。之后,通过反转噪声过程来恢复原始数据,训练神经网络。通过能够对逆向过程建模,我们可以生成新数据。这就是所谓的反向扩散过程,或者通俗地说,就是生成模型的采样过程。
更具体些,对于一个T步的扩散模型,每一步的索引为t。在前向过程中,我们从一个真实图像 x 0 x_0 x0开始,在每一步我们随机生成一些高斯噪声,然后将生成的噪声逐步加入到输入图像中,当T足够大时,我们得到的加噪后的图像便接近一个高斯噪声图像,例如DDPM中 T = 1000 T=1000 T=1000。在后向过程中,我们从噪声图像 x T x_T xT开始(训练时是真实图像加噪的结果,采样时是随机噪声),通过一个神经网络学习 x T − 1 x_{T-1} xT1 x t x_{t} xt添加的噪声,然后通过逐渐去噪的方式得到最后要生成的图像。
2、正向扩散过程:
在这里插入图片描述
正向扩散过程(forward diffusion)描述:给定初始数据分布 x 0   q ( x ) x_0~q(x) x0 q(x),可以不断地向分布中添加高斯噪声(高斯噪声的标准差是根据固定值 β t \beta_t βt确定,而均值是根据固定值 β t \beta_t βt和当前时刻t的状态 x t x_t xt确定的),因此DDPM的正向扩散过程是一个Markov过程。随着时间步长t的增大( t − > T t->T t>T)最终数据 x T x_T xT变成了一个各项独立的高斯分布,如图6所示。
数学过程的描述:假设初始时刻 q ( x 0 ) q(x_0) q(x0)是真实图像的分布,我们可以通过从训练集的真实图像中随机采样一张图像,表示为 x   q ( x 0 ) x~q(x_0) x q(x0)。那么如图6所示的前向过程 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)指的是在前向的每一步通过向图像 x t − 1 x_{t-1} xt1中添加高斯噪声得到 x t x_t xt。根据前面的描述,加入的高斯噪声均值为 在这里插入图片描述
,方差为 在这里插入图片描述
,那么
在这里插入图片描述
根据前述分析,DDPM的正向扩散过程可以认为是一个Markov过程,那么从输入 x 0 x_0 x0 x T x_T xT的后验概率分布可以表示为
在这里插入图片描述
上述过程需要重复采样 次。为了获得在任何时间步长上的可操作闭式采样(即从初始状态 x   q ( x 0 ) x~q(x_0) x q(x0)),可以使用重参数化技巧。下面对上面的后验概率进行重参数化推导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、逆向扩散过程:
DDPM的前向过程是将已知的数据通过不断的加入噪声,当时间步长T逼近无穷时隐变量 x T x_T xT可以认为是一个各向同性的高斯分布。反之,DDPM的反向过程 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt1xt)则是一个去噪过程。即我们先在T时刻随机采样一个二维高斯噪声,然后逐步进行去噪,最终得到一个和真实图像分布一致的生成图像 x 0 x_0 x0
DDPM的核心过程是如何进行上述去噪过程,因为反向扩散过程 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt1xt)是未知的。扩散模型指出,我们可以使用一个神经网络学习这个去噪过程。原因是在扩散过程中,时刻t的分布 x t x_t xt是已知的,所构建的神经网络的目的是根据t来学习 x t x_t xt的概率分布函数。综上分析,DDPM的反向过程可以建模为 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt1xt),其中KaTeX parse error: Undefined control sequence: \thea at position 1: \̲t̲h̲e̲a̲是网络模型参数,通常可以用SGD等策略对该网络进行优化。
DPM原文指出,在前向扩散过程中每一个时刻向隐变量中加入高斯噪声,为了简化模型的训练难度,DDPM假设反向去噪过程滤除的也是高斯噪声。理论来说,一个随机高斯噪声是根据参数均值和方差所确定,那么 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt1xt)可以表示为在这里插入图片描述
其中均值和方差均是根据模型计算得到的。同时,在推理DDPM的前向扩散过程中我们假设每一个时间扩散均为Markov过程,那么通过马尔可夫链得到扩散模型的后向过程可以表示为在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、目标数据的似然函数分析:
DDPM的损失函数使用变分自编码器的最大化证据下界(Evidence Lower Bound, ELBO)的思想来推导,推导详细过程见论文[3]的式(47)到式(58),这里主要用到了贝叶斯定理和琴生不等式。DDPM的损失函数是在负似然对数的基础上加上一个KL散度构成负似然对数的上界(上界越小,负似然对数越小,进而似然对数就越大)。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本篇文章原创Zichen Wang,医学图像重建大佬。我们的公众号为:成像与视觉
主要内容包含如下:
1、IEEE Trans/Journal投稿交流平台:主要面向有意向在(或已投稿)IEEE Transactions和Journal期刊上进行投稿的同行学习。群内定期更新IEEE主要期刊投稿官网、投稿注意事项,同时审稿周期、审稿流程问题可以在群内相互交流以及如何催搞等相关问题。请按照“投稿期刊+关键词”修改,例如TMI—MR重建,TIM—雷达测量,JBHI—生物信息学等。

2、Medical Image Processing医学图像处理与分析交流平台:主要面向硕博、科研工作者在医学图像领域的科研交流平台,主要包括医学图像重建、分割、配准、去噪、超分、分类等相关任务以及基于AI方法的医学图像处理相关话题的学习和讨论,图像模态主要包括(但不限于)CT、MR、Ultrasound、PET、OCT、ET、PT等其他图像种类。定期分享领域内相关期刊、会议,并提供CT、MR入门的相关国内外经典教材与配套讲义。请按照“图像模态+研究任务”修改,如:MR—加速重建,低剂量CT—重建。

3、Inverse Problems for CV计算机视觉中的反问题交流学习平台:主要面向硕博、科研工作者在成像反问题领域的科研交流平台,主要包括:重建、超分辨率、图像去噪(去模糊)、图像反卷积、计算成像等基于解析方法(迭代、正则化)、机器学习、深度学习等方法的计算机视觉反问题。进群后麻烦大家按照“工作任务”修改群昵称,如:图像重建、图像超分辨率等。

感谢支持,我们会尽力回答各位同学和同行们的问题!

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

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

相关文章

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录&#xff1a;红黑…

TypeScript进阶

目录 TypeScript 与 Vue 文档说明 vscode 插件说明 准备页面基本结构 defineProps与Typescript defineEmits与Typescript ref与Typescript reactive与Typescript computed与Typescript 事件对象与Typescript 模板Ref与Typescript 可选链操作符和非空断言 TypeScript…

21.网络爬虫—js逆向详讲与实战

网络爬虫—js逆向 js逆向JavaScript逆向的详细讲解实战演示有道翻译设置密钥和初始向量对密钥和初始向量进行哈希处理创建AES对象并解密消息移除padding并返回结果 前言&#xff1a; &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f…

python基于卷积神经网络实现自定义数据集训练与测试

样本取自岩心照片&#xff0c;识别岩心是最基础的地质工作&#xff0c;如果用机器来划分岩心类型则会大大削减工作量。 下面叙述中0指代Anhydrite_rock&#xff08;膏岩&#xff09;&#xff0c;1指代Limestone&#xff08;灰岩&#xff09;&#xff0c;2指代Gray Anhydrite_r…

深度学习-第T6周——好莱坞明星识别

深度学习-第T6周——好莱坞明星识别 深度学习-第T6周——好莱坞明星识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …

Flutter学习之旅 - 页面布局Stack层叠组件

文章目录 StackPositioned定位布局浮动导航(StackPositioned)FlutterMediaQuery获取屏幕宽度和高度StackAlign Stack Stack意思是堆的意思&#xff0c;我们可以用Stack结合Align或者Stack结合Positioned来实现页面的定位布局 属性说明alignment配置所有元素显示位置children子组…

23.Lambda表达式

Lambda表达式 一、Lambda表达式背景 Lambda 表达式(lambda expression)是一个匿名函数&#xff0c;Lambda表达式基于数学中的λ演算得名&#xff0c;直接对应于其中的lambda抽象(lambda abstraction)&#xff0c;是一个匿名函数&#xff0c;即没有函数名的函数。Lambda表达式…

2023-05-05 背包问题

背包问题 1 01背包和完全背包问题 01背包问题 有N件物品和一个容量为V的背包&#xff0c;第i件物品的体积是v[i]、价值是w[i]&#xff0c;每种物品只可以使用一次&#xff0c;求将哪些物品放入背包可以使得价值总和最大。这里的w是weight即权重的意思 这是最基础的背包问题&a…

【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手

文章目录 前言环境列表视频教程1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 转载自远控源码文章&#xff1a;飞书接入ChatGPT - 将ChatGPT集…

Ubuntu 如何查看 CPU 架构、系统信息、内核版本、版本代号?

Ubuntu 查看 CPU 架构、系统信息、内核版本、版本代号等相关信息有很多方式&#xff0c;本文介绍几种常用的命令。 x86 架构与 ARM 架构的 CPU 架构不同&#xff0c;如果回显为 aarch64 表示为 ARM 架构&#xff0c;如果回显为 x86_64 表示为 x86 架构&#xff0c;参考《CPU 架…

Prometheus快速入门

Prometheus快速入门 环境准备 三台主机&#xff0c;配置好主机名 各自配置好主机名 # hostnamectl set-hostname --static server.cluster.com ... 三台都互相绑定IP与主机名 # vim /etc/hosts 192.168.126.143 server.cluster.com 192.168.126.142 agent.clu…

归并排序(看了就会)

目录 概念1. 基本思想2. 实现逻辑3. 复杂度分析4、代码 概念 归并排序&#xff0c;是创建在归并操作上的一种有效的排序算法。算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用&#xff0c;且各层分治递归可以同时进行。归并排序思路简单&…

智头条|欧盟达成《人工智能法》协议,全球前沿科技齐聚AWE 2023

行业动态 华为云联手多方推进数字化&#xff0c;软通动力深度参与 华为云宣布启动“‘百城万企’应用现代化中国行”&#xff0c;旨在推动应用现代化进程、助力数字中国高质量落地。软通动力是该行动的参与者之一&#xff0c;共同探索符合区域特点、产业趋势、政企现状的数字化…

Python进阶(Linux操作系统)

一&#xff0c;操作系统 1.1&#xff0c;Linux系统基础操作 1.2&#xff0c;linux进程与线程 1.2.1并发&#xff0c;并行 &#xff08;1&#xff09;并发&#xff1a;在一段时间内交替的执行多个任务&#xff1a;对于单核CPU处理多任务&#xff0c;操作系统轮流让让各个任务…

BasicVSR++代码解读(总体介绍)

本文代码主要来自于OpenMMLab提供的MMEditing开源工具箱中的BasicVSR代码。第一部分的解读主要是针对每一个部分是在做什么提供一个解释&#xff0c;便于后续细读每一个块的细节代码。 &#xff08;1&#xff09;导入库     basicvsr_plusplus_net中主要继承了torch,mmcv,m…

信号的产生——线性调频函数

信号的产生——线性调频函数 产生线性调频扫频信号函数chirp的调用格式如下&#xff1a; &#xff08;1&#xff09;y chirp(t,f0, t1,f1) 功能&#xff1a;产生一个线性&#xff08;频率随时间线性变化&#xff09;信号&#xff0c;其时间轴设置由数组t定义。时刻0的瞬间频…

SpringBoot的配置文件、日志文件

一、配置文件&#xff08; .properties、.yml&#xff09; 1、.properties 配置文件 1.1、格式 1.2、基本语法 1.2.1、如&#xff1a;一般配置&#xff08;以键值的形式配置的&#xff0c;key 和 value 之间是以“”连接的。&#xff09; 1.2.2、如&#xff1a;自定义配置&a…

tcc-transaction 源码分析

tcc介绍 tcc介绍查看我之前的文章&#xff1a; https://caicongyang.blog.csdn.net/article/details/119721282?spm1001.2014.3001.5502 tcc-transaction 介绍&#xff1a; http://mengyun.org/zh-cn/index.html 本文基于2.x 最新版本:https://github.com/changmingxie/tcc…

以京东为例,分析优惠价格叠加规则

一、平行优惠计算原则 1、什么是“平行式门槛计算规则”&#xff1f; 平行式门槛计算规则&#xff0c;即每一层级优惠都直接根据商品的单品基准价来计算是否符合门槛&#xff0c;店铺/平台促销、优惠券类优惠之间是并列关系&#xff0c;只要单品基准价或单品基准价总和&#x…

c++(类和对象中)

【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 目录 1、类的6个默认成员函数 2、构造函数 2.1概念 2.2特性 3.析构函数 3.1概念 3.2特性 4.拷贝构造函数…