秃头小苏
2023/02/28阅读:46主题:默认主题
Diffusion Model原理详解及源码解析
🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题
🍊专栏推荐:深度学习网络原理与实战
🍊近期目标:写好专栏的每一篇文章
🍊支持小苏:点赞👍🏼、收藏⭐、留言📩
Diffusion Model原理详解及源码解析
写在前面
Hello,大家好,我是小苏🧒🏽🧒🏽🧒🏽
今天来为大家介绍Diffusion Model(扩散模型 ),在具体介绍之前呢,先来谈谈Diffusion Model主要是用来干什么的。🥂🥂🥂其实啊,它对标的是生成对抗网络(GAN),只要GAN能干的事它基本都能干。🍄🍄🍄在之前我已经做过很多期有关GAN网络的教学,还不清楚的可以点击☞☞☞进入专栏查看详情。在我一番体验Diffusion Model后,它给我的感觉是非常惊艳的。我之前用GAN网络来实现一些图片生成任务其实效果并不是很理想,而且往往训练很不稳定。但是换成Diffusion Model后生成的图片则非常逼真,也明显感觉到每一轮训练的结果相比之前都更加优异,也即训练更加稳定。
说了这么多,我就是想告诉大家Diffusion Model值得一学。🍋🍋🍋但是说实话,这部分的公式理解起来是有一定困难的,我想这也成为了想学这个技术的同学的拦路虎。那么本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码,探究其是如何通过代码实现的。如果你想弄懂这部分,请耐心读下去,相信你会有所收获。🌾🌾🌾
如果你准备好了的话,就让我们开始吧!!!🚖🚖🚖
Diffusion Model原理详解✨✨✨
整体思路
Diffusion Model的整体思路如下图所示:

其主要分为正向过程和逆向过程,正向过程类似于编码,逆向过程类似于解码。
-
正向过程
首先,对于一张原始图片 ,我们给 加一个高斯噪声,图片由 变成 。【注意:这里必须要加高斯噪声喔,因为高斯噪声服从高斯分布,后面的一些运算需要用到高斯分布的一些特性】接着我们会在 的基础上再添加高斯噪声得到 。重复上述添加高斯噪声步骤,直到图片变成 ,由于添加了足够多的高斯噪声,现在的 近似服从高斯分布(又称正态分布)。
现在有一个问题需要大家思考一下,我们每一步添加高斯噪声的量一直是不变的吗?🎅🏽🎅🏽🎅🏽滴,开始解答。答案是每步添加高斯噪声的量是变化的,且后一步比前一步添加的高斯噪声更多。我想这一点你通过上图也非常容易理解,一开始原图比较干净,我们添加少量高斯噪声就能对原图产生干扰;但越往后高斯噪声量越多,如果还添加一开始少量的高斯噪声,那么这时对上一步结果基本不会产生任何影响。【注:后文所述的每个时刻图像和这里的每一步图像都是一个意思,如 时刻图像表示的就是 这个图像】
-
逆向过程
首先,我们会随机生成一个服从高斯分布的噪声图片,然后一步一步的减少噪声直到生成预期图片。逆向过程大家先有这样的一个认识就好,具体细节稍后介绍。🌱🌱🌱
怎么样,大家现在的感觉如何?是不是知道了Diffusion Model大概是怎么样的过程了呢,但是又对里面的细节感到很迷惑,搞不懂这样是怎么还原出图片的。不用担心,后面我会慢慢为大家细细介绍。🥡🥡🥡
实施细节
这一部分为大家介绍一下Diffusion Model正向过程和逆向过程的细节,主要通过推导一些公式来表示加噪前后图像间的关系,谈到公式,大家可能头都大了,相信我,你可以看懂!!!🥂🥂🥂
正向过程
在整体思路部分我们已经知道了正向过程其实就是一个不断加噪的过程,于是我们考虑能不能用一些公式表示出加噪前后图像的关系呢。我想让大家先思考一下后一时刻的图像受哪些因素影响呢,更具体的说,比如 由哪些量所决定呢?我想这个问题很简单,即 是由 和所加的噪声共同决定的,也就是说后一时刻的图像主要由两个量决定,其一是上一时刻图像,其二是所加噪声量。【这个很好理解,大家应该都能明白吧】明白了这点,我们就可以用一个公式来表示 时刻和 时刻两个图像的关系,如下:
——公式1
其中,
表示
时刻的图像,
表示
时刻图像,
表示添加的高斯噪声,其服从N(0,1)分布。【注:N(0,1)表示标准高斯分布,其方差为1,均值为0】目前你可以看出
和
、
都有关系,这和我们前文所述后一时刻的图像由前一时刻图像和噪声决定
相符合,这时你可能要问了,那么这个公式前面的
和
是什么呢,其实这个表示这两个量的权重大小,它们的平方和为1。
enmmm,我想你已经明白了公式1,但是你可能对 和 的理解还存在一些疑惑,如为什么要设置这样的权重?这个权重的设置是我们预先设定的吗?🌶🌶🌶其实呢, 还和另外一个量 有关,关系式如下:
——公式2
其中,
是预先给定的值,它是一个随时刻不断增大的值,论文中它的范围为[0.0001,0.02]。既然
越来越大,则
越来越小,
越来越小,
越来越大。现在我们在来考虑公式1,
的权重
随着时刻增加越来越大,表明我们所加的高斯噪声越来越多,这和我们整体思路
部分所述是一致的,即越往后所加的噪声越多。🍄🍄🍄
现在,我们已经得到了 时刻和 时刻两个图像的关系,但是 时刻的图像是未知的。【注:只有 阶段图像是已知的,即原图】我们需要再由 时刻推导出 时刻图像,然后再由 时刻推导出 时刻图像,依此类推,直到由 时刻推导出 时刻图像即可。既然这样我们不妨先试试 时刻图像和 时刻图像的关系,如下:
——公式3
这个公式很简单吧,就是公式1的一个类推公式,此时我们将公式3代入公式1中得:
这个公式4大家能理解吗?🌼🌼🌼我觉得大家应该对最后一个等式存在疑惑,也即
作者介绍