AIGC: FastDPM 筆記
注意,F(xiàn)astDPM ≠ DPM Fast。前者(即這篇筆記的對(duì)象)是 2106.00132,后者是?2206.00927
連續(xù)化
對(duì)于離散的擴(kuò)散過(guò)程,我們首先希望將其連續(xù)化。
首先,論文定義了兩個(gè)變量,擴(kuò)散步數(shù)??和噪音等級(jí)?
?(這兩個(gè)變量都是連續(xù)的),擴(kuò)散步數(shù)就是當(dāng)前擴(kuò)散所處的位置,噪音等級(jí)用來(lái)形容當(dāng)前圖片上高斯噪聲的強(qiáng)度。然后,我們?cè)O(shè)定兩個(gè)函數(shù)
?和?
?,這兩個(gè)函數(shù)可以對(duì)擴(kuò)散步數(shù)
?和"噪音等級(jí)"
?進(jìn)行互換:?
.?
那這兩個(gè)函數(shù)具體是什么呢?
對(duì)于函數(shù) R 來(lái)說(shuō),論文里首先將其定義為?. 順便一說(shuō),
. 并且,根據(jù)定義,我們知道?
.
在這里,我們通過(guò)定義一個(gè)常數(shù)?(
都是常數(shù)),然后將公式?
?進(jìn)行改寫(xiě):
這里的 Gamma 函數(shù)相當(dāng)于是在離散和連續(xù)之間架起了一個(gè)橋梁。
然后,根據(jù)???的定義,我們得到了函數(shù) R 的具體形式:
至于?, 論文中是利用了一個(gè)二分法搜索來(lái)尋找符合下面條件的數(shù)值解。
如果沒(méi)看懂上面公式,沒(méi)關(guān)系,我也沒(méi)看懂,以上的公式在算法里面其實(shí)并不是那么的重要。
前向(加噪)與逆向(去噪)過(guò)程
首先是加噪過(guò)程,如果原 DDPM 一共包含了 ?步的話,那么我們選一個(gè)比
?小的值
?然后獲得一個(gè)新的序列,
. 且?
.
選取這個(gè)新的序列的方式有兩種,一種是我們預(yù)先指定一個(gè)方差的序列,然后針對(duì)序列里的每一個(gè)方差,我們根據(jù)公式推算出??的值,進(jìn)而求得
?的值,這種方式論文里面稱作 VAR。另一種是我們指定一系列的擴(kuò)散時(shí)間點(diǎn) (即,從原來(lái)的擴(kuò)散步數(shù)
里面選出一個(gè)子集),根據(jù)時(shí)間點(diǎn)推算出?
?的值,進(jìn)而求得?
?的值,這種方式論文里面稱作?STEP。
那么預(yù)先指定的這個(gè)序列如何獲得呢,論文里面給出了兩種比較靠譜的策略,一種是 Linear 策略,一種是 Quadratic?策略. 對(duì)于 VAR 來(lái)說(shuō),
對(duì)于 STEP 來(lái)說(shuō),
上面這些符號(hào)的意思,不用太去深究。個(gè)人的第六感認(rèn)為,其實(shí)論文里面重要的是這兩種策略,把離散的過(guò)程變成連續(xù)的過(guò)程并不是什么特別稀奇的事情。但是如何選取序列,讓生成的圖像不過(guò)于劣化,是比較重要的地方。
然后是去噪過(guò)程,論文里面也給出了兩種方法,一種基于 DDPM,一種基于 DDIM. 但是這里因?yàn)橹挥泄?,沒(méi)有什么特別的地方,就略過(guò)了。

完。
