自动做游戏(1):自动生成人物侧面图

作者:罗培羽 2019-01-30


系列文章:
自动做游戏(1):自动生成人物侧面图
自动做游戏(2):自动生成人物行走图
自动做游戏(3):行走图生成工具开放试用
自动做游戏(4),极小样本生成国画的尝试
自动做游戏(5):新海诚版“和平精英”长啥样?

效果

游戏美术成本很高,如果能够应用一些深度学习的方法,让机器自动生成美术资源,那么游戏开发将会变得简单。尝试制作一个应用,根据人物正面图自动生成侧面图。效果如下图,对于像素类图片,效果还是不错的。


后面如果足够完善,就可以用同样的方法去生成背面、抬脚等多帧图片。做游戏行走图时,将不再需要绘制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版)》详细介绍网络游戏的开发的全过程,看完本书,能够亲手从零开始制作一款有一定规模的网络游戏。书中对网络编程有详细的讲解,全书用一个大例子贯穿,真正的“实战”教程。



专栏:https://zhuanlan.zhihu.com/p/55496272

最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多