学习笔记(二)----diffusion model

代码:GitHub - CompVis/stable-diffusion: A latent text-to-image diffusion model

论文:[1505.04597] U-Net: Convolutional Networks for Biomedical Image Segmentation (arxiv.org)

一、什么是Diffusion Model(扩散模型)

(本文介绍的diffusion Model 是论文:Denoising Diffusion Probabilistic Models(DDPM)去噪扩散概率模型,DDPM是2020年提出,是AIGC主流生成模型)

我们可以看到最近很火的text-to-image,通过给定文本描述生成图片,当前最先进的两个text-to-image是OpenAI的DALL E2和Google的Imagen,他们都是基于扩散模型来完成的。

Diffusion Model也是生成模型的一种,因此在讲扩散模型之前,我们来简单回顾一下生成模型的发展:(图片来自:什么是扩散模型? |Lil'Log的 (lilianweng.github.io)

其他生成模型再次不展开讲述,扩散模型不同于以上生成模型,扩散模型的原理类似通过学习给图片去噪的过程,因此生成的图片比其他生成模型情绪度高。

扩散模型定义了一个马尔可夫扩散链,通过一步一步进行加噪声破坏数据(得到训练样本)和一步一步学习反转去噪声过程,训练过后扩散模型能够将随机采样的噪声进行去噪生成图片。具体来说,扩散模型由前向过程和反向过程这两部分组成(前向过程即向图片一步一步加噪声的过程又称为扩散过程;反向过程即为去噪产生清晰的图像)

补充:马尔科夫链:当前T时刻的状态,只由上一时刻T-1状态决定,与过去其他时刻无关。(马尔可夫链的核心概念是状态转移概率,它描述了系统从当前状态转移到另一个状态的概率。对于一个马尔可夫链,我们可以构建一个状态转移矩阵,其中的元素表示从一个状态转移到另一个状态的概率。)

二、前向过程

目的:获得训练样本(加完噪声后的图+噪声)

前向过程会逐步向图像中添加高斯噪声,直到最后得到一张纯噪声图像,此过程是为了构建训练样本。(训练资料是加完噪声后的图和噪声这一对,同时要记录是哪一step,因为不同step加的噪声都是不同的,噪声会越来越大,也就是说在反向去噪声时,噪声越去越小)

在前向过程中,来自训练集的图像x0 会被添加T次噪声,使得xT为符合标准正态分布,

由 xT−1 到 xT 可以表示为:\epsilon表示噪声,\alpha表示超参数。

具体公式推导过程可见:【深度学习模型】扩散模型(Diffusion Model)基本原理及代码讲解-CSDN博客

三、反向过程

目的:去噪生成图片

前向是加噪声\epsilon\epsilon,而反向就是预测每step的\epsilon将xT变成x0的过程。

在正向过程中,我们人为设置了T步加噪声过程。而在反向过程中,我们希望能够倒过来取消每一步加噪声操作,让一幅纯噪声图像变回数据集里的图像。这样,利用这个去噪声过程,我们就可以把任意一个从标准正态分布里采样出来的噪声图像变成一幅和训练数据长得差不多的图像,从而起到图像生成的目的。反向过程公式表示如下:\epsilon _{\Theta }用于估计真实噪声

四、训练

训练的网络就是来预测噪声,所以损失函数如下:

网络的训练流程为:

  1. 我们接受一个随机的样本

  2. 我们随机从 1 到 T 采样一个 t;

  3. 我们从高斯分布采样一些噪声并且施加在输入上;

  4. 网络从被影响过后的噪声图片学习其被施加了的噪声。流程图见如下:注意输入NN模型除了图像样本还有一个时间向量,类似于Transformer的positional embedding,为了让网络知道当前处理的是一系列去噪过程中的哪一个step,我们需要将步数 t 也编码并传入网络之中。DDPM采用正弦位置编码(Sinusoidal Positional Embeddings)。因为每一步要预测的噪声大小不一样

参考:【深度学习模型】扩散模型(Diffusion Model)基本原理及代码讲解-CSDN博客AIGC爆火的背后——扩散模型DDPM浅析 - 知乎 (zhihu.com)由浅入深了解Diffusion Model - 知乎 (zhihu.com)Diffusion Model 详解:直观理解、数学原理、PyTorch 实现 - 知乎 (zhihu.com)由浅入深剖析Diffusion Model:从直观理解到数学原理 - 知乎 (zhihu.com)【生成式AI】Diffusion Model 原理剖析 (2/4)_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值