search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

十個生成模型(GANs)的最佳案例和原理 | 代碼+論文

王小新 編譯
原文作者:Sumeet Agrawal
量子位 出品 | 公眾號 QbitAI

生成對抗網路(GANs)是一種能「教會」計算機勝任人類工作的有趣方法。一個好的對手能讓你成長更快,而GANs背後就是「從競爭中學習」的思路。

GANs最先是由蒙特利爾大學的Ian Goodfellow提出,已在圖像生成和風格遷移等領域獲得了巨大的成功,充分展示了「無監督學習」技術的潛力。

GANs是如何工作的?

GAN結構示意圖

一個GAN中包含兩個相互競爭的神經網路模型。一個網路稱為生成器(generator),能將雜訊作為輸入並生成樣本;另一個網路稱為鑒別器(discriminator),能接收生成器數據和真實訓練數據,訓練得到能正確區分數據類型的分類器。

這兩個網路互相對抗。其中,生成器通過學習來產生更逼近真實數據的新樣本,用於愚弄鑒別器,反之鑒別器也需要更好地區分生成數據與真實數據。

將這兩個網路聯合訓練,經過大量回合「交鋒」后,鑒別器將無法區分生成樣本和實際數據。做個比喻,生成器就像是想製作一些高仿品的生產商,而鑒別器就像是試圖檢測出這些仿製品的警察。

由於整個過程是自動完成的,僅受限於實際的計算能力,因此GANs可用來實現一些很有趣的功能。

以下是一些用GANs完成的酷炫應用。

1、讓機器擁有想象力

神經網路對於物體的本質是怎麼「想」的?

為了搞懂這個問題,谷歌大腦的研究人員使用GAN,讓神經網路的「想法」呈現在你的眼前。當然,這些「想法」看起來十分迷幻。

其實這原本是一個圖像分類器,而生成的迷幻圖片,是故意對圖像進行過度處理的副產品。現在這套系統有個單獨的名字:「深夢(Deep Dream)」。

Deep Dream模型利用普通照片生成的一張奇幻照片

Deep Dream模型將塔樓、房屋和小鳥等對象融入圖像中的效果示例

想要運行Deep Dream模型,你只需要輸入一張圖像,然後這個模型就開始窮盡所能,尋找被訓練識別的目標。在一張完全不相關的圖像中,神經網路可能會發現一些與狗、房子、水母等物體的相似之處。

就好像你看到雲朵會產生聯想一樣,Deep Dream模型會放大它找到的相似之處。

舉個例子,當你運行這個辨識網路時,它指出某張圖是狗的可能性為40%,然後開始修改輸入圖像,使得這張圖為狗的可能性增加到60%。並不斷重複這個過程,直到輸入圖像明顯地轉化成一張看起來像狗的圖像。

按照這種方式,通過將圖像逐漸轉化為的另一種物體,這個神經網路就把自己的「想象」,展現在你的面前。

谷歌提出的Deep Dream模型將傳統的思路(即給定相同輸入只產生一種輸出的想法),改變為不斷修改輸入來獲取最佳輸出。

更多信息

博客:

代碼:

2、能模仿人的智能體

這是通過GANs實現模仿學習。不同於傳統的獎勵機制,某些AI研究人員希望針對自主學習智能體,提出一種全新的方法。

他們將實際的示範數據輸入到智能體,然後智能體從中學習並嘗試模仿相同的動作。

一個小人試圖模仿人類來自學跑步

在這個模型中,Jonathan Ho和Stefano Ermon提出了一種模仿學習的新方法。一般來說,強化學習通常需要設計一個衡量智能體運動行為的獎勵機制。但是,在實際中,可能要經歷成本昂貴的試錯過程,才能得到合理的前進表現。

然而,在模仿學習中,智能體從示範數據(機器人的遠程操作或是人類行為)中學習,消除了設計獎勵機制的要求。關於強化學習在這方面的最新研究可移步量子位編譯過的「DeepMind智能體自學跑酷:略顯智障,結果尚好」。

更多信息

博客:

代碼:

3、指馬為斑馬

用圖像生成圖像,這也是生成網路的一個有趣應用。在實驗中,研究人員能夠更改視頻中的動物種類、圖片中的季節類型或是其他類似任務。

這項任務的目標是通過一系列配對圖像的訓練集,學習從輸入圖像到輸出圖像的映射關係。然而,在大多數情況下,不容易獲得所需的配對訓練數據。

為了克服這個問題,引入了兩個逆映射,使得每個映射的輸出與另一個映射的輸入相同,從而可利用少量數據來建立一個圖像間儘可能完整的映射關係(即無監督學習)。

關於這方面工作的詳細解讀可移步量子位編譯過的「帶你理解CycleGAN,並用TensorFlow輕鬆實現」。

以下是這項研究工作的一些實例。

通過檢測視頻中正在移動中的野馬並把斑馬條紋疊加上去,可將野馬轉換成斑馬。

改變圖像中的季節,如把優勝美地的冬天變成夏天,把冬天變成春天,反之亦可。

更多信息

首頁:

代碼:

4、給草圖上色

這項任務可根據物體輪廓生成逼真圖像。在現實中,圖像處理是一項具有挑戰性的工作,因為它需要以一種用戶可控的方式來修改圖像外觀,同時保留結果的逼真程度。這需要一定的技巧,一個藝術家可能需要苦練多年才能達到這一高度。

GANs可利用物體輪廓生成逼真圖像

研究人員構建了一個模型,在給定物體輪廓后,它能夠識別這個物體並生成該物體的逼真圖像。

然而,在伯克利大學的一篇論文中,作者Jun-Yan Zhu提出了一種利用生成對抗網路直接從數據中學習自然圖像流形的方法。該模型能自動調整輸出以保持所有編輯儘可能地逼真,以及所有操作都是用約束優化來表示的,處理過程近乎實時。

所提出的這種方法可進一步用於圖像生成研究,或是基於個人塗鴉完整地產生新奇圖像的研究中。

更多信息

論文:

代碼:

首頁:

https://people.eecs.berkeley.edu/~junyanz/projects/gvm/

5、僅根據文本描述來生成圖像

能否僅根據文本來自動生成逼真圖像?這聽起來就十分有趣。

最近,研究人員提出了一種深度卷積生成對抗網路(Deep convolutional generative adversarial networks),可以產生一些高度逼真的圖像,但是目前僅針對特定類別,如人臉、唱片封面和房間內飾。

該模型的訓練數據為一些文本描述及其對應圖像的樣本集。當給出任何物體描述時,這個模型會嘗試根據描述來生成圖像。

該模型能根據詳細的文字描述來生成似乎合理的花鳥圖像。

在這項工作中,所構建的模型首先獲取關於圖像合成的文本描述,其次學習捕捉文本中描述重要視覺信息的特徵,然後使用這些特徵來合成出能愚弄人的逼真圖像。

更多信息

論文:

代碼:

6、通過「好奇心」驅動學習

「好奇心」機制推動了對深層神經網路的探索。在許多現實場景中,對操作者的外部獎勵是非常稀疏的或幾乎不存在的。因此,由於這種內在特性,操作者處於被動狀態,很難進行進化和學習。

在這種情況下,好奇心可以作為一種內在的獎勵信號,讓操作者去探索未知的新環境,學習一些在以後生活中可能有用的技能。在這些情況下,主動學習者的效果遠遠好於被動學習者。

在這個模型中,我們將操作者預測自身行為可能導致後果的能力,即預測值和真實值之間的誤差稱為好奇心(Curiosity)。當然,在此空間中,機器人也可通過程序員建立的獎勵機制來學習。

我們可將這個模型類比為小孩的認知過程。如果父母不告訴這個小孩,他並不知道他碰到一個熱火爐後會發生什麼,但是一旦他這麼做了,他就學會下次不這麼做,因為觸摸到爐子后,他會感到十分疼痛,這就存在前後的因果關係。

「好奇心」機制推動他去探索,同時獎勵機制會標記這個行動的好壞。

在這個遊戲中,小蛇正在學習收集能增加獎勵的綠球,同時避開能減少獎勵的紅球,這些是通過「好奇心」機制實現的。

「好奇心」驅動學習有如下三個大概的研究背景:

1).極少的外部獎勵,與外部環境的相互作用遠遠少於期望值;

2).不輸入外部獎勵,好奇心促使操作者的探索更有效;

3).推廣到未接觸過的場景(例如同一遊戲的新關卡),從早期經歷獲得知識的操作者比從頭開始探索新地點的操作者學習要快得多。

我們在兩個遊戲環境中評估所提出的方法:毀滅戰士(VizDoom)和超級馬里奧兄弟(Super Mario Bros)。

更多信息

論文:

代碼:

首頁:

https://pathak22.github.io/noreward-rl/index.html#demoVideo

7、AI設計遊戲

這個研究希望使用GANs來設計遊戲的用戶界面。研究者的思路是,如果能生成一些有說服力的虛擬視頻遊戲截圖,我們可以從中得到一些啟發,並將部分圖像片材用於設計新遊戲。

真實的遊戲背景圖像作為輸入

隨著GANs的訓練,生成的背景圖像變得越來越好

最後得到一些可能對新遊戲有啟發的場景

此程序的目標是生成一些類似的遊戲素材。為了實現這一點,該程序會從現有的各種遊戲中收集出一堆圖像。然後,程序根據這些打亂的圖像小塊來生成獨特的新圖像。這些圖像可以被用作設計新遊戲的背景。

更多信息

博客:

https://medium.com/@ageitgey/abusing-generative-adversarial-networks-to-make-8-bit-pixel-art-e45d9b96cee7

8、預測視頻中可能的發展動向

這個研究是通過場景動力學(Scene Dynamics)來生成視頻。

了解物體運動和場景動力學是計算機視覺中的一個核心問題。對於視頻識別任務(如動作分類)和視頻生成任務(如未來預測),需要構建一個能理解如何進行轉換場景的模型。然而,創建動態模型十分具有挑戰性,因為物體和場景的變化方式有很多種。

對火車站、海灘、嬰兒和高爾夫球場景下的視頻進行未來預測

這是利用一個能從背景中分離前景的模型實現的,它通過強制背景變成靜止的,並且該網路能學習到哪些物體正在移動以及哪些處於靜止。

這些視頻不是真實的,而是通過視頻生成模型「想象」得來的。雖然看起來不夠逼真,但根據訓練時所使用的場景類別,這些生成動作是合理的。

量子位之前也有過類似報道

論文:

代碼:

首頁:

9、生成逼真的假人臉

這個項目叫做「神經人臉(Neural Face)」,是一種能生成逼真臉部圖像的人工智慧技術。這個項目參考了Facebook公司AI研究團隊開發的深度卷積生成對抗網路(DCGAN),這種方法也應用在上面提到的「僅根據文本描述來生成圖像」。

由GANs生成的獨特人臉圖

該AI團隊使用一個向量Z表示每張圖像,其中該向量Z由100個[0,1]區間的實數組成。

生成器計算得到臉部圖像的分佈后,利用高斯分佈從向量Z中生成圖像。生成器不斷學習來生成新的臉部圖像,以愚弄鑒別器;反過來,鑒別器在競爭過程中可以更好地區分生成臉部圖像和真實臉部圖像。

更多信息

代碼:

首頁:

10、改變照片中的面部表情和容貌

這個項目是使用GANs對面部圖像進行向量運算。在實驗中,研究人員通過向系統輸入一系列樣本圖像,來生成具有多種面部表情的人臉圖像。例如,它可以將一張非微笑的臉變為微笑的臉、在臉上添加一個物體(如眼鏡),或突出某些特徵。

使用算術運算,我們可以將非微笑的人臉圖像轉換為微笑的人臉圖像,或者向一張沒有戴眼鏡的人臉上添加眼鏡。

這種方法的基本原理是,把圖像的每一列都表示成一個向量X,把所有X平均后得到均值向量Y。

然後對向量Y執行諸如加法和減法的算術運算,來創建單張圖像,即向量Z是通過戴眼鏡的男人減去不戴眼鏡的男人,再加上不戴眼鏡的女人得到的。接著,這個圖形向量Z被傳輸到生成器中,以生成上圖中右側所示的效果,分別是微笑的男人和戴著眼鏡的女人。

將左側臉部圖分步轉換成右側臉部圖

我們也可模擬人臉的旋轉、縮放和移位等變換,得到逼真的效果。為了實現這個,我們先拍攝了一系列左側臉部圖和右側臉部圖的圖像樣本。接著,平均所有圖像得到一個轉動圖像向量(Turn Image Vector)。然後,我們通過沿著圖像向量的軸線進行插值,將這種「變換」應用於新面孔中。

更多信息

論文:

代碼:

博客:

結論

GANs的提出對人工智慧和機器學習的發展有著十分深遠的意義。但是上面提到的這些還只是GANs的早期研究成果。上述的十個例子,看起來十分酷炫,但是仍然只涉及到這個網路理論的一些皮毛。

作為一名工程師,我們應該意識到,它是一種強大的方法,可訓練出能完成任何複雜人類任務的神經網路。GANs用實際性能證明,創造力不再是人類獨有的特質。

學習資源

如果你想深入學習有關生成模型和DCGAN的知識,這裡列出一些資源。

1.50行代碼實現生成對抗網路:

https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f

2.GANs教程(Ian Goodfellow,NIPS 2016):

3.GANs入門講解(5分鐘短視頻):

https://www.youtube.com/watch?v=deyOX6Mt_As

—— ——

加入社群

量子位AI社群7群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot2入群;

此外,量子位專業細分群(自動駕駛CVNLP機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,)對話界面,回復「招聘」兩個字。

量子位 QbitAI

վ'ᴗ' ի 追蹤AI技術和產品新動態



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦