我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

機器之心發表於2019-01-29

吃雞的小夥伴們不會不知道,目前全球最火的兩款吃雞遊戲要數《絕地求生》和《堡壘之夜》了。前者是寫實畫風,後者是卡通畫風。有個《堡壘之夜》玩家愛上《絕地》的寫實風格後,突發奇想要把這種風格應用到《堡壘之夜》中……

本文旨在瞭解如何將 CycleGAN 用於風格遷移並探索其在遊戲圖形模型中的應用。

我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

神經網路嘗試在《堡壘之夜》中重現《絕地求生》的畫面風格。

如果你是一名遊戲玩家,肯定聽說過如今最火的兩款「吃雞」遊戲:《堡壘之夜》(Fortnite)和《絕地求生》。這兩個遊戲很相似,都是 100 名玩家降落在一個小島上,然後淘汰至最後一人「吃雞」。作者之前比較喜歡《堡壘之夜》的遊戲風格,但現在更喜歡《絕地求生》的寫實畫面。於是他不禁開始思考,是否有可能建立一個圖形模式,讓我們選擇喜歡的畫面風格而不必依賴於開發者給我們提供的畫面選擇?如果有個圖形模式能夠將《絕地求生》的畫風渲染至《堡壘之夜》呢?於是作者決定用深度學習來探索這一模式,然後發現了一種叫 CycleGAN神經網路。該網路非常擅長影像風格遷移。在本文中,作者將介紹 CycleGAN 的工作原理,然後訓練它們將《堡壘之夜》視覺化地轉為《絕地求生》。

我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

卡通風格的《堡壘之夜》(左)和寫實風格的《絕地求生》(右)

CycleGAN 是什麼?

CycleGAN 是一種用於跨域影像風格遷移的生成對抗網路,它能將影像從一個域遷移到另一個域,例如從《堡壘之夜》到《絕地求生》的遷移。任務是以無監督方式執行的,即兩個域的影像沒有一一對映的關係。

我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

Github 實現及其結果:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix 

該網路能夠理解原始域影像中的物件,並對目標域影像中相同物件的外觀做相應的變換。該網路的演算法實現經訓練後,可以將馬轉化為斑馬,將蘋果轉化為橙子,將照片轉化為漂亮的油畫等等。

如何實現?

我們簡單分析一下如何使用 CycleGAN 將《堡壘之夜》和《絕地求生》分別作為輸入域和目標域進行風格遷移。

首先,我們通過截圖的方式分別獲得兩個遊戲的大量影像作為資料集。

其次,我們訓練一對 GAN,一個用來學習《堡壘之夜》的畫風,另一個學習《絕地求生》的畫風。這兩個網路通過迴圈的方式同時訓練,從而在兩個遊戲中學到相同物件之間的關係,以進行恰當的畫風變換。

下圖是 CycleGAN 的基本架構:

我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

從「Real Fortnite」到「Fake PUBG」,再到「Reconstructed Fortnite」的迴圈。

我們從《堡壘之夜》的原始影像開始整個訓練過程。訓練包括兩個深度網路,一個是生成器,一個是鑑別器。鑑別器將隨著時間推移而學習到區分「Real Fortnite」和「Fake Fortnite」。生成器將使用從訓練資料集中隨機取出的《絕地求生》截圖進行訓練,從而學習如何將原始域影像遷移到目標域影像。

為了確保這種遷移是有意義的,我們同時訓練了另一組生成器和鑑別器(即生成器 P2F 和鑑別器 P),它們的作用是從偽域重建原始域的影像。另外,我們通過最小化訓練過程中的迴圈損失(Cycle loss),使重建後的影像與原始影像相似。這個過程類似自動編碼,只是我們不在中間步驟的潛在空間中尋找編碼,而是在目標域中尋找整個影像。

我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

F2P 框架

這裡使用的生成器網路(F2P)由三個主要的卷積模組組成:第一個模組在較低維度的潛在空間中找到《堡壘之夜》截圖的編碼;然後,第二個模組將該編碼轉換成在相同潛在空間中表示《絕地求生》的編碼;在第三個模組中,解碼器根據轉換的編碼構建出輸出影像,於是便得到了《絕地求生》版的《堡壘之夜》影像。

在訓練過程中,由於 GPU 記憶體限制,所以只能處理大小為 256x256 的影像,這很影響最終結果。如果你有超過 8GB 的視訊記憶體,可以嘗試生成大小為 512x512 的影像。

結果

經過 12 小時的訓練之後,CycleGAN 生成的影像看起來很有前景。該網路能夠成功地將《堡壘之夜》中天空、樹和草地的顏色轉換成《絕地求生》中的畫風。《堡壘之夜》中過度渲染的顏色被轉換成了《絕地求生》中那種更真實的顏色。

我有個大膽的想法,用風格遷移玩《絕地》版的《堡壘之夜》

天空看起來沒那麼藍了,卡通風格的草地和樹看起來也更接近《絕地求生》了。它甚至學會了把底部的 health meter 替換成了《絕地求生》中的槍支和彈藥指標了!amazing!兩個域中無法聯絡起來的是玩家的外表,這也是為什麼它周圍的畫素有點模糊。總體來看,網路在兩個域中識別目標並轉換它們的外觀方面做得還不錯。

如果想看更長的結果,請戳以下視訊:

在遊戲中應用圖形模式

雖然結果看起來很好,但要真正實現《絕地求生》畫面風格的《堡壘之夜》,還有很長的路要走。一旦我們能夠用這些網路實時生成更高解析度的影像,那將來為遊戲構建圖形模式引擎而不必依賴開發者不是沒有可能的。

我們可以把自己喜歡的遊戲畫風應用到任何其它遊戲上!


原文連結:https://towardsdatascience.com/turning-fortnite-into-pubg-with-deep-learning-cyclegan-2f9d339dcdb0

相關文章