Analyzing and Improving the Image Quality of StyleGAN

briefly explained in a few minutes
difficulty : 💛💛💛🖤🖤

👀 Take a look

StyleGAN 以及後續出現的 StyleGAN2StyleGAN3 在圖像生成領域都具有非常驚人的效果,且都不斷在解決生成圖像的品質問題,在較單一的資料集上可以生成出非常高解析度的圖片。

🧠 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 MixingStyleGAN 的一個特色,能夠使用兩張圖片做為輸入,產生帶有兩張圖片風格、內容的新圖片。

    Style Mixing 的做法是先將圖片 projectMapping 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 的具體想法是先訓練較低解析度的圖片,等到穩定後,再訓練高解析度的圖片,這樣的做法可以穩定訓練過成,且可以得到更高解析度的圖片。

    但相對的作者也找到了他帶來的一些問題,就是會更容易忽視圖像移動的結果,傾向輸出特徵在最常出現的地方。

👓 results

FFHQ

上方 : CHURCH, 下方 : HORSE (LSUN)

🔗 reference

StyleGAN2