AIGC: SDEdit (Stochastic Differential Editing) 筆記
上一個(gè)文章介紹了擴(kuò)散模型的圖像修復(fù),這次順勢介紹一下擴(kuò)散模型的 img2img. 論文(2108.01073)里面的一些符號喜歡用函數(shù)表示,這里全部改成通用的下標(biāo)形式了。

從回顧SGM開始
這里,先回顧一下?Score-based Generative Models?(2011.13456). 對于擴(kuò)散的正向加噪過程,我們可以有以下的通用形式(假設(shè)擴(kuò)散項(xiàng)只與時(shí)間有關(guān)):
對于 VP-SDE (Variance Preserving SDE), 我們有???和?
. 對于 VE-SDE (Variance Exploding SDE), 我們有?
?和?
.
而對于每一個(gè)正向加噪過程,我們都有一個(gè)對應(yīng)的逆向去噪過程:
其中,?被稱作分?jǐn)?shù)函數(shù) (score function), 我們使用一個(gè)模型?
?去"學(xué)習(xí)"這個(gè)分?jǐn)?shù)函數(shù)。通常我們沒法求上述 SDE 的解析解,所以我們將連續(xù)時(shí)間?
?做一個(gè)離散化,然后利用一些數(shù)值解法來求解。
所以,論文中(對于?VE-SDE)采用了 Euler-Maruyama 的數(shù)值解法:
其中,
Img2Img
接下來是 SDEdit 的初始設(shè)定,我們的任務(wù)是一個(gè) img2img ——將一個(gè)圖片轉(zhuǎn)換為另外一個(gè)圖片。原圖我們稱作引導(dǎo)圖像(guide),用??來表示,轉(zhuǎn)換后的圖像我們用
表示。
我們發(fā)現(xiàn),解 SDE 其實(shí)未必要從 出發(fā),而是可以從中途的任一時(shí)間點(diǎn)開始。所以,我們選取一個(gè)時(shí)間點(diǎn)
, 對?
?加噪聲:
.?
然后,我們利用上述的數(shù)值解法,從??進(jìn)行逆向去噪過程,然后獲得圖像
.?
這一整個(gè)過程,我們把它稱作?.
我們把接近原圖像的程度稱作是 faithful, 把生成圖片的質(zhì)量稱作是?realistic. 那么我們可以得到如下的一個(gè)圖像:

很顯然,如果我們把??設(shè)置為 0, 意味著我們沒有加入任何的噪聲,那么我們最終生成的圖像就是我們的引導(dǎo)圖像(意味著 L2 距離為 0);如果我們把?
?設(shè)置為 1,那么就相當(dāng)于純高斯噪聲開始去噪,所以最終生成的圖像將和引導(dǎo)圖像毫無關(guān)聯(lián)。
遮罩編輯
我們在上面的基礎(chǔ)上再進(jìn)一步,希望只"編輯"源圖像的一小部分,那么我們就需要有一個(gè)遮罩,我們把它稱作?.?
首先我們還是選擇一個(gè)時(shí)間點(diǎn)? 對原圖像
進(jìn)行加噪,得到?
.?
然后我們針對遮罩的部分,和被遮罩的部分,這兩個(gè)部分進(jìn)行分別處理。對于遮罩的部分,我們利用上述的??進(jìn)行去噪,然后將每一步去噪的結(jié)果和遮罩
?進(jìn)行元素間相乘。用公式表達(dá),即?
.
而對于未遮罩的部分,我們則直接進(jìn)行一個(gè)加噪,即??.
然后我們把上面兩部分相加,就得到了每個(gè)時(shí)間點(diǎn) t 時(shí)對應(yīng)的圖像。

完。
B站公式編輯器經(jīng)常崩潰,所以如果看到 tex parse error 之類的錯(cuò)誤信息時(shí),刷新一下頁面一般能解決。