StyleGan


雖然很多人寫過關於StyleGan的帖子,為了加深自己的理解,決定再啰嗦一遍。

StyleGan生成器

這部分用來介紹StyleGan生成器網絡結構圖。示意圖如下

(1)傳統的Gan生成器,由latent code 作為輸入,生成圖片。而StyleGan卻是由一個常量通過生成網絡生成圖片的。而在StyleGan中latent code 經過一個多層感知器MLP,將隱特征空間Z映射到另一個隱特征空間W,\(f: Z -> W\),后續部分將會介紹這樣做,可以實現latent code盡可能地特征解耦合,從而實現不同粗細力度圖片生成和圖片不同屬性的生成。

(2)生成網絡結構中,共計包括\(4^2 - 1024^2\)共計9個不同分辨率模塊。除了最開始\(4^2\)模塊,只有一個conv層,其他分辨率的都是有2個conv層,每個conv層之后,都加入隨機噪聲,當然是經過學習后的尺度因子映射B后的再相加的。

(3)上述(1)中提到的原始latent code經過映射后得到的中間層latent code,實際就是從訓練集中學習到的圖片中間層隱空間分布一個實例。經過學習到的仿射變換和自適應實例正則化AdaIN,將學習到的風格Style傳遞下去。

(4)文中提到了style一詞,這個是從style transfer相關論文延續下來的,不過StyleGan中並不是從原始圖片中計算style而是,而是從中間w計算出來的空間不變的style:y

(5)stylegan中一個重要的操作是AdaIN,是實例正則化操作,有別於BN,只針對單個樣本進行處理。設\(x_i\)為第i個特征圖,\(y=(y_s,y_b)\)是計算得到的style。這個操作也是逐通道處理的,因此y特征維度是x特征圖通道數的2倍。
image

image

(在寫這個帖子前,我不看論文畫出StyleGan的網絡結構示意圖,我試了一下,畫不出來。這也是我花時間寫這些的意義所在。你以為你很懂了,其實可能還差很多。)

3. StyleGan生成器特點

StyleGan網絡結構由左側的映射網絡mapping network和右側的合成網絡systhesis network構成,左側mapping network和仿射變換A 相當於為學習過的分布中的每一種style 取樣;而右側的systhesis network相當於可以為學習過的各種styles生成圖像。The effects of each style are localied in the network. 這句話該如何理解?根據文中表述和下面解釋,每個style產生的影響只是影響圖像中的某些方面。我想補充的是,其實從\(4^2 - 1024^2\)從低分辨率到高分辨率過程中,每個style都產生影響,后面的style產生的影響是在前面的基礎上,繼承前style的特點,不會大范圍的改變,而是小范圍的局部的改變。比如前面style已經確定了生成人物圖片ID,頭部姿態,那么后面的style基本不會改變這些,而是影響人物的發型,是否佩戴眼鏡,表情等。

為什么會產生這種效果呢?因為采用AdaIN操作,該操作是對特征圖逐通道減均值,除以方差,然后應用當前style的scale & bias,每此conv操作之后都進行該項操作。從\(4^2 - 1024^2\)從低分辨率到高分辨率過程中,每個分辨率都包括2個AdaIN操作,消除了部分原始統計特征,因此每個style就影響當前模塊,表現在圖像中就是影響局部特征或某些方面屬性。

3.1 style mixing

style mixing 是指在訓練過程中不再是使用一個latentcode而是使用多個latent code生成圖片。比如latent code \(z_1, z_2\)生成中間latent code\(w_1,w_2\),為了合成新的圖片是混合着使用\(w_1,w_2\),對比着StyleGan 合成網絡結構,在一些節點使用\(w_1\),而剩余的使用\(w_2\)。這樣做的目的是為了防止前后style產生依賴關系,亦是增強style的local特點。

文中Fig3展示了style混合的特點,而且從圖片中也可以看出在不同尺度的style改變,對圖片不同屬性的影響。如下圖所示,第一列代表Source A,第1行代表Source B。不管是A還是B都是由不同的latent code生成的。圖片中剩余的混合使用組合Source A和Source B對於latent code生成的中間latent code w得到。

圖片中第2行-第4行是在尺度\(4^2-8^2\)使用Source B對應w,剩余的是使用SourceA對應的w;圖片中第5行-第6行是在度\(16^2-32^2\)使用Source B對應w,剩余的是使用SourceA對應的w;圖片中第7行是在度\(64^2-1024^2\)使用Source B對應w,剩余的是使用SourceA對應的w;

首先從\(4^2-1024^2\)過程中,可以看着生成圖片是由粗力度到細力度,從圖片中可以看出來。\(64^2-1024^2\)這部分使用SourceB部分,但是生成的圖片改變較少,主要圖片的顏色和微小細節。而在\(4^2-8^2\)這部分,使用Source B的style,則人物的角度姿態、臉型、性別、年齡、眼鏡等特征發生了改變與Source B]保持一致,但是膚色卻沒有改變。

image

隨機變化

首先人的頭發位置、毛孔、雀斑位置等這些都是隨機,所以在生成人物圖像的這些屬性也應該具有隨機性,只要其分別符合真實的分布。傳統的生成器,是在網絡中生成位置無關的偽隨機數,生成的方式來自之前層的激活值。但是這種方式經常失效,會在圖片中出現重復的模式。而StyleGan這種方式則極大改善了這個問題。

下圖Fig4展示了加入隨機噪音主要產生發型位置微小的改變。通過(c)標准方差圖可以看到臉部較暗(基本沒有變化),頭發部分較亮(變化的就是頭發區域),即使是這些也是微小的變化,沒有引起圖片感知上的很大變化。

下圖Fig5則展示在不同尺度上加入隨機噪音,對圖片內容產生的影響。(a)是在各個尺度上都加入噪聲,(b)是一點噪聲都沒有加,(c)是在\(64^2-1024^2\)尺度上加,(d)是在\(4^2-8^2\)尺度上添加。可以明顯看到沒有加入任何噪音的,丟失了更細節的信息,而僅在粗力度尺度上加入噪聲,則產生更大更粗的發卷,而在細力度尺度上則產生的是更細小更密集的發卷。而全尺度上則是介於中間。這幅圖片也進一步驗證了從\(4^2-1024^2\)過程中,將產生由粗到細的改變。粗的可能是臉型、頭部姿態、性別等,細的可能是發型、頭發位置等。
image
image

Disentanglement studies

解耦學習的目的是學習的特征空間線性可分,可以由多個線性對的子空間構成。每個線性子空間控制變化的一個方面。
為了比較解耦效果,需要一種度量方式來衡量。本文介紹了兩種,一個是感知路徑,一個

感知路徑

那什么是解耦效果好壞呢?假設z1,z2是隱特征空間中任意兩個latentcode,分別生成兩張圖片,如果對這兩個
latent code進行線性插值生成z,如果由該latent code生成的圖像,和之前兩張圖像有很大差異,出現了之前兩張圖像沒有呈現出的圖像特征。如果發生了這種情況,則表明隱特征空間是耦合的,變化的影響因素沒有合適的拆分。為了量化這種影響,通過測量插值后圖像的變化差異來衡量。

一種基本的方法是感知路徑,通過測試兩張圖片特征之間的加權插值來衡量,權重是通過擬合人的感知而獲得到。
而衡量隱特征空間的解耦合程度,是將特征空間拆分成多個子空間,累加子空間感知路徑,求其極限作為特征空間感知
路徑值。然后實際上操作很困難,於是通過隨機取特征空間中任意兩個latentcode,按t取插值z,再按t+epsion取插值,然后求由這兩個插值latent生成圖像的感知路徑的期望。數學公式表達如下:

\(l_z = E[\frac{1}{{\epsilon}^2}d(G(slerp(z_1,z_2,t)), G(slerp(z_1,z_2,t+\epsilon)))]\)

其中slerp為球面插值,因為z向量都是單位長度。而中間隱特征空間W,是經過network mapping映射得到的,中間層特征向量w不一定是單位長度,因此衡量中間層隱特征空間的解耦程度,就不能使用球面插值,只能采用常用的線性插值。

\(l_w = E[\frac{1}{{\epsilon}^2}d(G(lerp(w_1,w_2,t)), G(lerp(w_1,w_2,t+\epsilon)))]\)

Linear Seperability

隱特征空間線性可分,則可以找到一個線性超平面可以將隱空間分成兩個部分,分屬兩側則對應圖像的二值屬性。使用Celeba-HQ屬性數據集訓練屬性分類器,比如性別分類。 隨機取\(z ~ P(z)\)生成20000張圖片,然后用訓練好的屬性分類器對生成的圖片進行屬性預測,選擇性別置信度最高的一半樣本即10000張圖片。這樣就得到了10000組(z,label_gender),然后訓練出一個SVM。設X為屬性分類器預測的屬性類別X,Y是SVM預測的屬性類別Y,定義條件熵H(X|Y)。該條件熵說明,在知道當前樣本位於SVM超平面哪一側的情況下,還需要多少額外條件,才能確定當前樣本真實類別(Y)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM