【扩散模型系列1】扩散模型背景|DDPMs|LDM

目录

    • 概述
    • DPM
    • DDPM
      • 前向加噪
      • 反向去噪
        • UNet
      • 训练阶段
      • 推理阶段
    • IDDPM
    • Classifier Guidance
    • GLIDE
    • LDM
      • 模型结构
        • VAE
        • 扩散模型U-Net
      • 训练阶段
      • 推理阶段
    • 参考资料

在这里插入图片描述

概述

扩散模型:和其他生成模型一样,实现从噪声(采样自简单的分布)生成目标数据样本。

扩散模型包含两个过程:前向扩散过程反向生成过程

  • 前向扩散过程是对一张图像逐渐添加高斯噪音直至变成随机噪音

  • 反向生成过程是去噪音过程,我们将从一个随机噪音开始逐渐去噪音直至生成一张图像,这也是我们要求解或者训练的部分。

​ 去噪过程一般采用UNet或者ViT,使用t步的结果和条件输入预测t-1步增加的噪声,然后使用DDPM可以得到t-1步的分布,经过多步迭代就可以从随机噪声还原到有实际意义的信号。如果使用原始DDPM速度会慢很多,所以很多工作如DDIM、FastDPM等工作实现了解码加速。

DPM

Diffusion Probabilistic Models

《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》2015

首次提出 完成了整体框架和数学推导式子

扩散模型是借鉴了物理学上的扩散过程;

在生成模型上,分为正向和逆向的过程。

  • 正向过程是向信号中逐渐每步加少量噪声,当步数足够大时可以认为信号符合一个高斯分布。

  • 所以逆向过程就是从随机噪声出发逐渐的去噪,最终还原成原有的信号。
    在这里插入图片描述

DDPM

《Denoising Diffusion Probabilistic Models》2020

《去噪扩散概率模型》

真正应用于cv,nlp的任务,首次将它在高分辨率图像生成上调试,与UNet网络高度契合,让众人看到了Diffusion在视觉方面的潜力。

DDPM 主要分为两个过程:

  • forward 加噪过程(从右往左):加噪过程是指向数据集中的真实图像逐步加入高斯噪声, 加噪过程满足一定的数学规律,不需要学习
  • reverse 去噪过程(从左往右):去噪过程是指对加了噪声的图片逐步去噪,从而还原出真实图像。去噪过程则采用神经网络模型来学习。这样一来,神经网络模型就可以从一堆杂乱无章的噪声图片中生成真实图片了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

前向加噪

扩散过程时逐步加噪的过程, 符合马尔科夫假设, 每一步的噪声都是高斯噪声,正向扩散过程属于无参模型(不需要进行学习)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
**加粗样式
前向加噪可以使用公式一次计算到位

在这里插入图片描述
代码实现
在这里插入图片描述

反向去噪

从高斯噪声中采样,学习一个模型估计真实的条件概率分布(从上一状态到下一状态的条件概率模型)
也可以直接计算任意状态的分布,因此可以直接采样,然后和真实图像计算均方误差
用一个 U-Net 结构来对t时刻的噪声进行预测
在这里插入图片描述

UNet

UNet可以实现输出和输入一样维度,所以天然适合扩散模型。

2015 传统深度学习时代的早期,U-Net: Convolutional Networks for Biomedical Image Segmentation(U-Net)正式发表,图像分割领域迎来了它的“ResNet”

Encoder-Decoder结构

在这里插入图片描述

训练阶段

训练U-Net 对 t 时刻的噪声进行预测。

训练数据:采样 x0, t 作为,先计算 xt,

输入:xt , time_step

输出:噪声z分布
在这里插入图片描述
在这里插入图片描述

推理阶段

在这里插入图片描述
在这里插入图片描述

IDDPM

《Improved Denoising Diffusion Probabilistic Models》

比原始DDPM一个重要的变化是不再采用固定的方差,而是采用网络来预测方差。在DDPM中,生成过程的分布采用一个参数化的高斯分布来建模。
在这里插入图片描述

Classifier Guidance

《Diffusion Models Beat GANs on Image Synthesis》2020

openAI在2020年发表的一篇文章。文章从模型结构入手,通过扩大模型容量,在图像生成任务上击败了当时的SOTA Big GAN。

此外还提出了Classifier guidance,用于控制扩散模型生成指定类型的图像

分类器指导的思想与其进行噪声预测时的想法类似,主要是修改高斯分布的均值参数来指导图像按类别生成,有一个超参数s表示指导的程度,算法如下:

提出了一种Classifier Guidance的带条件图像生成方法,大大拓展了Diffusion Models的使用场景。

一是需要额外训练一个噪声版本的图像分类器。二是该分类器的质量会影响按类别生成的效果。三

GLIDE

《Classifier-Free Diffusion Guidance》2021

Classifier-Free Guidance的核心是通过一个隐式分类器来替代显示分类器,而无需直接计算显式分类器及其梯度

《Hierarchical Text-Conditional Image Generation with CLIP Latents》

《GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models》

LDM

《High-resolution image synthesis with latent diffusion models》 2022

《使用隐式扩散模型进行高分辨率图像合成》

以前的扩散模型(diffusion models (DMs) )基于像素级别的,其需要上百个GPU day 进行训练。

LDM(latent diffusion model) 潜空间扩散模型是基于latent, 在减少计算复杂度和保留细节、提升保真度中接近了最佳。

LDMs是两阶段模型(two-stage):

  • 采用一个autoencoder来将图像压缩为低维度的latent,可减少计算复杂度;

  • 然后输入扩散模型, 扩散模型用来生成latent,然后再采用autoencoder来重建出图像。

详细过程如下图所示:

  • 第一部分就是下面左半部分(红色),对图片进行压缩,将图片压缩为隐变量表示(latent),这样可以减少计算复杂度;

  • 第二部分还是扩散模型(diffusion与denoising),中间绿色部分。此外引入了cross-attention机制,下图右半部分,方便文本或者图片草稿图等对扩散模型进行施加影响,从而生成我们想要的图片,比如根据文本生成我们想要的图片。

在这里插入图片描述

模型结构

VAE

自编码模型对原图片进行处理,忽略掉图片中的高频信息,只保留重要、基础的一些特征。

这种方法带来的的好处是能够大幅降低训练和采样阶段的计算复杂度,让文图生成等任务能够在消费级GPU上,在10秒级别时间生成图片,大大降低了落地门槛。

扩散模型U-Net

解释为一个时序去噪自编码器
在这里插入图片描述

训练阶段

训练本质上是一个两阶段训练的过程

  • 第一阶段需要训练一个自编码器。

    在通用自编码阶段我们只需要训练一次,因此可以将其重复用于多个 DM 的训练,或探索可能完全不同的任务

在第一阶段训练自编码器时,为了避免潜在表示空间出现高度的异化,作者使用了两种正则化方法,一种是KL-reg,另一种是VQ-reg,因此在官方发布的一阶段预训练模型中,会看到KL和VQ两种实现。

KL-reg:在一个标准正态分布中引入一个KL惩戒因子,类似于VAE

VQ-reg:在解码器 D 中加入一个向量量化层,类似于VQGAN

  • 第二阶段才需要训练扩散模型本身。

在Stable Diffusion中主要采用AutoencoderKL这种实现。

img

推理阶段

img

img

模型使用VAE将图片encoder到隐空间,生成结果同样也是通过VAE解码成原始大小的图片。

参考资料

DDPM

大白话AI 图像生成模型DDPM |

Diffusion | DDPM | 1 - 概述

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

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

相关文章

鸿蒙开发(七)添加常用控件(上)

相信大家已经对鸿蒙开发的布局有了基本的了解。之前我们提到过,一个好的UI,离不开选择合理的布局。当然,也离不开适当的控件。本篇文章,带着大家一起学习下如何在页面里面添加常用的控件。由于控件较多,我会分为两篇文…

Windows®、Linux® 和 UNIX® 系统都适用的远程桌面工具 OpenText ETX

Windows、Linux 和 UNIX 系统都适用的远程桌面工具 OpenText ETX 为 Windows、Linux 和 UNIX 实施精益、经济高效的虚拟化;提供完整的远程 Windows 可用性;以类似本地的性能远程工作;安全地保护系统和知识产权(IP)&am…

关于 Runes 协议及「公开铭刻」发行机制的拓展讨论

撰文:MiX 编辑:Faust,极客 web3 2024 年 3 月 2 日,Runes 生态基础设施项目 Rune alpha 的创始人,在 Github 的公开议题中,与 Runes 协议创始人 Casey 展开了讨论,双方对如何拓展 Runes 协议的…

MYSQL distinct 和group by 同时使用性能急剧下降

语句:select distinct a from A group by a 当记录数上万,执行时间将达到30秒左右。 修改为 select distinct a from (select a from A group by a),执行时长会在1秒以内。 对比两条SQL 语句执行记录,发现修改前Handler_read_rnd_next 数量…

智慧灯杆-智慧城市照明现状分析(1)

城市道路照明是城市公共设施的重要组成部分,而随着城镇化建设的推进,城市道路照明路灯的数量越来越多,能耗越来越高,供电趋于紧张。此外,城市照明的维护工作和高昂的维护成本(人工控制、路灯巡查等),给城市管理造成了巨大的困难。管理部门需要更有效率的管理和节能方案…

支持向量机 SVM | 线性可分:软间隔模型

目录 一. 软间隔模型1. 松弛因子的解释小节 2. SVM软间隔模型总结 线性可分SVM中,若想找到分类的超平面,数据必须是线性可分的;但在实际情况中,线性数据集存在少量的异常点,导致SVM无法对数据集线性划分 也就是说&…

Kubernetes Operator开发实践

Operator 介绍 Operator 可以看成是 CRD Controller 的一种组合资源。Kubernetes 中的基础资源类型有 Pod、Service、Job、Deployment 等表达能力有限,CRD 则提供了创建新的资源类型方式;Controller 监听 CRD 对象实例的增、删、改事件,然后…

独孤思维:99%副业赚不到钱的原因

什么都学等于什么都不会。 什么都做等于什么都没做。 我遇到很多做副业的小白,开始信誓旦旦的说这个也要学,那个也要学,这个项目不错,那个项目也不错。 但结果99%的人都做不起来,连一个项目都没有跑通。 贪得无厌&…

GIS在地质灾害危险性评估与灾后重建中的应用

地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质灾害在世界范围内频繁发生。我国除滑坡灾害外,还包括崩塌、泥石流、地面沉…

GSA、GSEA、ssGSEA、GSVA用到的统计学知识点

文章目录 概率密度函数(probability density function,PDF)分布函数(Cumulative Distribution Function,CDF)核密度估计(KDE)经验累计分布函数(Empirical Cumulative Dis…

深入理解Vue.js的模板语法和数据绑定

Vue.js背景介绍 Vue.js 是一款流行的前端 JavaScript 框架,由**尤雨溪(Evan You)**开发并于2014年首次发布。Vue.js 的设计目标是通过简单易用的语法和灵活的组件化架构,帮助开发者构建交互性强、响应速度快的现代Web应用程序。 …

source not found for数组a的引用Exception

identityHashCode(数组名) adressidentityHashCode(a)//将得到数组a的哈希值。在同一个数据类型下,同一对象的哈希值是一样的,同一哈希值对应同一对象。由于不同数据类型的变量哈希值生成算法不同,所以在数据类型不同的情况下&am…

关于esp8266的一些经验汇总,新手必看

说实话,esp8266的nodemcu 已经使用了2年多了,各种问题遇到过,就尝试各种解决,而现在回头来看真的是稀里糊涂的在用,当然这个问题也同样涉及到esp32. 因为最近打算自己打一块esp8266的板,之前打的比较多的是…

Redis冲冲冲——Redis分布式锁如何实现

目录 引出Redis分布式锁如何实现Redis入门1.Redis是什么?2.Redis里面存Java对象 Redis进阶1.雪崩/ 击穿 / 穿透2.Redis高可用-主从哨兵3.持久化RDB和AOF4.Redis未授权访问漏洞5.Redis里面安装BloomFilte Redis的应用1.验证码2.Redis高并发抢购3.缓存预热用户注册验证…

从根到叶:深入理解二叉搜索树

我们的心永远向前憧憬 尽管活在阴沉的现在 一切都是暂时的,转瞬即逝, 而那逝去的将变为可爱 &#x1f31d;(俄) 普希金 <假如生活欺骗了你> 1.二叉搜索树的概念 概念:搜索树&#xff08;Search Tree&#xff09;是一种有序的数据结构&#xff0c;用于存储和组…

github操作记录(踩坑)

github是程序员绕不开的东西。 网站打不开&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 明明账号密码都对却登录失败&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 重置密码失败&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 TortoiseGit如…

模型压缩-剪枝算法概述

文章目录 1. 前言1.1 模型剪枝定义2 深度神经网络的稀疏性2.1,权重稀疏2.2 激活稀疏2.3 梯度稀疏2.4,小结3. 结构化稀疏3.1,结构化稀疏分类3.1.1 Channel/Filter 剪枝3.1.2 阶段级别剪枝3.2 结构化稀疏与非结构化稀疏比较参考资料参考自:

Facebook商城号为什么被封?防封养号技巧

由于Facebook商城的高利润空间&#xff0c;越来越多的跨境电商商家注意到它的存在。Facebook作为全球最大、用户量最大的社媒平台&#xff0c;同时也孕育了一个巨大的商业生态&#xff0c;包括广告投放、商城交易等。依托背后的大流量&#xff0c;Facebook商城起号较快&#xf…

优思学院|拉丁方实验设计是什么?

今天&#xff0c;我要给大家带来一个六西格玛实验设计的小窍门——拉丁方设计。这是一种巧妙的方式&#xff0c;帮助我们探索不同因素&#xff08;输入&#xff09;对结果&#xff08;输出&#xff09;的影响&#xff0c;同时巧妙地处理那些我们不想要的“噪音因素”。 想象一…

Linux 常用命令汇总(三):查看文件 内容处理

一、查看文件及内容处理命令 1.1 cat 1.1.1 介绍 cat 是 Linux 和其他 Unix-like 系统中一个非常基础且常用的命令&#xff0c;用于显示、合并或复制文本文件的内容 1.1.2 使用方法 cat [选项] [文件...] 1.1.3 参数详解 [选项]&#xff1a;控制 cat 命令的行为。[文件.…