StyleGAN3

Alias-Free Generative Adversarial Networks

Moris
Computer Vision Note
14 min readMar 18, 2024

--

由StyleGAN3-T生成的海灘圖像

StyleGAN3的論文相當難以理解。在這篇文章中,我盡我所能地重新組織並逐步解釋它。

希望您閱讀後能對此有更深的理解。

如果你想要了解StyleGAN、StyleGAN2、StyleGAN2-ADA以及StyleGAN3之間的差異與進化,你可以閱讀以下的文章。

StyleGAN vs StyleGAN2 vs StyleGAN2-ADA vs StyleGAN3

Table of Contents

  • Introduction
  • Texture Sticking Problem
  • Reason: Positional References
  • Goal
  • Discrete vs Continuous Domain
  • Redesigning Network Layers
  • Changes
  • Results
  • References

1. Introduction

StyleGAN3的目的是解決在StyleGAN2中發生的“紋理粘滯”問題,這在變形過渡(例如,從一張臉變形為另一張臉)中出現。

換句話說,StyleGAN3試圖使過渡動畫更加自然。

2. Texture Sticking Problem

StyleGAN2的貼鬍子問題(左側)
StyleGAN2的貼髮問題(左側)

從上面的動畫中可以看出,當進行變形時,StyleGAN2生成的鬍子和頭髮(左側)看起來像是貼在屏幕上,而StyleGAN3生成的(右側)則沒有這種黏著像素的問題。

從中心潛在空間周圍的小鄰域生成的圖像的平均值(底部)

在StyleGAN2中,圖像的平均值很銳利,因為許多細節(例如,毛皮)都黏在相同的像素坐標上,而預期的結果應該是均勻模糊的,因為所有細節在變形時應該一起移動。

我們從潛在插值生成的每個圖像中提取一個短的垂直像素段(頂部),並將它們水平堆疊(底部)。

同樣,期望的結果是毛髮在動畫中移動(右側),而不是黏在相同的坐標上(左側)。

3. Reason: Positional References

事實證明,中間層存在一些非意圖的positional reference,供網絡通過以下來源處理特徵圖:

  • Image borders
  • Per-pixel noise inputs
  • Positional encodings
  • Aliasing

這些positional reference使得網絡生成的像素黏在相同的坐標上。

其中,Aliasing混疊是最難識別和修復的。

3.1 Aliasing

Aliasing混疊是一種效應,當信號進行抽樣時,會導致不同的信號變得無法區分(或成為彼此的混疊)。

它也經常指的是從樣本重建的信號與原始連續信號不同時產生的失真或人工效應。

抽樣正弦波信號時的混疊。

例如,當我們對高頻信號(例如藍色正弦波)進行抽樣時,如果結果是一個低頻信號(紅色波),那麼這就被稱為混疊,因為它與原始信號完全不同。這是因為抽樣率太低所導致的。

電腦圖形中的混疊(右),來源:https://en.wikipedia.org/wiki/Aliasing

研究人員已經識別出GAN中的兩個混疊來源:

  1. 非理想的上採樣濾波器(例如,最近鄰、雙線性或步幅卷積)產生的像素網格的微弱殘影。
  2. 非線性的逐點應用(例如ReLU或swish)。

即使有少量的混疊,它也會在整個網絡中放大,並成為屏幕坐標中的固定位置。

4. Goal

目標是消除所有位置參考的來源。在那之後,圖像的細節可以被生成得均勻,無論像素坐標如何。

為了消除位置參考,該論文提出使網絡具有等變性

考慮一個操作f(例如卷積、上採樣、ReLU等)和一個空間變換t(例如平移、旋轉)。

如果t ○ f = f ○ t,則f對於t是等變的。

換句話說,一個操作(例如,ReLU)不應該插入任何會影響變換過程的位置codes/references,反之亦然。

4.1 Limitation of Discrete Domain

然而,在傳統的神經網絡層中實現這一點非常困難,因為它們在離散域(例如,像素)中運作。

在離散域(像素)中經過ReLU操作後的特徵圖,來源:CNN-Explainer

這些離散特徵圖可以被視為它們底層連續特徵圖的抽樣結果(這些連續特徵圖只是想像中的,因為它們實際上並不存在。我們可以將其想像為離散特徵圖變成無限高分辨率,就像一個連續信號)。

底層的連續信號就像是離散信號的無限高分辨率版本,我們可以將離散信號視為從這個想像中的連續信號中取樣的結果。

因此,事實證明整個傳統網絡是在這些不忠實的抽樣離散特徵圖上運作,從而在整個網絡中引入嚴重的混疊。

Switch to Continuous Domain

因此,我們希望將網絡中的所有操作從離散域轉換為連續域。為了實現這一目標,我們必須重新設計所有操作層:

  • Convolution
  • Upsampling/Downsampling
  • Nonlinearity (e.g. ReLU)

5. Discrete vs Continuous Domain

現在,我們知道傳統神經網絡在離散抽樣的特徵圖上操作。

在我們討論如何重新設計網絡層之前,讓我們先看看如何在離散信號和連續信號之間進行轉換。

離散與連續特徵圖

5.1 Conversion Between Discrete and Continuous

連續信號與離散信號之間的轉換

Φₛ:低通濾波器,用於去除可能導致混疊的問題頻率。

IIIₛ:一系列無限的Dirac δ(德拉克)函數,間隔均勻。將Dirac組合應用在z上就意味著從z中採樣並獲得離散化的特徵圖Z。

5.2 Continuous to Discrete

2D Dirac comb 函數
將連續信號轉換為離散信號

將連續信號轉換為離散信號是相當簡單的。我們只需要使用Dirac組合IIIₛ從z中進行抽樣。其中⊙表示逐點乘法。

5.3 Discrete to Continuous

將離散信號轉換為連續信號有些複雜。

Whittaker-Shannon 插值公式聲明,對應的連續表示z通過將離散抽樣的Dirac網格Z與一個理想的插值(低通)濾波器Φₛ進行卷積而獲得,其中s是抽樣率。

即 z(x) = (Φₛ * Z)(x),其中 * 表示連續卷積。

在解釋低通濾波器之前,讓我們看看如何將連續信號分解為不同頻率的正弦波。

Decomposing Signals

一個複雜的連續信號實際上是多個正弦波的混合。我們可以使用Fourier Transform將其分解,以揭示這些不同頻率的正弦波。

使用傅立葉變換將信號分解為多個正弦波,來源:https://en.wikipedia.org/wiki/Fourier_transform

Low-pass filter

低通濾波器是一種允許低頻信號(即這些分解的正弦波)通過的濾波器,並且減弱或甚至停止高頻信號通過。

使用低通濾波器抑制高頻信號的頻率域圖。

Convolution with Low-pass Filter

理想插值(低通)濾波器,其中 sinc(x) = sin(πx)/(πx)
將離散信號轉換為連續信號

通過使用低通濾波器Φₛ對離散的Dirac網格Z進行卷積,我們可以將離散信號Z轉換為連續信號z。

Sampling Rate

根據Nyquist-Shannon sampling定理,如果採樣率=s,則所有頻率低於s/2的頻率不會出現混疊。

由於Φₛ在水平和垂直維度上的帶限是s/2,它確保了生成的連續信號捕獲了所有可以用採樣率s表示的頻率。

6. Redesigning Network Layers

實際的神經網絡是在離散抽樣的特徵圖上運行的。

讓我們將 F 表示為一個操作(例如卷積、上採樣/下採樣、非線性等)在離散特徵圖 Z 上的操作:Z’ = F(Z)

也會有一個相應的連續對應特徵圖 z,因此我們在連續域中有一個相應的映射 f:z’ = f(z)。

因此,指定的一個域中的操作可以被視為在另一個域中執行相應的操作:

等式1:離散和連續操作,其中s和s’分別是輸入和輸出的採樣率。

6.1 Convolution Layer

考慮一個具有離散核K和採樣率s的標準卷積。 離散域卷積簡單地是 F_conv(Z)=K*Z。 我們可以從等式1中獲得連續域卷積

離散域與連續域卷積

事實證明,卷積是通過將離散化的核 K特徵圖 z 的連續表示上連續滑動來執行的。

這種卷積不會引入新的頻率,因此對於平移和旋轉等變換的帶限要求可以輕鬆滿足。
(注意:如果操作引入了新的頻率,則低通濾波器的採樣率可能需要調整,以確保
最高頻率 < s/2,以避免混疊)

6.2 Upsampling

離散域與連續域上採樣

理想上採樣不會修改連續表示(即f_up(z)=z),因為連續信號已經具有最精細的細節。因此,在連續域中直接實現了平移和旋轉等變換的等變性

然後,我們可以從等式1中獲得離散域上採樣。通過選擇s’=ns,其中n是一個整數,我們可以將特徵圖上採樣n倍(例如,n=2表示在每個維度上將特徵圖上採樣2倍)。

6.3 Downsampling

離散域與連續域下採樣

在連續域中,ψₛ:= s² · Φₛ 簡單地是被歸一化為單位質量的插值濾波器。它作為一個低通濾波器,用於去除輸出帶限以上的頻率(以避免混疊),以便信號可以在更粗糙的離散化中被忠實地表示。

然後,我們可以從等式1中獲得離散域下採樣。與上採樣類似,通過一個離散卷積,然後丟棄樣本點,可以實現對整數分數的下採樣,即ns’=s。

平移等變性自動遵循f_down(z)與平移的可交換性。然而,對於旋轉等變性,我們必須將Φₛ’替換為具有圓形對稱濾波器的濾波器,其頻率響應呈圓盤形狀。

6.4 Nonlinearity

離散域與連續域非線性

在連續域中,非線性層(如ReLU)可能會引入無法在輸出中表示的任意高頻率(混疊)。

解決方法是通過將連續結果與理想低通濾波器 ψₛ:= s² · Φₛ 進行卷積來消除有害的高頻內容。然後,我們就有了我們的連續域非線性函數。

在連續域中,任何逐點函數都與平移和旋轉(等變性)無關。

然後,我們可以從等式1中獲得離散域非線性。

在離散域中,我們發現只需要將臨時解析度增加2倍就足以實現高質量的等變性。對於旋轉等變性,我們必須在下採樣步驟中使用具有圓形對稱插值濾波器。

過濾後的非線性可視化

上面的圖表是過濾後非線性的可視化。

  • Top row: 連續信號
  • Middle row: 從連續信號中抽樣
  • Bottom row: 從離散信號中重建

Left column: z是理想信號。由於採樣率足夠高以捕獲信號,因此不會出現混疊。

Middle column: σ(z)表示對z應用逐點非線性(例如ReLU)。由於剪切所產生的高頻率無法被樣本網格表示,因此會出現混疊。

Right column: 對非線性應用低通濾波器導致忠實的重建,並且不會出現混疊。

7. Changes

StyleGAN3 架構
  1. 用傅立葉特徵取代 StyleGAN2 中學習的輸入常數,以促進 z 的精確連續平移和旋轉。
  2. 移除每像素噪聲輸入,以消除它們引入的位置參考。
  3. 減少映射網絡深度以簡化設置。
  4. 消除輸出跳過連接(這是用來處理梯度消失問題的。我們通過在每次卷積之前使用簡單的歸一化來解決這個問題,即除以EMA:指數移動平均)
  5. 在目標畫布周圍保持固定大小的邊距,在每層後剪裁到這個擴展畫布(為了將絕對圖像坐標洩漏到內部表示,因為畫布外部的信號也很重要)。
  6. 用理想低通濾波器的更好近似來替換雙線性2×上取樣濾波器。
  7. 受我們的理論模型的激勵,我們將 leaky ReLU 包裹在 m×上取樣和 m×下取樣之間。(我們可以將之前的2×上取樣與這個 m×上取樣融合,即選擇 m=2,然後我們在每個 leaky ReLU 前有4×的上取樣)

7.1 Translation Equivariance (Config T)

在先前的配置(配置 G)中,我們將截止頻率設為 f_c = s/2-f_h,這確保所有別名頻率(上述 s/2)都在停帶(即被移除)中,以抑制混疊。

在配置 G 中,我們選擇降低所有層的 f_c,除了最高解析度的層,因為最終生成器必須能夠產生清晰(詳細/銳利)的圖像以匹配訓練數據。

平移等變性的可視化(左:輸入平移 t,中:輸入平移 t + 輸出平移 -t,右:錯誤)

我們的改變已經顯著提高了等變性的質量,但仍然存在一些可見的人工產品。為了進一步抑制混疊,我們需要在最低解析度層中增強衰減。

配置 T:靈活的層規格(c)

配置 T:靈活的層規格(c)

特別地,我們希望在最低解析度的層中,f_h 高以最大化停帶中的衰減,但在最高解析度的層中,我們希望 f_h 低以允許匹配訓練數據的高頻細節。

記住 f_c = s/2-f_h.

逐漸降低的 f_h 改善了平移等變性,消除了剩餘的瑕疵。

7.2 Rotation Equivariance (Config R)

我們通過兩個改變獲得了網絡的旋轉等變性版本:

  1. 在所有層上將3×3的卷積替換為1×1,並通過加倍特徵圖的數量來補償減少的容量。
  2. 將 sinc-based 下取樣濾波器替換為輻射對稱的 jinc-based 濾波器。

Visualization of rotation equivariance (left: input rotated by r, middle: input rotated by r + output rotated by -r, right: Error)

旋轉等變性的可視化(左:輸入旋轉 r,中:輸入旋轉 r + 輸出旋轉 -r,右:錯誤)

8. Results

無混疊的平移等變性(中間)和旋轉等變性(底部)網絡以一種徹底不同的方式構建圖像,似乎是多尺度相位信號,跟隨最終圖像中看到的特徵。

在內部表示中,看起來像是正在創造一個新的座標系統,並在這些表面上繪製細節。

StyleGAN3 results

References

[1] T. Karras et al., “Alias-Free Generative Adversarial Networks”, arXiv.org, 2022. https://arxiv.org/abs/2106.12423

[2] “Aliasing — Wikipedia”, En.wikipedia.org, 2022. https://en.wikipedia.org/wiki/Aliasing

[3] J. Wang et al., “CNN Explainer”, Poloclub.github.io, 2022. https://poloclub.github.io/cnn-explainer

[4] “Fourier transform — Wikipedia”, En.wikipedia.org, 2022. https://en.wikipedia.org/wiki/Fourier_transform

[5] StyleGAN3 Clearly Explained!

--

--

Moris
Computer Vision Note

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