AIGC: FastDPM 笔记
注意,FastDPM ≠ DPM Fast。前者(即这篇笔记的对象)是 2106.00132,后者是 2206.00927
连续化
对于离散的扩散过程,我们首先希望将其连续化。
首先,论文定义了两个变量,扩散步数 和噪音等级
(这两个变量都是连续的),扩散步数就是当前扩散所处的位置,噪音等级用来形容当前图片上高斯噪声的强度。然后,我们设定两个函数
和
,这两个函数可以对扩散步数
和"噪音等级"
进行互换:
.
那这两个函数具体是什么呢?
对于函数 R 来说,论文里首先将其定义为 . 顺便一说,
. 并且,根据定义,我们知道
.
在这里,我们通过定义一个常数 (
都是常数),然后将公式
进行改写:
这里的 Gamma 函数相当于是在离散和连续之间架起了一个桥梁。
然后,根据 的定义,我们得到了函数 R 的具体形式:
至于 , 论文中是利用了一个二分法搜索来寻找符合下面条件的数值解。
如果没看懂上面公式,没关系,我也没看懂,以上的公式在算法里面其实并不是那么的重要。
前向(加噪)与逆向(去噪)过程
首先是加噪过程,如果原 DDPM 一共包含了 步的话,那么我们选一个比
小的值
然后获得一个新的序列,
. 且
.
选取这个新的序列的方式有两种,一种是我们预先指定一个方差的序列,然后针对序列里的每一个方差,我们根据公式推算出 的值,进而求得
的值,这种方式论文里面称作 VAR。另一种是我们指定一系列的扩散时间点 (即,从原来的扩散步数
里面选出一个子集),根据时间点推算出
的值,进而求得
的值,这种方式论文里面称作 STEP。
那么预先指定的这个序列如何获得呢,论文里面给出了两种比较靠谱的策略,一种是 Linear 策略,一种是 Quadratic 策略. 对于 VAR 来说,
对于 STEP 来说,
上面这些符号的意思,不用太去深究。个人的第六感认为,其实论文里面重要的是这两种策略,把离散的过程变成连续的过程并不是什么特别稀奇的事情。但是如何选取序列,让生成的图像不过于劣化,是比较重要的地方。
然后是去噪过程,论文里面也给出了两种方法,一种基于 DDPM,一种基于 DDIM. 但是这里因为只有公式,没有什么特别的地方,就略过了。

完。
