首頁?學習  »   正文

用StyleGAN生成“權力的游戲”人物(上)

用StyleGAN生成“權力的游戲”人物(上)

本文目錄

  • 介紹

  • 生成式對抗網絡

  1. 生成器
  2. 鑒別器
  3. 本文小結

介紹

《權利的游戲》迎來了大結局,我斗膽在此問一下各位權游迷,你有沒有想過如果你最喜歡的電影或電視劇中的角色性別完全不同會是什么樣子?

用StyleGAN生成“權力的游戲”人物(上)

HBO電視劇《權力的游戲》中的詹姆·蘭尼斯特的性別轉變

 

不必驚訝!多虧了來自英偉達研究的尖端深度學習算法StyleGAN,你(是的,你!)也可以探索出一個充滿魅力的世界,一個生機勃勃、充滿敵意的維斯特洛。

StyleGAN還可以生成這樣令人毛骨悚然的微笑動畫:

用StyleGAN生成“權力的游戲”人物(上)

從單個圖像生成的微笑動畫

 

但是別著急。在神經網絡想象出Jon和Daenerys的孩子是什么樣子之前(我猜,劇透警告),我們需要退后一步,明確定義我們到底需要什么來確保我們不會這樣做:

用StyleGAN生成“權力的游戲”人物(上)

如果你讀過這篇文章,在生成的圖像上得到Jon Snow頭發的高斯曲率是目前最緊迫的問題,我將假設你至少知道卷積神經網絡是如何工作的。

因為這篇文章是關于StyleGAN的(以及弄清楚Jon和Daenerys的孩子會是什么樣子),所以我只提供了GAN框架的一個表面概述。

如果你想深入GAN領域,請查看Ian Goodfellow的NIPS 2016教程。這是學習GAN最好的資源之一,由GAN之父親自教授。

話說到這,讓我們開始吧。

生成式對抗網絡

大多數人喜歡用假幣制造者和警察的類比來解釋GANs。

然而,我不認為這是看待GANs最令人興奮的方式,尤其是如果你已經被灌輸了訓練神經網絡的狂熱中。

生成性對抗網絡最重要的部分,是生成圖像的東西。不出所料,這部分被稱為生成器。

1.生成器

生成器不是一個普通的神經網絡。

它使用一種特殊的層稱為轉置卷積層(有時錯誤地稱為反卷積)。

轉置卷積,有時也被正確地稱為分數階卷積(嘿,別問我為什么,我不是想出這些名字的人),這是一波優雅的操作,可以升級圖像。

要真正理解轉置卷積,以及為什么深度學習社區似乎不能為這個該死的東西定一個名字,我推薦閱讀?Naoki Shibuya關于這個主題的文章。

簡而言之,下面這個動畫總結了如何使用轉置卷積將2×2矩陣提升到5×5矩陣:

用StyleGAN生成“權力的游戲”人物(上)

帶濾波器尺寸3和跨距2的轉置卷積

 

同樣,我將跳過那些血淋淋的細節,所以如果你想深入了解,你也可以看看卷積算法指南。

因為這是一個深入的學習過程,我們必須充分利用所有的行話,使其最大限度地發揮潛力,以滿足潛在的投資者,我們全新的,在矩陣乘法將改變世界之前從未見過的,堆疊一堆這樣的層是有意義的,以獲得一個神經網絡,可以將圖像放大到相當大的尺寸。

因此,圖像生成器的最終架構如下所示:

用StyleGAN生成“權力的游戲”人物(上)

 

當然,如果不知道這些卷積濾波器的權重是多少,我們的生成器模型現在能做的就是輸出隨機噪聲。真糟糕。

我們現在需要的,除了一個充滿圖像的硬盤,還有一個丟失功能。

我們需要一些東西來告訴我們的生成器是錯是對,也就是一個老師。

用StyleGAN生成“權力的游戲”人物(上)

對于圖像分類,這種損失函數幾乎是數學之神賦予我們的。因為我們是成對的圖像和標簽,所以我們可以這樣做:

用StyleGAN生成“權力的游戲”人物(上)

當然,根據任務的不同,你可能想要使用交叉熵損失或者類似的東西。

但我離題了。重點是,標記數據允許我們構造一個可微分的損失函數,我們可以向下滑動(使用反向傳播和梯度下降)。

我們的生成器網絡也需要類似的東西。

理想情況下,適當的損失函數應該告訴我們生成的圖像有多真實。因為一旦我們有了這樣一個函數,我們就可以使用已知的方法(即反向傳播和梯度下降)使其最大化。

不幸的是,在對數和余弦看來,Sansa Stark和高斯噪聲幾乎是一樣的。

用StyleGAN生成“權力的游戲”人物(上)

在圖像分類的例子中,我們有一個清晰的損失數學方程,但是我們這里不能有類似的東西,因為數學不能構造一個可微分函數,它告訴我們生成的圖像是真實的還是假的。

讓我再說一遍:拍一張圖片,然后返回一個數字,上面寫著它是真的還是假的(“1”是真的,0”是假的)。

輸入:圖像。輸出:二進制值。

你明白了嗎?這不僅僅是一個損失函數,而是一個完整的神經網絡。

鑒別器

毫無疑問,區分真假圖像的模型被稱為鑒別器。

用StyleGAN生成“權力的游戲”人物(上)

鑒別器是一種卷積神經網絡,經過訓練它可以預測輸入圖像是真是假。如果認為圖像是真實的,則輸出“1”;如果認為圖像是假的,則輸出“0”。

因此,從生成器網絡的角度來看,鑒別器起著損耗函數的作用。

如果生成器更新參數的方式使其生成的圖像在通過鑒別器輸入時產生接近零的值,則生成的圖像看起來像三歲小孩在電視屏幕上擊打棒球的結果。

用StyleGAN生成“權力的游戲”人物(上)

最后,你的GAN應該是這樣的:

用StyleGAN生成“權力的游戲”人物(上)

本文小結:

總而言之,下面是創建基于GaN的圖像生成器的分步過程:

  1. 生成器(一個具有轉置卷積層的神經網絡)生成圖像,其中大部分看起來像垃圾。
  2. 鑒別器采取了一堆(或更準確,小批量)的圖像,其中一些是真實的(從大數據集),一些是假的(從生成器)。
  3. 鑒別器試圖執行二進制分類來預測哪些圖像是真實的(通過輸出“1”),哪些圖像是假的(通過輸出“0”)。在這一點上,鑒別器和提利昂·蘭尼斯特的弓箭一樣精確。
  4. 鑒別器更新它的參數,以便更好地對圖像進行分類。
  5. 生成器使用鑒別器作為一個丟失函數,并相應地更新其參數,以便更好地生成看起來足夠逼真的圖像來欺騙鑒別器(即使鑒別器輸出數字接近“0”)。
  6. 游戲繼續進行,直到生成器和鑒別器都達到平衡點,鑒別器再也無法區分生成器創建的圖像和來自數據集的圖像。
  7. 優雅地扔掉鑒別器,瞧,你現在有了一個生成圖像的生成器,其中大部分可能看起來不像垃圾。

好了,今天我先寫到這里,在下一篇里我們繼續聊聊StyleGAN以及如何塑造你最喜歡的權游角色。

 

 

歡迎關注ATYUN官方公眾號,商務合作及內容投稿請聯系郵箱:[email protected]

發表評論