StyleGAN2

Analyzing and Improving the Image Quality of StyleGAN

Moris
Computer Vision Note
Mar 18, 2024

--

本文將討論改進FID度量約3倍的架構變更,以及生成圖像中的去除人工痕跡和平滑潛在空間插值的質量改進。潛在空間的平滑性導致生成圖像的來源產生的小變化導致結果圖像的小知覺變化,從而實現了如此驚人的動畫

whichfaceisreal.com的作者詳述了一系列可用於區分StyleGAN生成圖像的明顯“人工痕跡”。一種這樣的人工痕跡就是圖像中出現的“水滴”效果。意識到這一點使這個遊戲變得更容易(如下所示)。

StyleGAN2的作者們試圖從產生的圖像中去除這些人工痕跡。他們將水滴的來源歸因於生成器受到Adaptive Instance Normalization層的限制。

Outline

  1. StyleGAN Issues
  2. StyleGAN2

1. StyleGAN Issues

在StyleGAN生成的圖像中觀察到類似水滴的斑點狀人工製品,這在檢查生成器網絡內部的中間特徵映射時更為明顯。這個問題似乎在所有特徵映射的64×64解析度上出現,並在更高解析度中變得更糟。

Source

GAN 技術已經改進得很好,我發現放大圖片並尋找圖像模式看起來異常的區域,以檢測假圖像更為容易。

Source

在StyleGAN2的論文中,它將問題追溯到AdaIN中使用的實例標準化。AdaIN最初的目標是風格轉換,以將一個圖像的風格替換為另一個圖像,而在此過程中,輸入飼料的一些重要資訊將會丟失。

Source

正如StyleGAN2的論文中所引述的:

我們將問題定位到AdaIN操作,該操作單獨標準化每個特徵映射的均值和變異數,從而可能破壞相對於其他特徵的特徵量中的任何資訊。我們假設,這種滴劑人工製品是生成器有意將信號強度資訊偷偷傳進實例標準化的結果:通過創建一個強,局部化的尖峰來主導統計,生成器可以有效地按其喜歡的方式縮放其他地方的信號。

此外,StyleGAN2提出了一種替代設計,以解決在使用逐步增長時出現的問題,其目的是穩定高解析度訓練。

Source

如上所示,即使生成的臉部向右轉時,牙齒的中心位置(藍線)也不會改變,當使用progressive growing時。

在討論StyleGAN2之前,讓我們重新繪製StyleGAN設計,如右圖所示。該設計是相同的,其中AdaIN模組被分為兩個模組。添加了偏差,這在原始圖表中被省略。 (注意,到目前為止,尚未進行設計變更。)

Modified from source

2. StyleGAN2

2.1 Weight demodulation

有了實驗結果的支持,StyleGAN2進行的變更包括:

  • 移除(簡化)一開始如何處理常數的方式。
  • 在標準化特徵中不需要均值。
  • 將噪聲模組移出風格模組。
Modified from source

接下來,StyleGAN2用權重解調簡化了設計。它重新訪問了即時標準化設計(Norm std),目的是將其替換為不具有斑點狀人工製品的其他標準化方法。下面的右圖是具有權重解調的新設計。

Modified from source

權重解調添加了以下變更:

  1. 調製(mod std)後跟卷積(Conv 3×3)可以結合為縮放卷積權重並實現為Mod上面。 (這並未改變模型設計。)

其中 i 是輸入特徵映射 i

  1. 然後用(Demod)標準化權重

新的權重標準化為

有一小部分ε添加以避免數值不穩定。即使它在數學上並不與即時標準化相同,它也標準化輸出特徵映射以具有標準單位標準偏差,並實現與其他標準化方法相似的目標(尤其是使訓練更穩定)。實驗結果表明,斑點狀人工製品已經解決。

2.2 StyleGAN2 improvement

當然,我們可以逐一討論改進。以下的圖表總結了變化和FID分數的改善(分數越小越好)。

Source

2.3 Lazy regularization

StyleGAN在FFHQ數據集上應用了R₁正則化。事實證明,在成本計算中大部分時間忽略正則化成本並不會造成任何損害。實際上,即使每16個mini-batch次只添加一次正則化成本,模型性能仍然保持不變,同時減少了計算成本。

2.3 Path length regularization

StyleGAN2引入了一個新的正規化術語到損失中,以強制實現更平滑的潛在空間插值。潛在空間插值描述了源向量z的變化如何導致生成的圖像的變化。這是通過將以下損失術語添加到生成器中實現的:

這個實現的確切細節超出了我的理解範圍,但高層次的想法似乎是雅可比矩陣將w的微小變化映射到生成的圖像的變化(從w空間的點到10²⁴²個圖像)。這個矩陣乘以一個隨機圖像,以避免陷入局部最優,而這個矩陣的L2范數乘以它的指數移動平均值。因此,這個L2范數越大,增加損失的程度就越大,使生成器保持潛在空間的平滑性。

這個實現的另一個有趣特點被稱為“懶惰正則化”。由於計算這個雅可比矩陣需要很大的計算量,相對於每一步,這種正規化只在每16步中添加到損失中。

這個平滑的潛在空間極大地促進了將圖像重新投影到潛在空間中。這是通過取一個給定的圖像並優化可以生成它的源向量w來完成的。這在許多有趣的Twitter串中得到了展示,研究人員將自己的圖像投影到在FFHQ上訓練的StyleGAN2的潛在空間中。

Gene Kogan 的一些Twitter演示:(1, 2)

將圖像投影到完全平滑的潛在空間中有很多有趣的應用。例如,動畫工作流程通常包括勾勒出高層次的關鍵幀,然後手動填充更細緻的中間幀。像StyleGAN2這樣的模型允許您將高層次的關鍵幀投影到潛在空間中,然後在先前w ~ p(w)的結構所定義的兩個w向量之間的路徑中搜索,直到找到令人滿意的過渡。

假設生成的圖像的源自w是從這個球形分佈中取樣的(代表一個3D均勻分佈)。然後,您將這兩個關鍵幀投影到這個球形分佈中,以找到分別生成每個圖像的向量。然後,在源分佈中這些點之間有許多可以沿著走的路徑。一個平滑的潛在空間將確保這些過渡是平滑的,就像由人類插畫家和動畫師細緻化的中間細節點一樣。

2.4 Removing Progressive Growing

StyleGAN 第二版介紹的下一個技術,可能也有助於在 whichfaceisreal.com 的圖靈測試上取得良好的結果。在他們附帶的影片中的1:40處描述了這一技術。StyleGAN 圖像對於面部圖像特徵(如鼻子和眼睛)具有很強的位置偏好。作者將這歸因於逐步增長。逐步增長描述了首先將 GAN 框架用於低分辨率圖像(如⁴²)的程序,然後在達到低尺度的理想收斂特性後將其放大。

儘管逐步增長可能是一個棘手的實現,引入了與在較高分辨率層中淡化相關的超參數,並且需要更複雜的訓練迴圈,但它是高分辨率圖像合成問題非常直觀的分解。GANs 以其訓練的挑戰性而聞名,特別是在生成像 10²⁴² 圖像這樣的事物時,傳統智慧背後的觀點是鑑別器將輕易地區分真偽圖像,導致生成器在訓練期間無法學到任何東西。

另一篇關於GAN的最新論文是Animesh Karnewar和Oliver Wang的《Multi-Scale Gradients for Generative Adversarial Networks用於生成對抗網絡的多尺度梯度》,展示了一種使用單個端到端架構實現多尺度生成的有趣方法。

來自 Animesh Karnewar 和 Oliver Wang 的《Multi-Scale Gradients for Generative Adversarial Networks多尺度梯度用於生成對抗網絡》中避免逐步增長的技術。

受到 MSG-GAN 的啟發,StyleGAN2 的作者設計了一種新的架構,以利用多尺度的圖像生成,而無需明確要求模型這樣做。他們通過在低分辨率特徵圖和最終生成的圖像之間添加類似 ResNet 風格的跳躍連接來實現這一點。

StyleGAN2架構不使用progressive growing。

作者指出,與逐步增長類似,訓練的早期迭代更多地依賴於低頻/低分辨率尺度來生成最終輸出。下面的圖表顯示了每個特徵圖對最終輸出的貢獻程度,通過檢查跳躍連接的加法來計算。對這一點的檢查啟發了作者,使他們增加了網絡容量,以便1024x1024尺度對最終輸出做出更大的貢獻。

這裡是使用不同方法的性能改善。
Source (分數越小越好)

2.5 Large networks

在所有的變化之後,進行了進一步的分析,以了解細緻的解析度層對圖像生成的影響。該論文測量了不同模型層所貢獻的圖像變體。下面的左側圖表顯示了每個層的貢獻,水平軸是訓練進度。在開始時,低分辨率層應該佔主導地位。然而,隨著訓練迭代次數的增加,高解析度層的貢獻應該佔主導地位。特別是 1024 × 1024 層的高分辨率層的貢獻並不像應該的那樣多。據懷疑,這些層的容量不夠大。的確,當高分辨率層中的特徵圖數量加倍時,其影響顯著改善(右圖)。

Modified from source

--

--

Moris
Computer Vision Note

An AI engineer who loves deep learning technology and is willing to share resources and learn new technologies