生成式AI扩散模型-Diffusion Model【李宏毅2023】概念讲解、原理剖析笔记

news2024/9/20 9:23:29

目录

一、Diffusion的基本概念和运作方法

1.Diffusion Model是如何运作的?

2.Denoise模块内部正在做的事情

如何训练Noise predictor?

1)Forward Process (Diffusion Process)

2)noise predictor

3.Text-to-Image

4.两个Algorithm

二、Diffusion Framework

1.Framework

①Text Encoder:将文字输入encoder为向量

FID:Frechet Inception Distance ↓

CLIP:Contrastive Language-Image Pre-Training

②Generation Model:输入一个噪声,得到图片的压缩版本

③Decoder:压缩的版本还原为原来的图片

Small pic

Auto-Encoder

2. Stable Diffusion

3.DALL-E series

4.Imagen (Google)

三、Diffusion Model数学原理剖析(1)

 Algorithm1 Training

Algorithm2 Sampling

四、Diffusion Model数学原理剖析(2)

1.影像生成模型本质上的共同目标

2.Maximum Likelihood Estimation


视频链接:【生成式AI】Diffusion Model 概念讲解 (2/2)_哔哩哔哩_bilibili

原视频:【生成式AI】Diffusion Model 原理剖析 (1/4) (optional) (youtube.com)

课件链接:ML 2023 Spring (ntu.edu.tw)

一、Diffusion的基本概念和运作方法

1.Diffusion Model是如何运作的?

Denoise Model 是同一个Model,但是由于每次输入的噪声严重程度不同,因此除了输入图片外,还引入一个数字,用来表示当前输入图片噪声的严重程度,比如 ”1“ 代表Denoise步骤快结束了

2.Denoise模块内部正在做的事情

为什么不直接生成一个带噪音的猫?因为 noise predictor 的输出分布是简单的,而直接生成各种图片的分布是复杂的,所以 noise predictor 更容易训练,也就是说生成一张图片的噪音相对来说更容易

如何训练Noise predictor?

我们需要一个ground truth 来生成noise:

1)Forward Process (Diffusion Process)

通过一步步的加噪声,得到最终的噪音图,而每一步的step x 就代表在训练过程的第二个输入,每一步得到的加了噪音的图,就是训练过程的第一个输入(相当于反向过来看)

2)noise predictor

根据输入的step x和输入的噪音图,得到该张图片的噪声预测,减掉噪声得到最终results

3.Text-to-Image

文字输入作为noise predictor的额外的输入,描述当前图片

4.两个Algorithm

 


二、Diffusion Framework

1.Framework

:三个Model分开训练,然后再组合起来,且市面上大多数diffusion都是采用的这三个Model

①Text Encoder:将文字输入encoder为向量

图(a)表示测试不同Encoder对于实验结果的影响,FID越小越好,CLIP Score越大越好,即越往右下角越好,随着T5的size逐渐增大,实验结果越来越好

图(b)表示测试不同Diffusion Model对于实验结果的影响,可以看到增大Diffusion Model对于实验结果的帮助是有限的

FID和CLIP为衡量模型生成图片质量的指标,上述结论得出Encoder的重要性

FID:Frechet Inception Distance ↓

FID 是生成图像和真实图像在特征空间中的分布距离,FID 假设生成图像和真实图像在特征空间的分布都是高斯分布,然后计算这两个高斯分布的距离

首先有一个预训练好的CNN Model 影像分类模型,然后把所有图片(无论是真实还是生成数据)全部丢到CNN Model里面,然后得到真实影像和生成影像产生的representation,两组representation越接近就说明生成的数据越接近真实数据,反之亦然。

那么如何计算距离呢?: 直接计算Gaussians之间的idstance

CLIP:Contrastive Language-Image Pre-Training

可以用来测试输入的图片和文字的对应关系是否紧密

如果text 和 image 是成对的,那么他们encoder出来的向量 要越近越好;否则就要越远越好

②Generation Model:输入一个噪声,得到图片的压缩版本

Noise要加在中间产物或者latent representation上,而不是直接加在图片上

训练Decoder的时候不需要 图片和文字对应的训练数据,而训练Difussion Model的时候是需要的

③Decoder:压缩的版本还原为原来的图片

Small pic
  • Decoder的输入是小图,输出是原始图片
  • 所以我们可以对原始图片进行下采样,变成小图,然后小图和原始图片组成成对的数据集去训练Decoder即可。
  • Imagen采用的Decoder就是小图还原为大图,做一个downsampling

Auto-Encoder

Diffusion和DALL采用的Decoder是Latent Representation,之前在讲Diffussion Model的时候,nosie是加到图片上面的,而现在我们的Framework里面扩散模型产生的是中间产物,他可能不是图片了,所以我们在diffusion process这一部分,把nosie加到中间产物(eg.latent representation)上面.

  • 如果中间产物不是小图,而是Latent Reoresentation,那就要训练一个Auto-encoder
  • 这个Auto-encoder要做的事情,就是将图片输入到encoder中,得到图片的潜在表示,然后将潜在表示输入到Decoder中,得到图片,让得到的图片与输入的图片越相近越好。
  • 训练完,把这个Auto-encoder 中的Decoder拿出来用就好了

也可以通过downsampling进行小图+latent representation的训练

2. Stable Diffusion

3.DALL-E series

4.Imagen (Google)


三、Diffusion Model数学原理剖析(1)

 Algorithm1 Training

如果T越大  则α_T 就越小,对应着原始图片占的比例越小,噪声占的比例越大

想象中,nosie 是一点一点加进去的
然后denoise 的时候也是一点一点去掉的
但是实际上,noise是一次直接加进去,denoise也是一次出去

Algorithm2 Sampling

一开始先sample 一个全都是noise的图片

步骤2 那里就是在跑 resverse process 

本来以为得到了去除noise的结果就是最终结果,但实际操作过程中还要再加一张noise?


四、Diffusion Model数学原理剖析(2)

1.影像生成模型本质上的共同目标

加上文字的Condition并没有造成太大的差别,对算法影响不会太多

2.Maximum Likelihood Estimation

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

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

相关文章

MySQL必会知识精华3(使用MySQL)

我们的目标是:按照这一套资料学习下来,大家可以完成数据库增删改查的实际操作。轻松应对面试或者笔试题中MySQL相关题目 上篇文章我们先做一下数据库的基础知识以及MySQL的简单介绍。本篇文章主要连接使用MySQL的相关知识。相对简单,争取做到…

Datawhle X 李宏毅苹果书AI夏令营深度学习笔记之——局部最小值与鞍点

深度学习中优化神经网络是一个重要的问题,我们经常沮丧地发现到了一个节点,不管参数怎么更新,训练的损失都不会下降,神经网络似乎训练不起来了。这可能和损失函数收敛在局部最小值与鞍点有关。 一、 局部最小值(local…

‌蜘蛛的工作原理及蜘蛛池的搭建与优化

蜘蛛的工作原理主要包括跟踪网页链接、‌采用一定的爬行策略遍历互联网,‌以及将新内容添加到引擎的索引中。‌具体来说:‌ 跟踪网页链接‌:‌蜘蛛会从一个或多个初始URL开始,‌通过这些URL发现新的链接,‌并将这些链接…

数据的基本类型

数据的基本类型 字符串 切片 切片语法: strs "hello" strs[0:]整数型 浮点型 布尔类型

vscode c++和cuda开发环境配置

文章目录 1. vscode 插件安装2. 开发环境配置2.1 bear 安装2.2 代码的编译2.2.1 编写Makefile文件2.2.2 bear make和make命令2.3 debug环境配置2.1 函数跳转设置2.1.1 ` c_cpp_properties.json` 设置2.1.2 settings.json设置2.2 调试环境配置2.2.1 tasks.json2.2.2 launch.json…

【C语言进阶】C语言指针进阶实战:优化与难题解析

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言指针进阶 (上) 🌹🌹期待您的关注 🌹🌹 ❀C语言指针进阶 &#x…

Java常用API(BigInteger)

在Java中,整数有四种类型:byte,short,int,long 在底层占用字节个数:byte 1个字节,short2个字节,int 4个字节,long 8个字节 对象一旦创建,里面的值是不能改变…

Go wv(WebView2) GUI框架介绍和使用

说明 wv(webview2) 是Go语言基于LCL和WebView2基础上封装的框架,用于开发Windows GUI软件。 介绍 LCL(Lazarus Component Library) :跨平台原生UI组件库. wv(WebView2): Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 …

俄罗斯应用本地化中需要考虑的不同格式的特点

在为俄罗斯市场本地化应用程序时,调整各种格式以符合当地惯例至关重要。这些格式,包括日期和时间、数字、货币、地址等,在确保应用程序对俄罗斯用户来说自然和用户友好方面发挥着重要作用。以下是本地化过程中应考虑的一些关键格式特征。 日…

算法之二分查找法

用二分查找法刷leetcode算法题目的时候&#xff0c;经常遇到视频看着理解很透彻&#xff0c;当上手写时一看就会&#xff0c;一写就废。二分查找法涉及边界条件很多&#xff0c;逻辑很简单&#xff0c;就是写不好。何时写 while(left<right)&#xff0c;while(left<right…

【大模型】llama系列模型基础

前言&#xff1a;llama基于transformer架构&#xff0c;与GPT相似&#xff0c;只用了transformer的解码器部分。本文主要是关于llama&#xff0c;llama2和llama3的结构解读。 目录 1. llama1.1 整体结构1.2 RoPE1.3 SwiGLU 激活函数 2. llama22.2 GQA架构2.3 RLHF3. llama3 参考…

【数据结构入门】排序算法之插入排序与选择排序

目录 前言 一、排序的概念及运用 1.排序的概念 2.排序的运用 3.常见排序算法 二、插入排序与选择排序 2.1插入排序 2.1.1直接插入排序 1&#xff09;基本思想 2&#xff09;具体步骤 3&#xff09;算法特性 4&#xff09;算法实现 2.1.2希尔排序 1) 基本思想 2&…

从苹果智能看端上大模型应用

将生成式人工智能集成到边缘设备本身就是一个重大挑战&#xff0c;我们需要在智能手机和计算机有限的计算能力和内存范围内高效地运行高级模型。确保这些模型运行迅速&#xff0c;而不会耗尽电池寿命或使设备过热&#xff0c;端上的局限增加了大模型应用的复杂性。此外&#xf…

LeetCode 算法:杨辉三角 c++

原题链接&#x1f517;&#xff1a;杨辉三角难度&#xff1a;简单⭐️ 题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1]…

关于异常断电后jmeter的jmx文件异常变成二进制文件并成功恢复的心酸历程

今日下午正在编写jmeter接口&#xff0c;正在调试中&#xff0c;突然断电&#xff08;由于四川高温&#xff0c;导致电力紧缺的很&#xff09;&#xff0c;来电了后我正常启动电脑&#xff0c;打开后&#xff0c;赶紧打开jmeter&#xff0c;并打开最近打开的文件&#xff0c;我…

『功能项目』怪物受击的动画事件【10】

我们打开上一篇09着色器光透魔法球的项目&#xff0c; 本章要做的事情是在场景中创建一个怪物对象&#xff0c;当怪物被主角的魔法球击中后播放受击动画效果&#xff0c;此类技术用到动画事件帧&#xff0c;在动画上创建脚本。 首先打开资源商店选择一个免费资源的怪物模型加载…

静态ISP代理IP适合什么应用场景?

随着互联网的普及和发展&#xff0c;越来越多的设备和应用需要接入网络。在这些情况下&#xff0c;动态主机配置协议 (DHCP) 成为一种常见的选择&#xff0c;因为它会自动为客户端分配 IP 地址。然而&#xff0c;在某些特定场景下&#xff0c;静态 IP 地址 (ISP) 可能是更好的选…

哈夫曼树例题

从这道题可以看出需要构建哈夫曼树 构造哈夫曼树如下 9和5最小&#xff0c;构成左右树&#xff0c;二者之和是14&#xff0c;放入数组&#xff0c;5和9从数组去掉 14和16最小&#xff0c;构成左右树&#xff0c;二者之和是30&#xff0c;放入数组&#xff0c;14和16从数组去…

基于yolov8的玻璃瓶塑料瓶检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的玻璃瓶塑料瓶检测系统是一个利用深度学习技术的先进解决方案&#xff0c;专注于对图像、视频或实时摄像头流中的玻璃瓶和塑料瓶进行快速准确的检测与定位。该系统通过YOLOv8这一高效的目标检测算法&#xff0c;能够在多种应用场景下展现卓越的性能。…

Java面试题·解释题

系列文章目录 总章 Java解释题 文章目录 系列文章目录前言面向对象编程是什么&#xff1f;Java的跨平台原理Java的安全性Java的三大版本Java开发运行过程什么是JVM&#xff1f;什么是JDK&#xff1f;什么是JRE&#xff1f;JDK,JRE,JVM三者关系概括Java的数据类型&#xff1f;J…