Diffusion Model原理详解

Diffusion Model原理详解及源码解析_diffusion model用于超分的能力边界 其中,XtX_tXt​表示ttt时刻的图像,Xt−1X_{t-1}Xt−1​表示t−1t-1t−1时刻图像,Z1Z_1Z1​表示添加的高斯噪声,其服从N(0,1)分布。**【注:N(0,1)表示标准高斯分布,其方差为1,均值为0】**目前你可以看出XtX_tXt​和Xt−1X_{t-1}Xt−1​、Z1Z_1Z1​都有关系,这和我们前文所述相符合,这时你可能要问了,那么这个公式前面的atat​​和1−at1−at​。 阅读详情

Diffusion Model(扩散模型 )对标的是生成对抗网络(GAN),只要GAN能干的事它基本都能干。之前用GAN网络来实现一些图片生成任务其实效果并不是很理想,而且往往训练很不稳定。但是换成Diffusion Model后生成的图片则非常逼真,也明显感觉到每一轮训练的结果相比之前都更加优异,也即训练更加稳定。

本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码,探究其是如何通过代码实现的。

整体思路

Diffusion Model的整体思路如下图所示:

其主要分为正向过程和逆向过程,正向过程类似于编码,逆向过程类似于解码。

  • 正向过程
    首先,对于一张原始图片x_0,我们给x_0加一个高斯噪声,图片由变成x_1。【注意:这里必须要加高斯噪声喔,因为高斯噪声服从高斯分布,后面的一些运算需要用到高斯分布的一些特性】」接着我们会在x_1的基础上再添加高斯噪声得到x_2。重复上述添加高斯噪声步骤,直到图片变成x_n,由于添加了足够多的高斯噪声,现在的x_n近似服从高斯分布(又称正态分布)。
    现在有一个问题需要大家思考一下,我们每一步添加高斯噪声的量一直是不变的吗? 滴,开始解答。答案是每步添加高斯噪声的量是变化的,且后一步比前一步添加的高斯噪声更多。我想这一点你通过上图也非常容易理解,一开始原图比较干净,我们添加少量高斯噪声就能对原图产生干扰;但越往后高斯噪声量越多,如果还添加一开始少量的高斯噪声,那么这时对上一步结果基本不会产生任何影响。【注:后文所述的每个时刻图像和这里的每一步图像都是一个意思,如x_1时刻图像表示的就是x_1这个图像】
  • 逆向过程
    首先,我们会随机生成一个服从高斯分布的噪声图片,然后一步一步的减少噪声直到生成预期图片。逆向过程大家先有这样的一个认识就好,具体细节稍后介绍。

实施细节

这一部分为大家介绍一下Diffusion Model正向过程和逆向过程的细节,主要通过推导一些公式来表示加噪前后图像间的关系。

正向过程

在整体思路部分我们已经知道了正向过程其实就是一个不断加噪的过程,于是我们考虑能不能用一些公式表示出加噪前后图像的关系呢。我想让大家先思考一下后一时刻的图像受哪些因素影响呢,更具体的说,比如x_2由哪些量所决定呢?我想这个问题很简单,即x_2是由x_1和所加的噪声共同决定的,也就是说后一时刻的图像主要由两个量决定,其一是上一时刻图像,其二是所加噪声量。明白了这点,我们就可以用一个公式来表示x_t时刻和x_t-1时刻两个图像的关系,如下:

X_t=\sqrt{a_t} X_{t-1}+\sqrt{1-a_t} Z_1 ——公式1

其中,X_t表示t时刻的图像,X_{t-1}表示t-1时刻图像,Z_1表示添加的高斯噪声,其服从N(0,1)分布。【注:N(0,1)表示标准高斯分布,其方差为1,均值为0】目前你可以看出X_t和X_{t-1}、Z_1都有关系,这和我们前文所述后一时刻的图像由前一时刻图像和噪声决定相符合。这个公式前面的\sqrt{a_t}和\sqrt{1-a_t}表示这两个量的权重大小,它们的平方和为1。

 我想你已经明白了公式1,但是你可能对\sqrt{a_t}和\sqrt{1-a_t}的理解还存在一些疑惑,如为什么要设置这样的权重?这个权重的设置是我们预先设定的吗? 其实,a_t还和另外一个量\beta_t有关,关系式如下:

​ a_t=1-\beta_t——公式2

其中,\beta_t是预先给定的值,它是一个随时刻不断增大的值,论文中它的范围为[0.0001,0.02]。既然\beta_t越来越大,则a_t越来越小,a_t越来越小,1−a_t越来越大。现在我们在来考虑公式1,Z_1的权重 \sqrt{1-a_t}随着时刻增加越来越大,表明我们所加的高斯噪声越来越多,这和我们整体思路部分所述是一致的,即越往后所加的噪声越多。

现在,我们已经得到了x_t时刻和x_{t-1}时刻两个图像的关系,但是x_{t-1}时刻的图像是未知的。【注:只有x_0阶段图像是已知的,即原图】我们需要再由x_{t-2}时刻推导出x_{t-1}时刻图像,然后再由x_{t-3}时刻推导出x_{t-2}时刻图像,依此类推,直到由x_0时刻推导出x_1时刻图像即可。既然这样我们不妨先试试x_{t-2}时刻图像和

深度学习(7)---Diffusion Model概念讲解 在扩散模型中,CLIP可以作为打通文本和图像的桥梁的核心模块,用于控制图像生成的过程。它分为正向的扩散过程和反向的逆扩散过程。正向扩散过程是往图片上加噪声的过程,即从无到有地添加噪声,直到得到纯噪声图片。(2) 每步添加高斯噪声的量是变化的,且后一步比前一步添加的高斯噪声更多。去噪过程不是说由一张图片生成另一张图片,而是在一张高噪声图片的基础上,减掉一个噪声图片从而得到另一张低噪声图片。3. 逆向过程:首先,我们会随机生成一个服从高斯分布的噪声图片,然后一步一步的减少噪声直到生成预期图片。 阅读详情

相关推荐

学习笔记(二)----diffusion model

(本文介绍的diffusion Model 是论文:Denoising Diffusion Probabilistic Models(DDPM)去噪扩散概率模型,DDPM是2020年提出,是AIGC主流生成模型)我们可以看到最近很火的text-to-image,通过给定文本描述生成图片,当前最先进的两个text-to-image是OpenAI的DALL E2和Google的Imagen,他们都是基于扩散模型来完成的。什么是扩散模型?|Lil'Log的 (lilianweng.github.io)

weixin_52121118的博客 1825

Diffusion Model原理详解及源码解析_diffusion model用于超分的能力边界(1)

2Z3​Z3​     ——公式5同理,我们将公式5代入到公式4中,得到xtx_txt​时刻图像和xt−3x_{t-3}xt−3​时刻图像的关系,公式如下:​Xtatat−1at−2Xt−31−atat−1at−2Z3​Z^3​      ——公式6公式5我没有带大家一步步的计算了,只写出了最终结果,大家可以自己算一算,非常简单,也只用到了高斯分布的相关性质。注意上述的Z3\hat {Z_3}

2401_85012262的博客 594

扩散模型(Diffusion Model)原理详解:从DDPM到DDIM的完整指南

生成模型一直是人工智能领域的研究热点,GAN与VAE各具优势但存在训练不稳定或生成模糊等问题。扩散模型通过逐步向数据添加噪声再学习去噪的过程,开辟了高质量生成的新路径。其核心思想是前向加噪与反向去噪,利用U-Net结构预测噪声,训练目标简化为MSE损失,显著提升了训练稳定性。DDIM等加速采样方法进一步将生成步数从千步压缩至几十步,使扩散模型在AI绘画、图像超分辨率等场景广泛应用。本文详细解析了扩散模型的数学原理、关键参数与工程实践,帮助读者建立从理论到代码的完整认知。

weixin_33834910的博客 393

Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)

本篇是《Diffusion Model (扩散生成模型)的基本原理详解(二)Score-Based Generative Modeling(SGM)》的续写,继续介绍有关diffusion的另一个相关模型,同理,参考文献和详细内容与上一篇相同,读者可自行查阅,**本篇为Diffusion入门基础介绍的完结篇,本篇来着重介绍Stochastic Differential Equation(SDE)的部分。

lvoutongyi的博客 6779

扩散模型(Diffusion Model)——生成模型

扩散模型(Diffusion Model)是一种生成模型,最近在图像生成、视频生成、语音合成等领域取得了显著的进展。与传统的生成对抗网络(GAN)和变分自编码器(VAE)不同,扩散模型通过逐步将噪声添加到数据并反转这一过程来生成新样本。

m0_75253143的博客 7750

SAP 货币类型和公司代码的货币设置

货币类型分为公司代码和集团货币,一般FI 10类型和集团货币 30,事务代码是8KEM; 设置货币类型的事务代码是OB22 在S/4 1809版本里编辑功能统合到事务代码FINSC_LEDGER 中了,这里集中了分类账和公司代码的设置; 设置多账簿的币种(会出现在BSEG和FAGLFLEXA表中) 汇率维护在TCURR表中,可通过BAPI_EXCHANGERATE_GETDETAIL函数获取。 CO货币的事务代码是成本控制范围货币:OKKP ,一般设置为货币码20和30; 另外, SCC4设置集团货币,

RichardYang2020的博客 1万+

强化学习-马尔可夫模型

前文提到了强化学习源自马尔可夫决策过程,本文从马尔可夫概念入手,讲解和马尔可夫有关的模型和概念。在马尔科夫决策过程中,我们有一个智能体,它在一个马尔科夫过程中进行决策,每次决策都会导致状态的转移和获得即时奖励。智能体的目标是通过选择动作来最大化未来奖励的期望值。通常马尔科夫决策过程是个五元组:SAPRγSAPRγS 表示状态集合,代表智能体可能处于的所有状态。A 表示动作集合,代表智能体可以采取的所有动作。

君子之学必日新,日新者日进也。不日新者必日退,未有不进而不退者 8050

【UV打印机】RYPC打印软件教程(二)-软件界面概述

下图是控制软件的主操作界面.将喷绘机的操作规纳为四块,分别为参数设置,任务选择,打印控制,系统维护,对于日常打印而言,只需操作任务选择,打印控制。从而使汲及的操作相对较少,使得系统对普通用户而言简单易用.

Print World的专栏 3590

别再为GEE注册发愁了!用谷歌Cloud Project,5分钟搞定谷歌地球引擎账户(保姆级图文)

本文提供2024最新版谷歌地球引擎(GEE)账户注册的保姆级教程,通过谷歌Cloud Project快速完成注册,5分钟极速通关。详细解析注册前的准备、分步图解流程、常见误区及解决方案,帮助用户避开90%的注册陷阱,直达GEE核心功能区。

weixin_42557830的博客 189

海思Hi3061M MCU:为高速吹风筒市场注入智能动力

此外,海思还提供了丰富的软件开发工具和生态环境组件,帮助开发者快速实现复杂功能。高速吹风筒因其高效的风力和快速的干燥效果,近年来在市场上越来越受欢迎。然而,传统的高速吹风筒在性能、噪音和使用寿命等方面仍有改进的空间。凭借其高性能、低功耗、低噪声和易用的开发工具,为高速吹风筒市场带来了全新的解决方案。这不仅提高了用户的使用体验,还延长了电机的使用寿命。这不仅减少了电机的电磁噪声,还提高了电机的运行效率。还支持风机顺逆风启动适配多种电阻范围的电机,进一步提高了吹风筒的适用性和灵活性。

2401_83448585的博客 2004

Bochs源码分析 - 4: 使用ida来调试bochs

前言 bochs内部提供了一个调试器,但是这个命令行调试器相当难用,想找一个gui的debugger。第一次是在百度百科的bochs词条中介绍的peter-bochs-debugger调试器(java编写),但是后来发现ida也有一个bochs调试器,因为对ida比较熟悉,就选用此作为bochs调试器。 在配置过程中参考博客 https://blog.csdn.net/cssxn/article/details/90738498 中的配置,但是这是直接发布版本,拿源码编译...

WriteAnything_的博客 2747

Cesium+Three.js融合实战:从零构建GIS与BIM一体化大场景

本文详细介绍了Cesium与Three.js融合技术在GIS与BIM一体化大场景中的应用实践。通过坐标系转换、双引擎协同渲染等核心技术,实现宏观地理信息与微观建筑细节的完美结合,为智慧城市、数字孪生等项目提供高效解决方案。文章包含环境配置、性能优化等实战经验,助力开发者快速掌握三维可视化开发技巧。

weixin_42563415的博客 255

LLC谐振变换器软启动,不只是“慢启动”,还是“智能启动”

LLC谐振变换器的软启动,不只是“慢慢来”,而是要在控制时序、限流、响应速度之间精妙权衡。而数字控制,特别是用查表法或混合信号法,为实现真正的“最佳轨迹”提供了可能。✨小Tips:如果你的系统成本敏感,选择查表法准没错;如果你的设计目标是超高速响应,那就上混合信号的高配方案!

weixin_43199439的博客 684

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 初识神经辐射场NeRF
下一篇: ChatGPT/InstructGPT解析
SeaShawnChan
博客等级 码龄8年 40粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值