StyleGAN method
Analyzing and Improving the Image Quality of StyleGAN
briefly explained in a few minutes
difficulty : 💛💛💛🖤🖤
👀 Take a look
StyleGAN 以及後續出現的 StyleGAN2 與 StyleGAN3 在圖像生成領域都具有非常驚人的效果,且都不斷在解決生成圖像的品質問題,在較單一的資料集上可以生成出非常高解析度的圖片。
🧠 Main Ideas
StyleGAN generator
StyleGAN generator 的網路架構由 Mapping Network 以及 Syhthesis Network 組成,Mapping Network 會將輸入的 gaussian noise 轉換成 latent code W 控制圖像的 Style ,並在每一個 Synthesis Block 都加上 W 。
而 Synthesis Network 則由許多的 Synthesis Block 組成,每個 block 都會接收一個 W 來轉換成 Style ,以及一個 noise 的輸入帶來一些隨機化的元素 (頭髮位置、質地等等)。
Mapping Network
簡單來說 Mapping Network 希望可以更好的解釋資料集,抓到其中的特徵,比如人臉或是車輛的輸入,而這些特色彼此之間可能具有許多關聯,所以使用一個 Style 來表達會比直接輸入 noise 還來的好解釋,後方的生成網路也能更容易抓到重點。
Mapping Network 由 8 層 FC 組成 (後面的研究提到 2 層或許效果更好) ,並使用 AdaIN 方法來添加風格
Style Mixing
Style Mixing 是 StyleGAN 的一個特色,能夠使用兩張圖片做為輸入,產生帶有兩張圖片風格、內容的新圖片。
Style Mixing 的做法是先將圖片 project 到 Mapping Network 中,獲得兩個向量 w1 以及 w2 ,接著在 Synthesis Network 的許多 block 裡挑一個切點,前半部分輸入 w1 後半輸入 w2 ,隨著切點選擇的不同,產生的圖片帶有的資訊也不盡相同,這是因為 Synthesis Network 的每個 block 所負責的部分可能會有差異,比如某個負責臉部表情,某個負責膚色以及質地等等,有很大的操作空間。
Stochastic Variation
這個特色的存在是希望可以生成圖像中加入一些隨機的特色,通常是為了控制物體的質地 (更自然),比如頭髮、皮膚等等。
實現方法是在 Synthesis Network 中的每一個 block 加上 noise ,與先前提到過的相同,隨著 block 負責的區塊不同,影響的部分也不一樣。
Perceptual Path Length
生成圖像本身是不同分布間的對應過程,比如輸入 noise 給生成網路,我們會期待可以產生特定 domain 的結果,這其實就是分布間的轉換。
而 PPL 其實是一個指標,表示 generator 在訓練時 latent space 的移動是不是最有效率的 (時間t 到時間 t’),如果是的話,理論上路徑會是一條直線,所以任何對這兩個時間點 w 的線性插值應該也會是相關的,或是順序變化的。
Lazy regularization
過去是每次計算 loss 都會計算一次 regularization ,但作者發現其實可以不那麼頻繁的計算 regularization 也能得到差不多的結果,且可以減少訓練所需的時間。
Path Length Regularization
當對兩張圖片的 w 進行線性組合時,我們一般更喜歡連續的點都到 generator 會得到近似的結果,其實意思就是對於 latent space 的變化越大,在生成圖像所表示的變化就應該越大,反之亦然。
使用這個技巧可以讓 latent code 到圖像的轉換更加順利。
Progressive Growth
Progressive Growth 的具體想法是先訓練較低解析度的圖片,等到穩定後,再訓練高解析度的圖片,這樣的做法可以穩定訓練過成,且可以得到更高解析度的圖片。
但相對的作者也找到了他帶來的一些問題,就是會更容易忽視圖像移動的結果,傾向輸出特徵在最常出現的地方。