图像生成-扩散模型的经典之作DDPM

论文:https://arxiv.org/pdf/2006.11239

项目:https://github.com/hojonathanho/diffusion

Denoising Diffusion Probabilistic Models (DDPM) 是一种生成模型,它通过一系列逐步添加噪声的过程将数据点映射到一个简单的先验分布(如高斯分布),然后反过来学习从这个简单分布中生成原始数据。换句话说,DDPM 的核心思想是通过前向扩散过程逐渐破坏数据,并通过反向去噪过程重建数据。以下是 DDPM 的详细介绍:

1 DDPM工作原理

1.1 前向扩散过程 (Forward Process)

在前向扩散过程中,DDPM 会逐渐向原始数据 x0 添加噪声高斯噪声,直到最终达到一个接近纯噪声的状态 xT​。具体来说,这个过程可以形式化为一个马尔可夫链,其中每个时间步 t 都有一个条件概率分布:

  • 公式右边N,表示 xt​ 服从均值为\sqrt{1-\beta _t}x_{t-1}、协方差矩阵为 \beta _tI 的高斯分布。
  •  \beta _tI是一个预定义的方差调度表(variance schedule),决定了每一步添加噪声的比例。
  • I 是单位矩阵,确保噪声是各向同性的(即在各个维度上的方差相同)。

以上公式是DDPM论文内的公式,可以换成易懂点的公式如下。 

x_t = \sqrt{\beta_t}x_{t-1} + \sqrt{1-\beta_t}\epsilon_t

其中 βt值用来控制噪声的程度,ϵt是随机生成的噪声矩阵,其符合高斯分布(0,βtI)

1.2 反向去噪过程 (Reverse Process)

这是一个生成数据的过程,从纯高斯噪声x_t开始,逐步去噪以恢复原始数据。逆扩散过程同样是一个马尔可夫链,它试图逆转扩散过程中添加的噪声步骤。每一步的逆扩散可以用以下公式表示:

x_{t-1} = \frac{1}{\sqrt{\beta_t}}(x_t - \frac{1-\beta_t}{\sqrt{1-\overline{\beta_t}}}\epsilon_\theta(x_t,t) ) 

其中\epsilon_\theta(x_t,t)是关键(其他都是超参数),它由神经网络根据输入的含噪数据x_t和时间步t学习得到的预测噪声矩阵,这个神经网络经过学习,能够估计在给定时间步长下,从含噪数据中去除多少噪声才能更加接近原始数据。

\overline{\beta_t} = \prod_{i=1}^{t}\beta_i,这些系数都是预先设定的超参数。

\frac{1}{\beta_t}起到一个缩放的作用,\frac{1-\beta_t}{\sqrt{1-\overline{\beta_t}}}对预测噪声进行加权,使得根据当前时间步长和前面时间步长积累的噪声情况,合理的从xt中减去一部分噪声,从而更加接近上一个时间步长x_t-1的数据。 

2 训练

定义模型:通常使用u-net网络架构作为基础模型,它具有编解码结构,能够获取不同层次的特征;

前向扩散过程:从原始数据x0开始,在每个时间步长t通过前面的公式向数据添加高斯噪声,得到含噪数据xt;

计算损失函数:在每个时间步长t,将含噪数据xt输入模型,让模型预测该时间步添加的噪声\epsilon_\theta(x_t,t),然后计算预测噪声和实际噪声的均方误差损失,即

L =\mathbb{E}_{t,x_0,\epsilon }\left [ \left \| \epsilon-\epsilon_\theta (x_t,t) \right \|^2 \right ]

3 测试

 采样初始噪声:从标准高斯分布N(0, I)中随机采样得到离散噪声xt,作为逆向扩散过程的起始点;

逆向去噪:在每个时间步t,从T逐步减少到1,将当前噪声数据xt输入训练好的模型,得到预测噪声\epsilon_\theta(x_t,t),再根据逆向公式去除噪声,步骤逼近原始数据。

生成结果:经过多次迭代,当t=0时,得到x0即为生成的数据。


源码解读待续。。。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Axure视频教程】中继器表格——筛选后的条件判断

今天教大家在Axure制作中继器表格筛选以及筛选后条件交互的原型模板,我们可以在输入框里输入员工姓名,点击查询按钮后可以筛选出对应的数据,筛选后会进行条件判断,如果筛选不到任何数据,就会显示提示弹窗。这个原型模板…

GDPU 人工智能 期末复习

1、python基础 2、回归、KNN、K-Means、搜索方法思想及算法实现步骤 3、知识表示基本概念 4、状态空间的相关概念、表示方法及应用 5、图搜索策略及应用 6、问题归约概念、与或图搜索、博弈树搜索与剪枝 7、决策树、贝叶斯决策算法及其应用 8、神经网络与深度学习基本概念 一、…

几个Linux系统安装体验: 龙蜥服务器系统

本文介绍龙蜥服务器系统(AnolisOS)的安装。 下载 下载地址: https://openanolis.cn/download 选定版本为8.6。 本文下载的文件名称为AnolisOS-8.6-x86_64-minimal.iso,体积约2.2GB。另:AnolisOS-8.6-QU1-x86_64-dv…

Unity 设计模式-策略模式(Strategy Pattern)详解

策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进…

阿拉丁论文助手:一键点亮学术之路

在学术研究的海洋中,每一位学者都渴望拥有一盏能够照亮前行道路的神灯。阿拉丁论文助手,正是这样一盏神奇的灯,它以其先进的人工智能技术和丰富的学术资源,为学者们的学术写作提供了全方位的支持。 一、阿拉丁论文助手简介 阿拉丁…

YOLOv10改进,YOLOv10添加U-Netv2分割网络中SDI信息融合模块,助力小目标检测

摘要 理论介绍 SDI模块的架构: 平滑卷积(SmoothConv):用于平滑特征图,帮助减少噪声并使得特征更加稳定。Hadamard积:用于在特征图中进行逐元素相乘(点乘),以加强语义信息和细节信息的融合。通道注意力(ChannelAttention):利用通道注意力机制来自动关注重要的特征通…

解锁 AI 潜能 - ChatGPT等大模型提示词技巧

在人工智能领域,ChatGPT 等大语言模型正在重新定义我们的工作和生活方式。这些强大的 AI 大模型 能够理解自然语言并生成高质量的内容,无论是撰写文案、解决问题,还是数据分析,都展现了卓越的表现。如何高效使用这些工具&#xff…

基于Java和Vue开发的漫画阅读软件漫画阅读小程序漫画APP

前景分析 受众广泛:漫画的受众群体广泛,不仅限于青少年,还涵盖了成年人等多个年龄层和社会阶层。漫画文化在全球范围内的影响力不断扩大,未来漫画软件创业可以考虑全球市场的拓展。 市场需求大:数字化阅读趋势下&…

GEE:CCDC 分类组件,对每个分段进行分类

作者:CSDN @ _养乐多_ 连续变化检测与分类(Continuous Change Detection and Classification, CCDC) 利用了时间序列拟合来对影像中的像素值随时间的变化趋势建模。每一段模型代表一个时间段内的地表覆盖类型和状态。 本文将解释如何在谷歌地球引擎(Google Earth Engine,…

vue3+elementPlus封装的一体表格

目录结构 源码 exportOptions.js export default reactive([{label: 导出本页,key: 1,},{label: 导出全部,key: 2,}, ])index.vue <template><div class"flex flex-justify-between flex-items-end"><div><el-button-group><slot name…

【计算机组成原理】CPU概述

文章目录 CPU主要功能CPU总体结构模型运算部件缓存部件寄存器组(堆)控制器时序部件 CPU主要功能 CPU是取指令并执行指令的部件 CPU总体结构模型 运算部件 运算部件用于对操作数进行运算&#xff0c;主要是算术运算/逻辑运算 运算部件的基本组成如下&#xff1a; 缓存部件 缓…

鸿蒙开发——键值型数据库的基本使用与跨设备同步

1、简 述 ❓ 什么是键值型数据库 键值型数据库&#xff08;KV-Store&#xff09;是一种非关系型数据库&#xff0c;其数据以“键值”对的形式进行组织、索引和存储&#xff0c;其中“键”作为唯一标识符。 键值型数据库适合很少数据关系和业务关系的业务数据存储。 另外&#…

零基础认识:交换机,子网掩码,默认网关,以及路由器,IP地址,MAC地址

图解 物理层&#xff1a;使用MAC解决设备的身份证问题 通信的原始时代 很久很久之前&#xff0c;你不与任何其他电脑相连接&#xff0c;孤苦伶仃。 直到有一天&#xff0c;你希望与另一台电脑 B 建立通信&#xff0c;于是你们各开了一个网口&#xff0c;用一根网线连接了起来…

【Canvas与标牌】Water Outages(停水)标牌

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Wate Outages停水标志 Draft1</title><style type"tex…

CentOS 7 上安装 MySQL 8.0.40 (二进制安装)

要在 CentOS 7 上安装 MySQL 8.0.40&#xff0c;按照以下步骤操作&#xff1a; 下载安装包。 https://dev.mysql.com/downloads/mysql/ 下载之前查看系统c版本 解压安装包 首先&#xff0c;解压下载的 .tar.xz 安装包。 cd /path/to/your/downloads tar -xvf mysql-8.0…

汽车产业数字化转型:协同创新破解挑战,平衡安全与流通

在数字经济时代的浪潮中&#xff0c;数据资源和数据信息已成为驱动各行各业转型升级的“新石油”。汽车产业&#xff0c;作为国民经济的重要支柱&#xff0c;正经历着前所未有的变革。随着数字化创新和转型的深入&#xff0c;数据在汽车全产业链中的作用和价值日益凸显。在这个…

windows 脚本批量管理上千台服务器实战案例

如果你们有接触服务器&#xff0c;都是知道服务器有BMC管理界面的&#xff0c;这几天我在做项目中&#xff0c;需要不断的开关机服务器&#xff0c;如果一两台服务器登录BMC界面重启服务器还好&#xff0c;如果服务器数量非常的庞大&#xff0c;成百上千台&#xff0c;我们不可…

yarn : 无法加载文件 C:\Users\L\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁

关于执行安装yarn命令后执行yarn -v报错&#xff1a; 先确认执行安装yarn命令是否有误 # 安装yarn npm install yarn -g 终端输入set-ExecutionPolicy RemoteSigned 当然如果yarn -v仍然执行失败&#xff0c;考虑使用管理员方式运行IDEA&#xff0c; 注&#xff1a;如上操作…

Redis 数据结结构(一)—字符串、哈希表、列表

Redis&#xff08;版本7.0&#xff09;的数据结构主要包括字符串&#xff08;String&#xff09;、哈希表&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09;、集合&#xff08;Set&#xff09;、有序集合&#xff08;Sorted Set&#xff09;、超日志&#xff08…

FPGA实战篇(按键控制LDE实验)

1.按键简介 按键开关是一种电子开关&#xff0c;属于电子元器件类。我们的开发板上有两种按键开关&#xff1a;第一种是本实验所使用的轻触式按键开关&#xff0c;简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通&#xff0c;当撤销压力时开关断开&#xff…