1. StyleGAN網絡
1.1 基本介紹
????該網絡由NVIDIA提出于2018.11,同時發表了文章A Style-Based Generator Architecture for Generative Adversarial Networks,主要改進了ProGAN的生成器部分.映射網絡的目標是將輸入向量編碼為中間,不同元素控制視覺特征。映射網絡由8個全連接層組成,它的輸出 ?(512*18),輸入Z為(512×1).
1.2 特征組成
???? ?(512*18)分別代表著18個維度不同的人臉特征,1-4一般代表人臉的姿態、發型、面部形狀等;5-8一般代表更為細致的特征;9-10主要是顏色部分;具體不一部分影響的細節可以參考NVIDIA給出的視頻介紹
上面的latent codeZ為(5121),w為取18維的原因如下:右圖中展現的4×4圖像到8×8圖像的過程,可見在每一個小方格中,w需要提供兩個A作為Style輸入到AdaIN中,從4×4一步步演進到1024×1024需要9次,則2×9=18。
???? Const為常量輸入,作者通過實驗證明,常量的輸入對模型影響不大,圖像的生成主要由W和AdaIN進行控制。“the network no longer benefits from feeding the latent code into the first convolution layer. ”B作為噪聲輸入網絡,進一步提升網絡的表現。
AdaIN將輸入的X進行歸一化,并且結合當層輸入的Style,在公式上解釋如何將18層不同的Style加入到生成圖像的過程。
2. StyleGAN-Encoder
2.1 使用Encoder的原因
????StyleGAN網絡只能接受隨機向量(Lantent z)進行人臉的生成,為了使StyleGAN可以使用我們現實中拍攝的圖像,所以需要StyleGAN Encoder將圖像編碼為StyleGAN可以識別的編碼。
????Encoder部分本質上為Resnet網絡,整體思路如下:利用generator這一特性給Resnet提供數據源,標簽為之前輸入Generator的隨機向量。完成訓練之后,該Resnet可以提取真實照片特征,也就是對真實數據映射到StyleGAN的編碼器。但是,為了使得每次編碼器都能輸入StyleGAN后得到同一人像的輸出,在實際生成是還需要添加幾次的訓練微調過程,在這里會花費相當多的時間。
3. StyleGAN 實例測試
3.1隨機人像生成
????該網絡可對人像進行隨機生成,在實際功能驗證中隨機生成了500個人臉。在生成的全過程,我們只需要對該網絡提供隨機數即可。具體生成情況見下圖:????生成500個人臉花費時間沒有具體度量,大概在幾分鐘左右(GPU 1060 6G,<5mins)。圖像數據結果較佳,在對圖像進行細看時,發現偶有圖像成像效果一般,例如嚴重的兔唇,或者臉部空洞,若是想直接進行大規模使用,還應進行篩選(會生成較為惡心的恐怖人臉,這里就不放出來了)。生成的圖像尺寸皆為1024*1024。
????后期再生成:StyleGAN網絡的人臉生成完全依賴于外部隨機向量的輸入,也就是說只要輸入同樣的隨機向量于StyleGAN網絡中,生成的人臉圖像完全一致。計算機隨機數的生成依賴隨機種子(Seed)的選取,選擇同樣的隨機種子便代表同一人臉的再次生成。
3.2人臉A與B的融合
????下面展示兩張同學的照片,從采集得到的原圖到融合的全部過程:
-
原圖:可見兩張圖像的尺寸并不一樣,首先便需要將兩張圖像的人臉部分檢測出來,之后對圖像進行剪裁為StyleGAN適用的1024*1024的尺寸raw
-
人臉剪裁:使用基于python的Dlib庫對人臉進行檢測,該庫可以檢測人臉68或者更多的特征點。Dlib完全開源,并提供訓練好的模型予以使用。一般來說Dlib對人臉的檢測效果要優于OpenCV。人臉檢測剪裁后的尺寸為(1024*1024):aligned
-
StyleGAN網絡圖像生成:StyleGAN只能依賴隨機向量生成人臉圖像,所以此生成過程不可控。依靠StyleGAN無法生成我們想讓網絡進行融合演進的圖像,原因是我們無法給網絡提供上述圖像對應的且被StyleGAN識別的特征向量。解決方案為對StyleGAN添加RensNet對我們的圖像進行編碼,具體過程見理論部分。生成結果見下圖:
generated 需要注意的是,上圖雖然和我們提供的照片比較相似,但是他完全由StyleGAN網絡生成,我們只給他提供了一個ResNet網絡輸出的多維向量。網絡依照特征向量(encode)生成圖像,生成的人物與原圖人物接近。仔細分辨發現多余的頭發絲會被處理,皮膚會更為平滑美白,衣物基本不變,背景會被模糊。
-
將上述二人進行圖像融合(上方的人臉稱為A,左下方的人臉稱為B,融合人臉稱為C):可見,融合的結果基本采用A人臉的年齡、性別、姿態、發型、衣物形狀,采用B人物的膚色、發色、衣物顏色、眼睛形狀、背景樣式等信息。R-X-mixing
3.3人臉的年齡與性別的變化
????提取人物年齡和性別的變化特征矩陣,使用上述矩陣的影響可對人物的年齡、性別、笑容等多維度進行自定義變換。
????具體細節可以參考Encoder代碼
3.4其他圖像數據的生成
????在數據集條件支持的情況下,可以進行車輛、居室、動物等等圖像的生成。具體細節可以參考論文最后一小節和源代碼:
????
參考文獻
- [1]. Springenberg, J.T., et al., Striving for Simplicity: The All Convolutional Net. 2014.
- [2]. Karras, T., et al., Progressive Growing of GANs for Improved Quality, Stability, and Variation. 2017.
- [3]. Goodfellow, I.J., Generative Adversarial Nets.
- [4]. Karras, T., S. Laine and T. Aila, A Style-Based Generator Architecture for Generative Adversarial Networks. 2018.
- [5]. http://www.gwylab.com/note-gans.html(北郵計算機視覺實驗室)
最后:
- 第二次寫博客,歡迎大家建議指正 0.0
- 禁止轉載!!! 謝謝~