StyleGAN2 閱讀筆記


| 1204

論文:Analyzing and Improving the Image Quality of StyleGAN
影片:https://www.youtube.com/watch?v=c-NJtV9Jvp0&feature=youtu.be
原始碼:NVlabs/stylegan2

這篇的作者是 Tero Karras,也是繼 PGGAN(ProgressiveGAN)、StyleGAN 後的續作,從 PGGAN 開始 GAN 的影像品質邁入 1024x124 的高解析度,而 StyleGAN 更在引入 style transfer 之後產生更佳的結果,這篇又進一步研究 StyleGAN 生成影像中的缺陷,並針對這些缺陷分析並調整訓練的方法,儘管部分的分析有猜測的成分在,但依然非常精彩。

StyleGAN 的要點

下圖是一般 GAN 與 StyleGAN 的網路結構比較,較明顯的差異在於 latent 的輸入方式,這使得 StyleGAN 的 latent 可以拆分出比較明顯的語意,也就可以藉著調整 latent 改變輸出的頭髮長短、頭轉向、年齡等等的。

  • Progressive Growing:從 PGGAN 繼承而來,讓 GAN 的訓練從低解析度開始,再以每階段翻倍的方式逐漸提升到高解析度,作者證明這樣的方式可以讓 GAN 的訓練更穩定,並減少訓練的時間。
  • Mapping Network:與傳統 GAN 不同,StyleGAN 會先將輸入 $z \in Z$ 經過 mapping network $f$ 映射到 $w \in W$,再當作輸入。這是因為我們通常會假定 $z$ 的分布是球狀對稱的高斯分布,但生成影像 $x$ 的分布,很顯然不會是如此,因為合理的影像中有許多互斥的條件(e.x. 藍色的臉),因此 StyleGAN 利用 mapping network 先進行分布的轉換再交給 generator 去作生成,這樣可以讓 $x$ 對應 $w$ 或是 $z$ 的關係變得平滑,提升影像品質(見後面的 PPL 補充)。按照相同的邏輯,作者也透過實驗發現即使是傳統 GAN,引入 mapping network 也能提升生成的影像品質。
  • Adaptive Instance Normalizaton(AdaIn):這方法從 style transfer 來,normalization 本身就有 domain transfer 的意涵在,利用 AdaIn 的方式也可以讓 $z$ 的資訊更不容易在網路層層傳遞下流失
  • Stochastic Variation:上圖中 B 的部分,因為人臉的影像有許多細微的隨機部分,例如頭髮髮尾的位置,如果影像中所有的資訊都要從 $z$ 而來,會需要很高維度的 $z$ 以及很強的 generator,這會造成難以訓練,因此作者利用 pixel-wise noise 來彌補這方面的資訊,以減少 generator 的負擔,事實上也可以將這些視為是某種 latent。
  • Style Mixing: StyleGAN 所使用到的訓練方式,在訓練時會同時用到兩個 $z$,某些層輸入 $z_1$ 某些層輸入 $z_2$,來讓網路的不同層更加獨立(disentangled)。

StyleGAN 的問題

Droplet Artifacts - InstanceNorm revisited

Droplet artifacts 指的是生成影像的 feature map 在不特定的區域出現極大或極小值的情形。上圖顯示 droplet artifacts 對於最終影像的影響,雖然有的時候只會在邊緣的小區域產生不自然的扭曲,但有時卻會導致影像明顯的不自然。作者提到這個現象在幾乎所有 StyleGAN 的生成結果都會出現,這代表 generator 仰賴 droplet 的資訊。

作者認為這是因為 instance normalization 對於個別通道(channel)正規化,這會導致通道之間 offset 的資訊流失,因此網路會傾向在某個地方產生明顯的峰值,以便在正規化後依然保留資訊。

如上圖,作者修改並簡化 AdaIn 的結構,將 AdaIn 拆成 normalization 和 modulation 兩部份(b),並且只針對標準差作正規化(c),造成的結果就是縮放網路的 weighting,因此可以再進一步整理簡化成(d)。最後的效果非常明顯,也保留本來 StyleGAN 可以在不同層控制生成影像的能力。

Phase Artifacts - Progressive growing revisited

Phase artifacts 指的是生成的影像在一些高頻的特徵點,例如牙齒齒縫,無論如何調整 latent 的數值,幾乎會在同一個位置,或是只出現在幾個特定位置的情形。在觀察不同解析度的 feature map 後,作者發現這些特徵點在低解析度的 feature map 較為顯著,因此認為這個現象與 progressive training 相關,所以這篇捨棄 progressive training 並且在嘗試幾種網路架構後選擇 skip-connection generator 和 residual discriminator。

改善 StyleGAN 的生成品質

Perceptual Path Length(PPL)

PPL 在 StyleGAN 中被提出,它度量的是 latent space 的平滑程度,也就是說我們希望在兩張影像差異不大時,它們在 latent space 上也應該差異不大才對,因此 PPL 定義為 $d(img1, img2)/d(z_1, z_2)$ 的期望值,其中 $d(img1, img2)$ 是 vgg perceptual distance,$d(z_1, z_2)$ 以 L2 distance 計算,實際算式如下:
$$l_z=\mathbb{E}[\frac{1}{\epsilon^2}d(G(slerp(z_1, z_2; t)), G(slerp(z_1, z_2; t + \epsilon)))]$$
G 代表 generator, slerp 代表球面上的內插,$\epsilon$ 是一個極小的數值

作者對於為何 PPL 可以作為影像品質的度量基準做了以下的解釋:

We hypothesize that during training, as the discriminator penalizes broken images, the most direct way for the generator to improve is to effectively stretch the region of latent space that yields good images.This would lead to the low-quality images being squeezed into small latent space regions of rapid change. While this improves the average output quality in the short term, the accumulating distortions impair the training dynamics and consequently the final image quality.

也就是說在訓練的過程中,generator 會嘗試著從已經好的影像出發,擴展好影像在 latent space 上的範圍,最後導致爛影像被壓縮在很小的區域中,而好影像和爛影像的 percetual disance 很大。所以如果 PPL 很大,代表 latent space 中有許多爛影像,導致訓練上不穩定而且最終的生成品質下降。

PPL Regularization

承上,為了進一步改善影像的生成品質,作者提出 PPL Regularization,也就是希望 latent space 平滑,算式與程式碼如下:

由於 Jacobian matrix 代表該點在各個方向的微分,因此 PPL Regularization 就是限制空間中的任一個點各方向的微分都不可以太大,以此確保平滑性。下圖分別比較使用 PPL Regularization 前後所產生的 PPL 分布變化。(註:SyleGAN 中需要使用 truncation trick 來去除 latent space 中較為極端的區域,以生成較佳的影像,似乎透過這個方法,就可以免除這個步驟)

Detection of generated images

蠻有趣的一個部分,現在的 GAN 生成的影像品質不斷提升,導致判斷是否是生成影像的任務變得更難,作者發現,可以利用已經訓練好的 StyleGAN2,來判斷影像是否是由這個網路所生成,方法是將影像重新投影回 latent space,再比較重新生成的影像和待判定影像的差異,如果差異很大就代表輸入的是真實影像,這是原始 StyleGAN 所不具備的性質。作者並沒有明說為何會有這樣性質,推測應該還是跟 latent space 的平滑有關,StyleGAN2 可以充分的利用整個 latent space,導致真實影像無法找到好的對應以重新生成影像。

尋找影像在 latent space 上的投影是一個最佳化的過程,也就是最佳化輸入的 $w$ 和 stochastic noise,使得生成的影像和原始影像接近,損失函數如下:

LPIP 是一種 perceptual loss,而 $L_{i,j}$ 代表 noise 的 regularization,它要求 noise 必須滿足和周圍像素的 autocorrelation 為零的條件。

小結

無論是分析還是實驗,這篇都做的很完整,像是中間一段提到他們為了分析新的網路架構是否還保有 progressive growing 的訓練特性,將每個 tRGB 層的貢獻作分析,除了證明依然保有特性外,還發現必須加深 1024x1024 層的深度,才能讓它在最後的訓練階段提供貢獻。還有許多觀察中間層輸出的分析,都是值得學習的地方。

#GAN #Paper






Related Posts

版本控制-GIT基本指令

版本控制-GIT基本指令

一起探討 Micro Frontends 的世界

一起探討 Micro Frontends 的世界

深入 Session 與 Cookie:Express、PHP 與 Rails 的實作

深入 Session 與 Cookie:Express、PHP 與 Rails 的實作



Sponsored



Comments