撰写了文章 发布于 2019-02-01 21:13:07
自动做游戏(1),自动生成人物侧面图
效果
游戏美术成本很高,如果能够应用一些深度学习的方法,让机器自动生成美术资源,那么游戏开发将会变得简单。尝试制作一个应用,根据人物正面图自动生成侧面图。效果如下图,对于像素类图片,效果还是不错的。
后面如果足够完善,就可以用同样的方法去生成背面、抬脚等多帧图片。做游戏行走图时,将不再需要绘制10几张图,而只需要绘制一张正面图,其他的由程序自动生成。
下面展示另外一些效果图,可以看出,程序能够拟合长发、长裙、帽子、铠甲、披风这些元素的侧面图。
算法
算法都根据《Image-to-Image Translation with Conditional Adversarial Nets》这篇论文,而实际上因为论文很出名,tensorflow也有一个实现示例pix2pix,于是在该示例的基础上稍作改动。这是一个对抗网络的应用,生成器使用了unet结构,鉴定器使用了PatchGAN。资料比较多,后面有空再详细介绍。
训练
我找了2000多张rpg maker的行走图,训练集有2100张左右,还留下200张做测试集。每张图大致如下,截取了第一行第一列的图和第二行第一列的图来训练。
这些图片有戴帽子的、有穿铠甲的,比较丰富。
训练了100个epoll,可能程序写的不好效率比较低,跑了10多个小时,燃烧了200块钱的云服务器费,还真贵啊!!
不足
生成器对于颜色鲜艳的像素图效果比较好,比如下面这张:
但对于颜色灰暗的,效果就不太好,比如下面这张,糊了。
这个现象《Image-to-Image Translation with Conditional Adversarial Nets》论文给了一组对比,论文作者对比了几种正则化的式子(如下图),发现当前使用的L1+cGAN的灰色中的效果不太好。所以改善这个问题也许可以从优化L1式下手。
另外,因为训练图都是像素图,模型拟合了像素图的特征,如果使用更多细节的图片,效果也不好。下面是个失败的例子,原因大概在于,像素图的色块比较大,所以得出的卷积核不太适用于细节多的图片。
下一步
下一步当是优化算法,让算法更加健壮。主要在两个方向,1个是对灰色图的处理,另一个是对高精度图片的处理。同时可以运用同样的方法生成序列帧动画。
最后还是放个广告,如果你想学习开发游戏《Unity3D网络游戏实战(第2版)》是个好的教材。它详细介绍网络游戏的开发的全过程,看完本书,能够亲手从零开始制作一款有一定规模的网络游戏。书中对网络编程有详细的讲解,全书用一个大例子贯穿,真正的“实战”教程。
目录
小触苦逼宅中腐 1年前
碧俐千仞 [作者] 1年前
发布
XenoAmess 1年前
你确定你上面那个绿毛大胡子只在测试集里,而没在训练集里?
如果是的话那你这个相当棒啊。
碧俐千仞 [作者] 1年前
发布
XenoAmess 1年前
不过你要小心,
1.你收集到的素材图是否可能是通过一些固定的组件纸娃娃出来的(毕竟角川)。
2.你收集到的素材是否包含基于RTP的二次创作(即,和原图大体相同,只有细节改动),并且将原图与修改图分别放置在了训练集和测试集中。
嗯总之2000张图这个数据量就能训练出你那个绿胡子那个图的效果的话,我个人感觉是相当的miracle的一件事了。
发布
碧俐千仞 [作者] 1年前
发布
Ayi博斯ZOne 1年前
发布
alpacanist 1年前
碧俐千仞 [作者] 1年前
alpacanist 1年前
碧俐千仞 [作者] 1年前
发布