自動做遊戲(1):自動生成人物側面圖

遊資網發表於2019-01-30
自動做遊戲(1):自動生成人物側面圖


自動做遊戲(1):自動生成人物側面圖
自動做遊戲(2):自動生成人物行走圖
自動做遊戲(3):行走圖生成工具開放試用

自動做遊戲(4),極小樣本生成國畫的嘗試

效果

遊戲美術成本很高,如果能夠應用一些深度學習的方法,讓機器自動生成美術資源,那麼遊戲開發將會變得簡單。嘗試製作一個應用,根據人物正面圖自動生成側面圖。效果如下圖,對於畫素類圖片,效果還是不錯的。

自動做遊戲(1):自動生成人物側面圖

後面如果足夠完善,就可以用同樣的方法去生成背面、抬腳等多幀圖片。做遊戲行走圖時,將不再需要繪製10幾張圖,而只需要繪製一張正面圖,其他的由程式自動生成。

下面展示另外一些效果圖,可以看出,程式能夠擬合長髮、長裙、帽子、鎧甲、披風這些元素的側面圖。

自動做遊戲(1):自動生成人物側面圖

演算法

演算法都根據《Image-to-Image Translation with Conditional Adversarial Nets》這篇論文,而實際上因為論文很出名,tensorflow也有一個實現示例pix2pix,於是在該示例的基礎上稍作改動。這是一個對抗網路的應用,生成器使用了unet結構,鑑定器使用了PatchGAN。資料比較多,後面有空再詳細介紹。

訓練

我找了2000多張rpg maker的行走圖,訓練集有2100張左右,還留下200張做測試集。每張圖大致如下,擷取了第一行第一列的圖和第二行第一列的圖來訓練。

自動做遊戲(1):自動生成人物側面圖

這些圖片有戴帽子的、有穿鎧甲的,比較豐富。

自動做遊戲(1):自動生成人物側面圖

訓練了100個epoll,可能程式寫的不好效率比較低,跑了10多個小時,燃燒了200塊錢的雲伺服器費,還真貴啊!!

不足

生成器對於顏色鮮豔的畫素圖效果比較好,比如下面這張:

自動做遊戲(1):自動生成人物側面圖

但對於顏色灰暗的,效果就不太好,比如下面這張,糊了。

自動做遊戲(1):自動生成人物側面圖

這個現象《Image-to-Image Translation with Conditional Adversarial Nets》論文給了一組對比,論文作者對比了幾種正則化的式子(如下圖),發現當前使用的L1+cGAN的灰色中的效果不太好。所以改善這個問題也許可以從優化L1式下手。

自動做遊戲(1):自動生成人物側面圖

另外,因為訓練圖都是畫素圖,模型擬合了畫素圖的特徵,如果使用更多細節的圖片,效果也不好。下面是個失敗的例子,原因大概在於,畫素圖的色塊比較大,所以得出的卷積核不太適用於細節多的圖片。

自動做遊戲(1):自動生成人物側面圖

下一步

下一步當是優化演算法,讓演算法更加健壯。主要在兩個方向,1個是對灰色圖的處理,另一個是對高精度圖片的處理。同時可以運用同樣的方法生成序列幀動畫。

最後還是放個廣告,筆者近期出版的《Unity3D網路遊戲實戰(第2版)》詳細介紹網路遊戲的開發的全過程,看完本書,能夠親手從零開始製作一款有一定規模的網路遊戲。書中對網路程式設計有詳細的講解,全書用一個大例子貫穿,真正的“實戰”教程。

自動做遊戲(1):自動生成人物側面圖


專欄:https://zhuanlan.zhihu.com/p/55496272

相關文章