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

本文主要是介绍生成式AI扩散模型-Diffusion Model【李宏毅2023】概念讲解、原理剖析笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、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

这篇关于生成式AI扩散模型-Diffusion Model【李宏毅2023】概念讲解、原理剖析笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116160

相关文章

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言