生成式視覺:擴散與文生圖

擴散修補

擴散修補是這樣一項任務:填補影像中被遮罩挖空的區域,使結果看起來毫無接縫——移除一個物件、替換天空、延伸一幅畫,或依提示詞畫入某個新東西。其根本挑戰在於一致性:填入的像素必須在光照、透視、紋理與內容上與周圍影像一致,同時還要滿足任何提示詞,使那塊補丁真正與原作無法區分。擴散模型很適合這件事,因為它的迭代去雜訊可以被導引,在每一步都尊重已知的像素。

主要有兩種做法。免訓練的做法(如 RePaint)取用一個標準擴散模型,在每個反向步驟,用「正確加雜訊版本的真實像素」覆寫目前雜訊影像中已知(未遮罩)的區域,同時只讓模型自由地對被遮罩區域去雜訊。由於已知區域不斷被重新強加,模型被迫讓它的填補與固定的周圍環境調和;重取樣的技巧能減少遮罩邊界的接縫。微調的做法則修改網路,使其接受遮罩與被遮罩影像作為額外的輸入通道,並專門針對修補進行訓練;專用的修補檢查點(如 Stable Diffusion 的修補模型)正是這麼做,通常給出更乾淨、更可控的結果。

修補支撐著現實世界中極大一部分的創意編輯:物件移除、生成式填補、服裝與商品替換、受損照片的修復,以及「外延繪製」(outpainting,把影像延伸到邊界之外,這其實就是「遮罩等於原圖之外一切」的修補)。它特有的失敗模式包括邊界接縫、忽略周遭環境的內容(一道沒有投射者的陰影),以及提示洩漏——新內容的風格與照片相衝突。做得好,接縫隱形;做得差,視線會直接被那塊補丁攫住。

潛在擴散增添了一個麻煩:遮罩存在於像素空間,但模型在 VAE 潛在空間中運作,那裡一個潛在格涵蓋約 8x8 的像素區塊。一個像素級精確的遮罩在潛在空間中會變得方塊化,這就是為什麼邊緣附近的精細修補可能會滲色;好的流程會用原始的(像素空間)遮罩把解碼後的結果混合回去,而不是在邊界處信任潛在空間的填補。

又称
inpaintingmasked generationimage filling