Diffusion Model算法
  • 导语
  • 1.为什么叫扩散算法
  • 2.Diffusion算法理论
  • 2.1 前向过程
  • 2.1.1 公式推导
  • 2.2 后向过程(去噪过程)
  • 2.2.1 公式推导
  • 3.算法流程

导语

最近AI绘画应用如火如荼,
有关算法的应用产品也很多,比如DALLE2

官网地址:​​https://openai.com/dall-e-2/​

DALLE2产品描述:DALL·E2是一个新的人工智能系统,可以根据自然语言的描述创建逼真的图像和艺术

其主要功能有:

  • DALLE 2可以从文本描述中创建原创、逼真的图像和艺术。它可以组合概念、属性和样式。
  • DALLE 2可以通过自然语言字幕对现有图像进行逼真的编辑。它可以添加和删除元素,同时考虑阴影、反射和纹理。
  • DALLE 2可以将图像扩展到原始画布之外,创造出更广阔的新构图
  • DALLE 2可以创建不同的灵感来源于原作。

1.为什么叫扩散算法

AI绘画架构,核心算法就是运用了Diffusion(扩散算法)

举个列子:之前三亚出现游客聚集性新冠,如果当时不选择集中隔离,而是允许游客自由进出,那原本集中在一起的游客病例的特征(也可以说是病例轨迹),因为扩散开来,回到各个城市,那不同的游客的病例特征(病例轨迹)也会因此多样化了。

回到图像中,游客的病例特征也就是对应到图像的特征上(最直接的特征就是图像直方图)

对比以前的GAN也是图像生成的算法
GAN缺点:

  • GAN训练两个网络,难度较大
  • 不容易收敛,而且多样性比较差,只关注能骗过判别器

GAN所能生成出的图像,其图像特征多样性较差,在训练中,只需要生成器生成的图像能满足当前的判别器,使判别器不能识别出假的即可了。

2.Diffusion算法理论

Diffusion算法可以根据结构,有二个方向分成是前向过程和反向过程

2.1 前向过程

核心:不断对输入的图像数据加入噪声,最后变成一个纯噪声的数据

已知最初的原始图像的数据,前向过程,就是需要求得每一个

Diffusion Model算法_计算机视觉

时刻的图像数据

也就是已知

Diffusion Model算法_算法_02

,求

Diffusion Model算法_人工智能_03

每一个时刻添加一个高斯噪声,


Diffusion Model算法_公式推导_04


Diffusion Model算法_算法_05


Diffusion Model算法_计算机视觉_06

时刻

Diffusion Model算法_算法_07


每个时刻

Diffusion Model算法_计算机视觉

,加入的噪声是不同的,并且加入噪声的数量,会随着时间,越来越多。

2.1.1 公式推导


Diffusion Model算法_计算机视觉

时刻噪声的值

Diffusion Model算法_公式推导_10

,是服从高斯分布的,所有噪声都是服从高斯分布的


Diffusion Model算法_计算机视觉

时刻噪声值的权重为

Diffusion Model算法_算法_12


Diffusion Model算法_人工智能_13

,通过

Diffusion Model算法_人工智能_14

来调节

Diffusion Model算法_算法_15

的值,

Diffusion Model算法_人工智能_14

是一个小于1的值,

Diffusion Model算法_人工智能_14

越来越大,

Diffusion Model算法_算法_15

越来越小。

通过

Diffusion Model算法_算法_15

来调节,每个时刻的噪声数量,随着时间,噪声越来越大。


Diffusion Model算法_计算机视觉

时刻的图像分布为

Diffusion Model算法_数据_21


Diffusion Model算法_公式推导_22

时刻的分布,是由

Diffusion Model算法_算法_23

时刻

Diffusion Model算法_计算机视觉_24

加入噪声得到的,于是得:

Diffusion Model算法_数据_25


其中

Diffusion Model算法_算法_26

如何得到

Diffusion Model算法_数据_21

,可以通过

Diffusion Model算法_数据_28

得到,

Diffusion Model算法_数据_28


Diffusion Model算法_公式推导_30

,依次递归到

Diffusion Model算法_算法_02

得到

Diffusion Model算法_算法_32

步骤1

首先将

Diffusion Model算法_数据_33

带入到

Diffusion Model算法_计算机视觉_34

中得

Diffusion Model算法_公式推导_35

步骤2:合并高斯分布

已知每次加入的噪声都服从高斯分布

Diffusion Model算法_公式推导_36


Diffusion Model算法_计算机视觉_37

这里有二个高斯分布

Diffusion Model算法_数据_38

,

Diffusion Model算法_数据_39

由数学公式可以推导若两个独立的高斯分布

Diffusion Model算法_公式推导_40

,

Diffusion Model算法_算法_41

,其合并后为

Diffusion Model算法_计算机视觉_42


其中

Diffusion Model算法_算法_43


Diffusion Model算法_人工智能_44

因此

Diffusion Model算法_数据_38

,

Diffusion Model算法_数据_39

合并为

Diffusion Model算法_公式推导_47

化简后得

Diffusion Model算法_计算机视觉_48


其中

Diffusion Model算法_算法_49

为高斯分布

Diffusion Model算法_人工智能_50

的合并

步骤3

既然

Diffusion Model算法_公式推导_22

可以直接通过

Diffusion Model算法_公式推导_52

,那一直推导到

Diffusion Model算法_公式推导_04

由此可得

Diffusion Model算法_计算机视觉_54


其中

Diffusion Model算法_人工智能_55

现在我们知道了,正向过程,如何由图像转为噪音点图像,现在我们要反过来思考怎么由噪声图像还原到原图像,也叫去噪的过程

也就是已知

Diffusion Model算法_数据_21

,求

Diffusion Model算法_人工智能_57

Diffusion Model算法_计算机视觉_58


Diffusion Model算法_算法_59

2.2 后向过程(去噪过程)

已知

Diffusion Model算法_数据_21

,求

Diffusion Model算法_人工智能_57

通过贝叶斯公式,可以得:

我们可以通过先验条件

Diffusion Model算法_算法_02

来求得后验条件

Diffusion Model算法_数据_28


Diffusion Model算法_数据_21

,或任何一个

Diffusion Model算法_计算机视觉

时刻的

Diffusion Model算法_人工智能_66

值。也就是说

Diffusion Model算法_公式推导_67

,

Diffusion Model算法_公式推导_68

已知

Diffusion Model算法_数据_69


目的是反向推理:

Diffusion Model算法_公式推导_70

,先验条件为

Diffusion Model算法_数据_21

,求后验条件

Diffusion Model算法_数据_28

,公式如下:

Diffusion Model算法_数据_73

其中

Diffusion Model算法_计算机视觉_74

,

Diffusion Model算法_公式推导_75

可以通过先验条件

Diffusion Model算法_公式推导_04

求得

也就是

Diffusion Model算法_人工智能_77

,

Diffusion Model算法_数据_78

2.2.1 公式推导

步骤1

因为

Diffusion Model算法_算法_79

都可以通过先验条件

Diffusion Model算法_公式推导_04

求得,虽然这里

Diffusion Model算法_公式推导_04

未知,但可以将

Diffusion Model算法_人工智能_82

表示为:

Diffusion Model算法_计算机视觉_83

其中

Diffusion Model算法_人工智能_84

~

Diffusion Model算法_计算机视觉_85

其中

Diffusion Model算法_人工智能_86

~

Diffusion Model算法_公式推导_87

其中

Diffusion Model算法_公式推导_88

~

Diffusion Model算法_算法_89

步骤2

从式子中可以看到都包含一个

Diffusion Model算法_数据_90

的高斯分布(正态分布)

Diffusion Model算法_数据_91


由高斯分布公式:

Diffusion Model算法_公式推导_92

可以将三个式子通过正态分布换算为:

Diffusion Model算法_计算机视觉_93

把正态分布展开后,乘法相当于加法,除法相当于减法。

Diffusion Model算法_算法_94

步骤3

化简步骤2得:

Diffusion Model算法_算法_95

其中

Diffusion Model算法_人工智能_96

最终结果求出:

Diffusion Model算法_公式推导_97

如果上面的公式计算看不懂,只需要记住这最后这个式子即可。

3.算法流程

模型的训练和预测,并通过损失函数来拟合,一直是围绕着噪声

Diffusion Model算法_数据_98

来求解的

前向过程:我们随机增加的噪声——>噪声就是已知的标签

Diffusion Model算法_算法_99


反向过程:通过模型预测出前面时刻的图像,来还原,已知

Diffusion Model算法_公式推导_22

,求得

Diffusion Model算法_计算机视觉_24

,也就得到了中间的噪声

Diffusion Model算法_人工智能_102


用前向反向的噪声来作为损失函数,来拟合模型
模型整体主干结构选择U-Net

算法流程图

Diffusion Model算法_计算机视觉_103


Algorithm 1 Training

算法训练

  1. Diffusion Model算法_算法_104

  2. 图像中采样得到一部分图像
  3. Diffusion Model算法_算法_02

  4. 设置t,每张图片的t时刻是不固定的,比如batch =4 第一张。t=30,第二张 t=150
  5. 加噪声
  6. Diffusion Model算法_公式推导_106

  7. 噪声和模型预测的噪声 ,损失函数

Algorithm 2 Samping
模型训练完,就不需要前向过程,只用反向做预测

  1. 输入不同
  2. Diffusion Model算法_计算机视觉

  3. 时刻的图像
  4. 随机采样一个
  5. Diffusion Model算法_计算机视觉

  6. ,求
  7. Diffusion Model算法_数据_28

  8. 这里流程4中的公式,就是
  9. Diffusion Model算法_公式推导_97