過去幾天我們看了非常多個影像合成的相關論文,有像是整理過去影像合成做法的研究,以及其中的一個模型ControlCom,這次要介紹的是另一個影像合成模型VQGAN。
在這篇論文中,研究團隊改進了VQGAN用於StableDiffusion中,他們發現原先使用的VQGAN會導致資訊丟失,甚至在非編輯區也會出現失真的現象,這主要是因為VQGAN在壓縮和量化圖像時引入的誤差,導致解碼後的圖像出現扭曲。
在介紹前我們先來一點背景知識的建立。
VQGAN是一種基於GAN(生成對抗式網路)的生成式模型,他主要的應用是創造新的、逼真的圖像或修改現有圖像。如字面上的意思他有兩個核心部分VQ與GAN。VQ是一種數據壓縮的技術,可以將連續數據表示為離散的向量。
在VQGAN中輸入的圖像或文本會先被編碼為連續的向量表示,然後被映射到向量空間中,這個過程通過使用離散化的編碼器與解碼器實現。
研究團隊最主要為提出了一種新的非對稱式VQGAN。非對稱式VQGAN包含了兩個設計條件解碼器以及更強大的解碼器。
並且在這樣的架構下訓練非對稱VQGAN的成本較低,只需要重新訓練新的非對稱解碼器,而保持原有的VQGAN編碼器和StableDiffusion模型不變。
條件解碼器最主要的目的是為了保留條件輸入的細節。那他們怎麼去實現這個目的呢?
多層特徵表示:條件解碼器會使用多層特徵圖來表示條件輸入,而不是將其壓縮成單層特徵。這樣可以保留更多的細節信息。
上方這行是什麼意思呢?主要是因為在傳統的VQGAN中,條件輸入(如遮罩圖像)通常會被壓縮成一個單一的特徵層。這個單層特徵可能是通過將整個圖像壓縮到一個固定大小的向量來實現的。這種壓縮可能會導致大量細節信息的丟失。
而多層特徵表示會使用多個不同尺度的特徵來表示輸入,通常從淺層到深層,捕捉不同級別的資訊,像是可能淺層會去捕捉細微的紋理及邊緣,中間層可能捕捉複雜的結構和形狀。
輕量級編碼器E:使用一個輕量級的編碼器來提取條件輸入的不同層級的特徵圖。
MGB模塊
接著我們可以在架構圖看到一個MGB的模塊,MGB模塊是什麼呢?MGB模塊的目的是將條件特徵與解碼器特徵進行融合。他的工作原理是使用遮罩來直接複製解碼器特徵的遮罩區域,同時結合來自編碼器E的非遮罩區域特徵。
這樣的作法可以在不修改解碼器結構的情況下,插入MGB模塊。另外也提升了兼容性既可以處理有遮罩的編輯任務,也可以處理純生成任務。
在這邊研究團隊增強了解碼器的模型大小,只需要在推理階段略為增加計算成本就可以增強恢復細節的能力。
在訓練過程中,在訓練過程中,隨機使用兩種情況:一種是隨機生成的遮罩,另一種是完全填充的遮罩。這確保了解碼器既能處理部分遮罩的情況,也能處理純生成的情況。也就是上方提到的兼容性。
最後可以從下方圖表中看到,相較於傳統的StableDiffusion模型在FID以及IS上有著不錯的提升,除此之外此方法還帶來了幾個優勢像是可以同時用於帶遮罩的編輯任務和純文本到圖像生成任務。另外還保留了StableDiffusion原有的文本到圖像生成能力。
論文:https://arxiv.org/pdf/2306.04632