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