【扩散模型从原理到实战】Chapter1 扩散模型简介


扩散模型(Diffusion Model):基于扩散思想的深度学习生成模型
生成模型举例
VAE(Variational Auto-Encoder,变分自编码器)
GAN(Generative Adversarial Net,生成对抗网络)
学习内容
扩散模型的原理:扩散模型是如何“扩散”
扩散模型的发展:扩散模型在图像生成方面的技术迭代与生态发展历程
扩散模型的应用:扩散模型除了图像生成领域之外的其他应用

1.1 扩散模型的原理

扩散模型主要包括前向扩散和反向扩散两个过程

生成模型

目标
根据给定的样本,即训练数据生成新样本
基本思想
假设给定的训练数据 X X X服从某种真实分布 p ( x ) p(x) p(x),生成模型则估计训练数据的真实分布,假设为 q ( x ) q(x) q(x),再通过最大似然思想,在使得给定训练数据是采样自 q ( x ) q(x) q(x)的概率尽可能大的过程中,对估计分布 q ( x ) q(x) q(x)进行优化
总结来说,生成模型就是在对训练数据的分布进行建模

扩散过程

初始的简单分布通过扩散过程来建模一个复杂的分布

一滴墨水在水中扩散的过程
在扩散开始之前,这滴墨水会在水中的某个地方形成一个大的斑点,即墨水分子的初始状态,其分布是很复杂的,建模是很困难的
随着扩散过程的进行,这滴墨水随着时间的推移逐步扩散到水中,墨水分子的概率分布将变得更加简单和均匀,即容易建模
于是,我们思考将这个扩散过程反过来,先对扩散完成时的墨水分子的概率分布进行建模,然后通过一个反向扩散过程,得到墨水分子的初始概率分布

公认最早的扩散模型DDPM(Denoising Diffusion Probabilistic Model)
为了方便建模,扩散模型仍需做出很多假设
DDPM做出的假设:

  1. 假设扩散过程是马尔可夫过程(即每一个时间步状态的概率分布仅由上一个时间步状态的概率分布加上当前时间步的高斯噪声得到)
  2. 扩散过程的逆过程是高斯分布等

DDPM的扩散过程

分为前向过程和反向过程两个部分
image.png

前向过程

给数据添加噪声的过程,即上图中从右到左的过程
前向加噪过程被分为离散的多个时间步T,在每一个时间步t,给上一个时间步t−1的数据 x t − 1 x_{t−1} xt1添加高斯噪声,从而生成带有噪声(简称“带噪”)的数据 x t x_t xt,同时数据 x t x_t xt也会被送入下一个时间步t+1以继续添加噪声
关于噪声的选取
噪声的方差是由一个位于区间(0,1)的固定值βt确定的
噪声的均值则由固定值βt和当前时刻“带噪”的数据分布确定
根据马尔可夫链的性质,训练数据经过这T个时间步的迭代、加噪过程后,将服从纯随机噪声分布
公式表达
从时间步t−1到时间步t的单步扩散加噪过程
image.png
最终的噪声分布
image.png

反向过程

“去噪”的过程,即从随机噪声中迭代恢复出清晰数据的过程
根据DDPM的假设,待去噪数据为采样自高斯噪声 x t ∼ N ( 0 , I ) x_t\sim N(0,I) xtN(0,I)的一个随机噪声
去噪目标为原始数据 x 0 x_0 x0
去噪实现需要有一个每一步的图像分布状态转移的马尔可夫链,即我们需要的扩散模型
数学表达式
从时间步t到时间步t−1的单步反向“去噪”过程
image.png
均值表达式
image.png
方差表达式
image.png

优化目标

噪声残差,即要求后向过程中预测的噪声分布与前向过程中施加的噪声分布之间的“距离”最小,则能达到后向去噪过程得到的 x 0 ′ x_0' x0与前向加噪的原始数据 x 0 x_0 x0最接近
用VAE类比
扩散模型可视为一个包含T个隐变量的模型,即更深层次的VAE
VAE的损失函数可以使用变分推断来得到变分下界(variational lower bound)
数学表达式
image.png
分析可知,使用的是MSE损失函数

1.2 扩散模型的发展

与2D图像生成相关的扩散模型的发展历程
发展历程:
image.png

开始扩散:DDPM

于2020年提出的DDPM模型(Denoising Diffusion Probabilistic Models)首次将“去噪”扩散概率模型应用到图像生成任务中,做出的贡献包括:扩散过程定义、噪声分布假设、马尔可夫链计算、随机微分方程求解和损失函数表征等

加速生成:采样器

早期的扩散模型由于采样器所控制的图像生成阶段需要迭代多次,生成速度非常慢
当时亟待解决的问题是如何在保证生成质量的前提下加快采样
重要突破
论文“Score-Based Generative Modeling through Stochastic Differential Equations”证明了DDPM的采样过程是更普遍的随机微分方程,这为加速采样提供了一个重要的解决思路——更离散化地求解该随机微分方程,即可缩短采样所需步骤
加速的采样器举例
Euler、SDE、DPM-Solver++和Karras等
举个例子
image.png

刷新记录:基于CLIP的多模态图像生成

由于早期的扩散模型在所生成图像的质量和稳定性上并不如经典的生成模型GAN,扩散模型并没有被广泛应用到图像生成领域
重要突破
OpenAI在论文“Diffusion Models Beat GANs on Image Synthesis”中介绍了在扩散过程中使用显式分类器进行引导的方法,这使得扩散模型在图像生成领域打败了GAN

引爆网络:基于CLIP的多模态图像生成

CLIP介绍
连接文本和图像的模型,将同一语义的文字和图片转换到同一个隐空间中
将CLIP技术和扩散模型结合,引起了基于文字引导的文字生成图像扩散模型的快速发展
文生图模型举例
OpenAI的GLIDE、DALL-E、DALL-E 2
Google的Imagen以及开源的Stable Diffusion

再次“出圈”:大模型的“再学习”方法——DreamBooth、LoRA和ControlNet

“再学习”方法的原因
现在的图像生成扩散模型都是大规模的、预训练的,类比微调之于大模型,在使用扩散模型的图像生成领域有了多种“再学习”方法
常见“再学习”方法
针对不同的任务,有这样三种再学习方法——DreamBooth、LoRA和ControlNet
DreamBooth方法
实现使用现有模型再学习到指定主体图像的功能,即在训练过程中将指定主体图像与特定的文本标识绑定
举个例子
image.png
在这个例子中,训练过程中将“小狗”与输入图像进行绑定,从而通过文字提示生成此特定小狗在不同场景下的图像
LoRA方法
实现使用现有模型再学习到自己指定数据集风格或人物的功能,并且还能够将其融入现有的图像生成中
如Facechain模型中通过提供人物数据集并选择不同的风格数据集,使用LoRA方法得到人物写真图像
Hugging Face提供了训练LoRA的UI界面
ControlNet方法
再学习到更多模态的信息,并利用分割图、边缘图等功能更精细地控制图像的生成

开启AI作画时代:众多商业公司提出成熟的图像生成解决方案

图像生成解决方案举例
Midjourney的Discord频道主页:输入提示语来生成图像、跟全世界的用户一起分享和探讨图像生成的细节
Stability AI的图像生成工具箱DreamStudio:使用提示语来编辑图像、将其SDK嵌入自己的应用或者作为Photoshop插件使用
Photoshop:基于扩散模型的图像编辑工具库Adobe Firefly
百度公司:文心一格AI创作平台
阿里巴巴达摩院:通义文生图大模型
退格网络:Tiamat图像生成工具
北京毛线球科技有限公司:6pen Art图像生成APP,将图像生成带到手机端

1.3 扩散模型的应用

扩散模型最常见、最成熟的应用就是完成图像生成任务
但扩散模型在其他领域仍有极大的应用前景,这是不容忽视的
包括但不限于以下领域的应用
image.png

计算机视觉

计算机视觉包括2D视觉和3D视觉两个方面,这里专注于扩散模型在2D图像领域的应用

图像分割与目标检测
Meta AI的SegDiff分割扩散模型可以生成分割Mask图
image.png
检测扩散模型DiffusionDet可以端到端地从随机矩形框逐步生成检测框
image.png
存在的问题:生成速度慢,难以应用于一些需要实时检测的场景

图像超分辨率

图像超分辨率是一项能够将低分辨率图像重建为高分辨率图像,同时保证图像布局连贯的技术

CDM(Cascaded Diffusion Model,级联扩散模型)通过采用串联多个扩散模型的方式,分级式地逐步放大分辨率,实现了图像超分辨率(论文"Cascaded Diffusion Models for High Fidelity Image Generation")
image.png
图像修复、翻译和编辑

图像修复、图像翻译和图像编辑是对图像的部分或全部区域执行的操作,包括缺失部分修补、风格迁移、内容替换等

Palette:一个集成了图像修复、图像翻译和图像编辑等功能的扩散模型,它可以在一个模型中完成不同的图像级任务(论文"Palette: Image-to-Imge Diffusion Models. ")

时序数据预测

时序数据预测旨在根据历史观测数据预测未来可能出现的数据,如空气温度预测、股票价格预测、销售与产能预测等。时序数据可以视为生成任务,因而扩散模型可以发挥作用

TimeGrad:首个在多元概率时序数据预测任务中加入扩散思想的自回归模型。为了将扩散过程添加到历史数据中,TimeGrad首先使用RNN(Recurrent Neural Network,循环神经网络)处理历史数据并保存到隐空间中,然后对历史数据添加噪声以实现扩散过程,由此处理数千维度的多元数据并完成预测任务(论文"Autoregressive Denoising Diffusion Models for Multivariate Probabilistic Time Series Forcasting.")
image.png

自然语言

扩散模型用于语言类的生成任务:将自然语言类的句子分词转换为词向量后使用扩散模型学习自然语言的语句生成,进而完成nlp中更复杂的任务

Diffusion-LM是首个将扩散模型应用到自然语言领域的扩散语言模型,解决了将连续的扩散过程应用到离散的非连续化文本的问题,从而实现语言类的高细粒度可控生成。

基于文本的多模态

多模态信息:多种数据类型的信息,包括文本、图像、音/视频、3D物体等。在LLM不断发展的今天,多模态的发展趋势为基于文本和其他模态的交互,如文本生成图像、文本生成视频、文本生成3D等

文本生成图像
文生图是扩散模型最最流行、最成熟的应用
input为文本提示,output为对应图片
模型举例:DALLE-2、Imagen以及完全开源的Stable Diffusion等

文本生成视频
将输入的文本提示语转换为相应的视频流,其难点在于视频的前后帧需要保持极佳的连贯性
模型举例:Meta AI的Make-A-Video以及能够精细控制视频生成的ControlNet Video等
image.png
文本生成3D
将输入的文本转换为相应的3D物体,其不同在于3D物体有多种表征方式,如点云、网格、NeRF等
模型举例:
DiffRF从文本生成3D辐射场
3DFuse基于二维图像生成对应的3D点云
应用前景:室内设计、游戏建模、元宇宙数字人等
image.png

AI基础科学

AI for Science
SMCDiff创建了一种扩散模型,根据给定的模体结构生成多样化的支架蛋白质(论文"Diffusion Probabilistic Modeling of Prote in Backbones in 3D for the Motif-Scaffolding Problem.“)
image.png
CDVAE提出了一种扩散晶体变分自编码器模型,生成和优化具有固定周期性原子结构的材料(论文"Crystal Diffusion Variational Autoencoder for Periodic Material Generation.”)
image.png

参考资料

  1. 《扩撒模型从原理到实战》
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无人驾驶车辆模型预测控制(MPC)是一种通过对未来状态进行预测,从而优化控制动作的方法。而该方法核心公式也被称为“魔术公式”。在该公式中,首先使用了一个被称为状态估计器的模型将当前车辆状态估计出来,并将其作为初始状态输入到MPC控制器中。 接下来,MPC控制器使用当前状态和预测状态来计算出一系列控制输入,以使车辆实现期望的性能,如稳定性、准确性和舒适性。其中,预测状态可以通过历史测量数据以及基于车辆模型的预测方法来计算。同时,MPC还可以将各个状态变量之间的约束考虑在内,保证控制输入不会超出预定的限制范围。 具体而言,在“魔术公式”中,$x$表示状态向量,$u$表示控制向量,$f$表示车辆模型的状态方程,$h$表示性能指标函数,$N$表示预测时间步数,$Q$和$R$分别表示状态和控制输入的加权矩阵,则MPC控制器的优化问题可以表示为以下公式: $\min\limits_{u(0:N-1)} J(x,u)=\sum\limits_{k=0}^{N-1}h(x(k),u(k))+h_f(x(N))+\frac{1}{2}\sum\limits_{k=0}^{N-1}\begin{bmatrix} x(k)-x_{ref} \\ u(k)-u_{ref} \end{bmatrix}^T \begin{bmatrix} Q & 0 \\ 0 & R \end{bmatrix} \begin{bmatrix} x(k)-x_{ref} \\ u(k)-u_{ref} \end{bmatrix}$ $\text{subject to }\begin{cases}x(k+1)=f(x(k),u(k)),\ k=0,...,N-1\\x(0)=\hat{x}\\u_{min}\leq u(k)\leq u_{max},\ k=0,...,N-1\\x_{min}\leq x(k)\leq x_{max},\ k=1,...,N\end{cases}$ 其中,$h(x(k),u(k))$表示在第$k$个时间步上性能指标函数的值,$h_f(x(N))$表示在最后一个时间步上性能指标函数的值,$\hat{x}$表示当前的状态估计值,$x_{ref}$和$u_{ref}$分别表示参考状态和控制输入,$u_{min}$和$u_{max}$表示控制输入的最小和最大值,$x_{min}$和$x_{max}$表示状态变量的最小和最大值。最终,通过求解上述优化问题,即可得到最佳的控制输入,以驱动无人驾驶车辆实现期望的性能要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值