GAN系列:論文閱讀——Analyzing and Improving the Image Quality of StyleGAN(StyleGAN改進)

2019.12的對styleGA進一步改善的論文,還是NVIDIA的。這篇論文主要從結構設計和訓練方式上進行了改變,從而消除styleGAN中出現的artifacts。本文針對的artifacts主要兩類:1)成水滴狀的/blob-like artifacts:主要與結構設計有關,因此本文更改了normalize;2)與progressive growing的訓練方法相關,因此本文更改了訓練方式。

第一種artifacts呈現水滴形的模糊塊,在生成圖像中看起來尚不明顯時在中間層的特徵上就很清楚了。這種artifacts通常從64*64分辨率開始出現在每一張特徵圖上,並隨着分辨率增加變得明顯。具體如下圖所示:

本文認爲這種現象和styleGAN的生成器中的normalization有關,因爲normalize調整了feature maps的統計信息,通過這種信號強度高的水滴塊,生成器可以躲避複雜的數據生成,直接調整feature maps的統計信息。文中認爲,AdaIN中的normalization是對每一個feature map單獨操作的,損害了特徵間的信息。博客:https://blog.csdn.net/WinerChopin/article/details/103538073 提出的看法是,AdaIN的normalization在feature maps間是獨立的,但modulation又是所有feature maps共享參數,因此產生了數據分佈的變化。同時,如下圖所示:

第一行的feature maps在128*128時出現了水滴,但第二列沒有。由於水滴的存在保證了數據的統計特性,第一列的其他位置像素值是平滑的,但第二列的特徵就更清晰一些。然而在256*256時,第二列出現了多個水滴,控制了統計特性,導致最後生成圖像有很大問題,然而第一列卻效果較好。這說明生成圖像的效果一定程度上依賴於水滴artifacts的生成,也就是說不能完全刪除這種artifacts。那麼如何調整水滴artifacts呢?文中的這個過程可以概括爲把AdaIN+conv轉化爲conv,具體分析如下:

1. 研究styleGAN中生成器結構,從圖a表示法換爲圖b表示法,內容結構未變:

其實就是把AdaIN拆分成normalization和modulation,把卷積的細節設計的權重w和偏置b表示了出來。在圖b這種表示中發現,卷積中加上偏置b和隨機噪聲B是改變一張feature map整體均值的,這與緊接着的normalization中減去mean的操作作用是相反的,如果b+B使得均值增加了,後面的normalization就會減去它。因此對這兩者進行了順序調換,調換後再調整均值這種操作和加上偏置b+B其實作用相同,因此可以省去normalization包括modulation中的mean操作,使其通過學習偏置參數b實現(個人認爲,其實就是mean和偏置b的作用會相互抵消,只用一個就夠了)。更改後的結構如下圖所示:

2. normalization中的std操作和Modulation中的std操作均可以附加在卷積核的操作上,進而實現對feature maps的改變,因此AdaIN+conv就可以變爲單獨的conv操作了,只不過卷積核發生了改變。這個過程中卷積核參數變化如下:

1). 

2). 

將std操作轉移到卷積核參數上是基於i.i.d.的數據分佈假設,因此這種操作是基於一定的假設,而不是完全基於實際的feature maps數據,導致之前的normalization和modulation變得不會過於嚴格,改善了水滴artifacts的影響。上述步驟1就是modulation對卷積核參數的影響,步驟2是normalization對卷積核的影響,因爲對應這前一步的modulation,這回步驟2被稱爲demodulation。一些示意圖如下:

水滴artifacts消失了並且全局信息都很清楚,這就是本文解決的第一個問題。

第二個問題是progressive training帶來的shift invariance,就是隨着圖像角度的shift,生成的一些細節並未隨着改變,導致了圖像細節改變的不連續性,如下圖所示:

臉的角度變了,然而牙齒基線卻沒變,這也太細節了。。。文中認爲,progressive training導致生成結果對一些局部信息有偏好,在shift較小時這部分局部信息不改變,直到突然跳變到下一種,這就是所謂的unsmooth。progressive training導致每一分辨率的輸出結果都是短暫的,但最後產生的圖像會傾向於這個過程中出現頻率最高的那個生成結果。而這個訓練是一層層累積的,像素過低的時候不能生成牙齒眼球方向這些細節,生成器過渡到像素高又必須經過中間層,因此中間層使用率最高,產生的結果頻率最高,因此中間層的結果經常出現在最後生成的圖像中,導致了這些細節並未發生改變。爲了解決這個問題,本文取消了漸進式訓練,那麼爲了保證生成圖像的質量,就需要更強大的生成器和判別器,因此嘗試了9中結構改變:

分別對生成器和判別器嘗試了原始結構,跳層連接/skip connection和殘差結構。實驗結果發現,生成器使用跳層連接更爲合適,判別器使用殘差結構更合適,因爲判別器類似分類器,殘差適合分類。最後改進的效果如下圖:

在這裏插入圖片描述

這是兩個主要創新,除此之外基於PPL的正則和large network上的研究,可以參考博客:

https://blog.csdn.net/WinerChopin/article/details/103538073

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章