深度学习(7)---Diffusion Model概念讲解

文章目录

  • 一、基本概括
    • 1.1 概念讲解
    • 1.2 Denoise模块
  • 二、Stable Diffusion
    • 2.1 概念讲解
    • 2.2 FID
    • 2.3 CLIP


一、基本概括

1.1 概念讲解

 1. Diffusion Model是一种生成模型,通过连续添加高斯噪声来破坏训练数据,然后学习反转的去噪过程来恢复数据。它分为正向的扩散过程和反向的逆扩散过程。正向扩散过程是往图片上加噪声的过程,即从无到有地添加噪声,直到得到纯噪声图片。反向扩散过程则是通过学习如何从噪声图片恢复到原始图片。

 2. 正向过程:首先,对于一张原始图片 X 0 X_0 X0,我们给 X 0 X_0 X0 图片添加高斯噪声,图片由 X 0 X_0 X0 变为 X 1 X_1 X1。接着我们会在 X 1 X_1 X1 的基础上再添加高斯噪声得到 X 2 X_2 X2。重复上述添加高斯噪声步骤,直到图片变成 X n X_n Xn。由于添加了足够多的高斯噪声,现在的 X n X_n Xn 近似服从高斯分布(又称正态分布)。
注意:(1) 这里必须要加高斯噪声,因为高斯噪声服从高斯分布,后面的一些运算需要用到高斯分布的一些特性。(2) 每步添加高斯噪声的量是变化的,且后一步比前一步添加的高斯噪声更多。

在这里插入图片描述

 3. 逆向过程:首先,我们会随机生成一个服从高斯分布的噪声图片,然后一步一步的减少噪声直到生成预期图片。

在这里插入图片描述

1.2 Denoise模块

 去噪过程不是说由一张图片生成另一张图片,而是在一张高噪声图片的基础上,减掉一个噪声图片从而得到另一张低噪声图片。

在这里插入图片描述

在这里插入图片描述

二、Stable Diffusion

2.1 概念讲解

 1. 通过上面所述我们可得:当扩散步数和图像很大时,这种纯扩散模型会非常慢。为了解决这个问题,Stable Diffusion 应运而生。Stable Diffusion是一个文本到图像的潜在扩散模型。顾名思义,Stable Diffusion 发生在潜在空间中,这就是它比纯扩散模型更快的原因。

 2. Stable Diffusion第一步会将文本转换成向量;第二步会产生一个随机潜在噪声作为输入和文本转换后的向量产生一个 “中间产物”;第三步通过 “中间产物” 还原成原始图片。通常三个模块分开训练,最后组合在一起。

在这里插入图片描述

 论文中的Stable Diffusion结构图如下图所示:

在这里插入图片描述

 3. 如下图谷歌的由文本生成图片的模型也是大同小异。

在这里插入图片描述

 4. 第三步处理的 “中间产物” 可以是小图,也可以是图像潜在表示。

在这里插入图片描述

在这里插入图片描述

 5. Stable Diffusion第二步生成 “中间产物” 过程类似于Diffusion Model中Noise Predicter产生 “中间产物” 的过程。

在这里插入图片描述

在这里插入图片描述

2.2 FID

 在扩散模型中,FID(Frechet Inception Distance)是一种用于评估生成图像质量的度量标准。它衡量的是生成图像与真实图像之间的距离,其值越小代表生成的图像质量越高。FID的计算方法包括提取真实图像和生成图像的特征向量,并计算二者的Frechet距离。

在这里插入图片描述

2.3 CLIP

 CLIP(Contrastive Language–Image Pre-training)是一种多模态学习框架,旨在将语言和图像信息结合起来进行预训练。CLIP通过对比图像和文本的embedding来衡量两者之间的相似性,从而实现了对图像和文本的匹配。在扩散模型中,CLIP可以作为打通文本和图像的桥梁的核心模块,用于控制图像生成的过程。

在这里插入图片描述

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

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

相关文章

Spark 依赖包加载方式

1 Spark 依赖包来源 我们知道Spark application运行加载依赖有三个地方: systemClasspath:Spark安装时候提供的依赖包,${SPARK_HOME}/jars下的包。spark-submit --jars 提交的依赖包spark-submit --config "spark.{driver/executor}.e…

MAE实战:使用MAE提高主干网络的精度(一)

摘要 MAE已经出来有几年了,很多人还不知道怎么去使用,本文通过两个例子说明一下。分两部分,一部分介绍一个简单的例子,让大家了解MAE训练的流程。一部分是一个新的模型,让大家了解如何将自己的模型加入MAE。 论文标…

软考20-上午题-串及其模式匹配

串(字符串)是一种特殊的线性表,其数据元素为字符。如:"abc"。 一、串的定义 由字符构成的有限序列,是一种线性表。 串的比较:以字符的ASCII值作为依据。比较操作从两个字符串的第一个字符开始&a…

OpenResty 安装

安装OpenResty 1.安装 首先你的Linux虚拟机必须联网 1)安装开发库 首先要安装OpenResty的依赖开发库,执行命令: yum install -y pcre-devel openssl-devel gcc --skip-broken2)安装OpenResty仓库 你可以在你的 CentOS 系统中…

防火墙 firewalld 实操

3. 防火墙 firewalld 最近在学习部署一套linux 环境,分享其中一部分,后边会归结到专栏,欢迎大家订阅!!! 查看 firewalld 状态 service firewalld status上图表示启动中 查看开放端口 firewall-cmd --zonep…

Python算法100例-1.2 兔子产子

完整源代码项目地址,关注博主私信’源代码’后可获取 1.问题描述 有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为…

《Python 网络爬虫简易速速上手小册》第6章:Python 爬虫的优化策略(2024 最新版)

文章目录 6.1 提高爬虫的效率6.1.1 重点基础知识讲解6.1.2 重点案例:使用 asyncio 和 aiohttp 实现异步爬虫6.1.3 拓展案例 1:利用 Scrapy 的并发特性6.1.4 拓展案例 2:使用缓存来避免重复请求 6.2 处理大规模数据爬取6.2.1 重点基础知识讲解…

面试八股文(4)

文章目录 1.sleep和wait区别2.为什么调用start()方法会执行run()方法,为什么不能直接调用run()方法3.synchronized关键字4.并发编程的三个重要特性5.synchronized和volatile关键字区别6.ThreadLocal7.为什么要用线程池?8.实现Runnable接口和Callable接口…

vscode无法ssh远程连接到服务器:远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件

vscode无法ssh远程连接到服务器:远程主机可能不符合 glibc 和 libstdc VS Code 服务器的先决条件 今天vscode自动更新后无法连接到远程服务器了,提示"远程主机可能不符合 glibc 和 libstdc VS Code 服务器的先决条件" 并且命令窗口一直显示&qu…

【图论】基环树

基环树其实并不是树,是指有n个点n条边的图,我们知道n个点n-1条边的连通图是树,再加一条边就会形成一个环,所以基环树中一定有一个环,长下面这样: 由基环树可以引申出基环内向树和基环外向树 基环内向树如…

platfrom tree架构下实现3-Wire驱动(DS1302)

目录 概述 1 认识DS1302 1.1 DS1302 硬件电路 1.2 操作DS1302 1.3 注意要点 2 IO引脚位置 3 添加驱动节点 3.1 更新内核.dts 3.2 更新板卡.dtb 4 驱动程序实现 4.1 编写驱动程序 4.2 编写驱动程序的Makefile 4.3 安装驱动程序 5 验证驱动程序 5.1 编写测试程序…

AI-数学-高中-21-三角函数-cosx的图像与性质

原作者视频:三角函数】8cosx的图像与性质(易中档)_哔哩哔哩_bilibili cosx图像:就是sinx往左平移π/2的图像。 对称中心:找到一个点,翻转180度能跟自己重合。