DDPM

1. 大致流程

1.1 宏观流程

1.2 训练过程

1.3 推理过程

2. 对比GAN

2.1 GAN流程

2.2 相比GAN优点

训练过程更稳定,损失函数指向性更强(loss数值大小指示训练效果好坏)

3. 详细流程

3.1 扩散阶段

如下图,X0为初始干净图像,XT由X0逐步添加噪声所得到



具体到一次Xt-1到Xt的扩散过程如下图,Zt为此时刻添加的随机噪声(服从标准正态分布),β随着时间t从0到T的过程逐步线性增大,通常扩散次数T选择1000(2000也行),选择这样的次数主要是希望最后得到的是一个完全噪声的图片,而不是还能看出图片中的内容



如上得到了每一步之间的扩散步骤,那么由最初的X0扩散到最终的XT,推导过程如下:

  1. 先用α替换掉β

  2. Xt由Xt-2表示

  3. Xt由X0表示

  4. t换成T来表示(最终XT是一个服从标准正态分布的随机噪声,即可以约等于噪声Z,即αT拔约等于0)

3.2 去噪重建阶段

  1. 大体过程

    如下图,在去噪重建的过程中,先随机采样一个随机噪声XT,将XT放入U-Net预测噪声Z,然后将XT去除噪声Z得到XT-1,再将XT-1放入U-Net预测噪声...重复上述过程,直至最终预测出X0

  2. 用于预测噪声的U-Net如下,传入噪声Xt和t,t可以理解为positional embedding,因为在前向的扩散过程中每一时刻添加的噪声强度是不一样的,所以在进行预测的时候,预测出的每一时刻的噪声强度也是不一样的

  3. 如上我们已经可以使用U-Net预测出每一时刻的噪声了,那我们怎么通过预测出的噪声预测书上一时刻的图片呢?也就是怎么得到如下图的推理公式呢?

  4. 如下一系列图片即进行上述问题的推理

    首先观察如何从Xt得到Xt-1,利用贝叶斯公式进行如下转化



    然后根据如下扩散过程推出上述每一部分的表达式





    然后根据标准正态分布,求出整体表达式















    最终得出XT到XT-1的表达式



    如上,便完成了一次使用U-Net预测出的噪声对随机采样的噪声去噪,接下来就是从XT一直去噪到X0的过程

4. 论文算法

4.1 Training

实际的训练过程中,没有如上所描述的那样繁琐,总的来说如下:

  1. repeat
  2. 在均匀分布T里随机采一个t
  3. 随机采样一个标准分布的噪声ε
  4. 使用t和ε计算出Xt
  5. Xtt放入U-Net预测出噪声(εθ(Xt,t)即为U-Net
  6. 计算εθ和ε损失
  7. until 收敛

4.2 Sampling

去噪的生成过程中,需要注意一点,当逐步去噪到t=1时,不需要再随机采样一个标准正态分布的Z,因为此时求的是X0(最后的干净图片),干净图片再添加一个噪声就变得不干净了。

【Deep Learning】DDPM的更多相关文章

  1. 【Deep Learning】一、AutoEncoder

    Deep Learning 第一战: 完成:UFLDL教程 稀疏自编码器-Exercise:Sparse Autoencoder Code: 学习到的稀疏参数W1: 参考资料: UFLDL教程 稀疏自 ...

  2. 【Deep Learning】genCNN: A Convolutional Architecture for Word Sequence Prediction

    作者:Mingxuan Wang.李航,刘群 单位:华为.中科院 时间:2015 发表于:acl 2015 文章下载:http://pan.baidu.com/s/1bnBBVuJ 主要内容: 用de ...

  3. 【Deep Learning】林轩田机器学习技法

    这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密. 林介绍了deep learning近年来受到了很大的关注: ...

  4. 【Deep Learning】两层CNN的MATLAB实现

    想自己动手写一个CNN很久了,论文和代码之间的差距有一个银河系那么大. 在实现两层的CNN之前,首先实现了UFLDL中与CNN有关的作业.然后参考它的代码搭建了一个一层的CNN.最后实现了一个两层的C ...

  5. 【Deep Learning】Hinton. Reducing the Dimensionality of Data with Neural Networks Reading Note

    2006年,机器学习泰斗.多伦多大学计算机系教授Geoffery Hinton在Science发表文章,提出基于深度信念网络(Deep Belief Networks, DBN)可使用非监督的逐层贪心 ...

  6. 【deep learning】斯坦福CS231n—深度学习与计算机视觉(资料汇总)

    官网 链接:CS231n: Convolutional Neural Networks for Visual Recognition Notes: 链接:http://cs231n.github.io ...

  7. 【Deep Learning】RNN LSTM 推导

    http://blog.csdn.net/Dark_Scope/article/details/47056361 http://blog.csdn.net/hongmaodaxia/article/d ...

  8. 【Deep Learning】RNN的直觉理解

    https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/

  9. 【Deep learning】NLP

    http://www.tuicool.com/articles/EvaQJnJ http://cs224d.stanford.edu/syllabus.html

  10. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h

    DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...

随机推荐

  1. HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?

    HDFS.Ceph.GFS.GPFS.Swift.Lustre--容器云选择哪种分布式存储更好?-51CTO.COM 容器云在使用分布式存储时,HDFS.CEPH.GFS.GPFS.Swift等分布式 ...

  2. sscms自己从数据库筛选内容

    where条件除了SiteId和ChannelId之外, 还需要加上IsChecked='True',而不是CheckedLevel

  3. 安装 vue devtools 时,npm i 和 npm run build 报错问题

    1.如果 npm i 报错,运行如下命令: npm i --legacy-peer-deps 2.如果 npm run build 报错,运行如下命令: npm install -g yarn yar ...

  4. 2.javaOOP_Part2继承

  5. Web_ServletContext主要方法

    ServletContext:联系上下文,一个项目通用一个context,作用域:整个项目 用法:Servlet里面直接应用,tomcat帮我们自动创建. 获取ServletContext:getSe ...

  6. USB 驱动框架分析

    这里先说一些概念性的东西,了解一下USB 一.关于usb设备 都见过很多,用过很多了,每当我们插上一个usb设备到pc的时 右下角就会弹出一个提示信息,提示"发现xxx"设备,再接 ...

  7. MYSQL DUAL(伪表)

    #DUAL是一个伪表,不存在的表. SELECT 8*9 FROM DUAL #输出72

  8. TortoiseGit自动保存用户名和密码

    在使用TortoiseGit上传时,会多次提示输入用户名和密码,采用以下方法解决 1.桌面点击右键 -> 选择TortoiseGit -> 点击settings 2.点击选择Git 3.点 ...

  9. tomcat的SSL配置

    Table of Contents 1. 删除别名为tomcat的密钥 2. 生成别名为tomcat的密钥 3. tomcat配置密钥存储路径 4. 生成证书并通过浏览器导入 5. 80,443端口重 ...

  10. 在 Kubernetes 集群中部署现代应用的通用模式

    在 Kubernetes 集群中部署现代应用的通用模式 摘要 我们正在经历现代应用交付领域的第二次浪潮,而 Kubernetes 和容器化则是这次浪潮的主要推动力量. 随着第二次浪潮的推进,我们在 N ...