注 1:写本文的目的,是想给大家科普一下现阶段人工智能的某些领域在游戏制作方面可能有用的应用,做一个抛砖引玉的作用,希望能使更多的人关注到人工智能这一新兴的、蕴含无限可能性的领域,并将其与我们热爱的游戏开发联系起来。
至于具体在游戏制作中的实现方法,本人也在摸索之中,可能无法给出大家完备的指导,希望大家自行探索、多多讨论、相互启发。
注 2:本文中有些链接需要翻墙 请自备梯子
1.人工智能
近些年来,人们一想到人工智能(AI),往往就会想到终结者、自我意识、又或人类毁灭等等……这些情况在未来或许会出现,但是只怕你我的有生之年都见不到。
除非有生之年出现量子计算机我觉得还有可能….
当然,对于我们游戏开发者,一提到AI,我们更多的可能想到游戏AI。但是我今天想要提到的,并不是指游戏AI,而是指人工智能技术。关于游戏AI,我会在后续有关增强学习的文章里提到。
总之,托了大数据,计算力提升还有新模型出现的福,这几年,人工智能的相关产业蓬勃发展,相关研究也得以持续推进。目前,人们已经能够做到用AI识别图像,推广广告、撰写新闻、翻译文章、自动驾驶等等。
其实事实上还远不止这些
2.深度学习
很久之前,当我想着手开发一个游戏时,我发现我无从下手。因为我可能只会写代码(笑)
相信这也是许多程序有过的经历。一款游戏,至少得有程序、美术、音乐三方面的支持才可能最终孵化出来。 而我想提供的思路,是通过AI技术来减轻独立开发者对于后两者的负担。
只是减轻负担,现阶段是不可能取代的,有生之年不知道能不能看到
在提供实例之前,首先我想简单介绍一下,接下来会用到的深度学习的概念。
深度学习(deep learning)是机器学习(machine learning)领域的一个分支,而机器学习又是人工智能(Artificial intelligence)领域的一个分支。大概可以如下图表示。
机器学习是人工智能领域的一个分支,它的出现是为了突破依靠硬编码知识体系的人工智能的极限。简而言之,AI系统需要具备自己获取知识的能力,即从原始数据中提取模式的能力,这种能力称为机器学习。引入机器学习使计算机能够解决涉及现实世界知识的问题,并能做出看似主观的决策。比如,一个称为逻辑回归的简单机器学习算法可以决定是否建议产妇剖腹产。
然而机器学习本身也存在局限性,对于许多任务来说,我们很难知道应该提取那些特征,为此我们引入了表示学习来解决。
然而表示学习的核心问题,即从原始数据提取高层次、抽象的特征,是非常困难的。
为了解决这个问题,我们通过其他较简单的表示来表示复杂表示,这种方法即为深度学习。
“层次化的概念让计算机构建较简单的概念来学习复杂的概念。如果绘制出表示这些概念如何建立在彼此之上的一幅图,我们将得到一张‘深’(层次很多)的图。由此,我们称这种方法为AI深度学习”——Ian Goodfellow,GAN模型提出者。
GAN模型是如今在图像生成领域应用最广的模型之一
深度学习让计算机通过较简单的概念构建复杂的概念。下图是一个简单的例子。通过边来表示角和轮廓,再通过轮廓来表示对象(人或物体)。
图1
我的后续文章(如果有的话)会对深度学习给出更详细的介绍,在这里就不过多的啰嗦。大家只要理解,深度学习是人工智能中的一种技术,利用这种技术我们能够提取输入素材(图像、音乐、文字、视频等)的特征与联系并把它们训练成一个特定的模型,并通过这个模型对特征进行分类(识别)或重组。
最后,在给出实例之前,我想先通俗的声明几个后文可能用的到的定义,便于大家理解:
训练集:可以理解为喂给模型的素材,即模型从训练集中提取特征并不断优化,我们用它来建立模型。
CNN:即Convolutional Neural Network,卷积神经网络。是深度学习中的一种模型,是一个典型的空间上深度的神经网络,多用于处理图像。
RNN:即Recurrent Neural Networks,循环神经网络。是深度学习中的一种模型,是一个典型的时间上深度的神经网络,多用于处理音频或自然语言。
GAN:即Generative Adversarial Networks,生成对抗网络。是深度学习中的一种模型,原理是通过一个生成模型G和一个判别模型D的相互博弈来实现对对象的生成,常用于各种生成领域。
下面让我们看看几个也许与游戏制作有关的例子。
2.1图像生成/上色/纹理填充
MakeGirlsMoe
官网地址:https://make.girls.moe/#/
Github地址:https://github.com/makegirlsmoe/makegirlsmoe_web
Report地址:https://makegirlsmoe.github.io/assets/pdf/technical_report.pdf
上图为作者在论文中给出的生成例子,下图为我自己使用作者官网生成器生成的例子。
PaintsChainer
官网地址:http://paintschainer.preferred.tech/index_zh.html
Github地址:https://github.com/pfnet/PaintsChainer
下图为其官网给出的教程中的例子
paintstransfer
官网地址:http://paintstransfer.com/
Github地址:https://github.com/lllyasviel/style2paints
上图为作者Github页面给出的示例
CycleGAN and pix2pix
Github地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
Demo地址:https://affinelayer.com/pixsrv/
Report地址:https://junyanz.github.io/CycleGAN/
论文地址: https://arxiv.org/pdf/1703.10593.pdf
https://arxiv.org/pdf/1611.07004v1.pdf
报告中给出的几个示例,可以看出在风格转换和填充纹理方面效果还是不错的
第一个例子是一个典型的通过GAN模型生成图片的例子,作者先用CNN对训练集的几千张既有的卡通图像进行了五官定位,然后通过GAN模型进行了图像生成。
简而言之就是喂给了模型不同的头像,使之能生成不同的头像。
第二个和第三个例子,作者均没有给出详细的论文地址,不过我觉得原理应该都差不多,用的也是GAN模型,应该是这篇:https://arxiv.org/abs/1706.03319
简而言之就是我们通过喂给模型线稿及上色稿,使之能够为线稿自动上色。
在第四个例子中,我们可以通过喂给模型不同的输入,实现不同图像间画风的迁移、线稿颜色的填充甚至物品的填充(我觉得那个猫填充就很有趣)
上述几个例子,都是通过使用深度学习中不同的模型,给模型喂不同的素材(使用不同的训练集)来实现不同的效果的。理论上讲,只要模型和素材合适,我们可以做出任何我们想要的类似的效果。
在深度学习这方面,目前能够实现的,基本都是基于2D图像的转换和生成。3D模型的生成方面并不是没有人在做,只不过本人了解的不多,暂时还没看到能实现应用的例子。国内的话腾讯和网易都在做这方面的研发,有兴趣的朋友可以了解下。
2.2音乐生成
Aiva
Albums: https://soundcloud.com/user-95265362/albums
Aiva是一个通过学习古典乐谱(巴赫、贝多芬等)来提取特征,并用其创作音乐的AI。目前已通过图灵测试并且成为SACEM(法国及卢森堡作曲家协会)的第一位非人类会员。甚至还为卢森堡国庆日庆典开幕式创作了曲子。
(nova日志居然插不了音乐,大家点链接自己体会吧….)
如果你听过了它的曲子,你会发现我们确实很难分辨这是AI还是人做的曲子(毕竟过了图灵测试),但是这些曲子并非由AI独立创作,在某些方面还是需要人类协助。
Intelligent Music System
官网:http://intelligentmusicsystems.com/
这个系统在《古墓丽影·崛起》中曾被使用过,通过官网可以体验这个demo(https://youtube/ILZ9P-B_BkQ),严格来说这和前例的AI直接作曲并不相同,通过demo可以看到,游戏背景音乐中的击鼓声随着游戏状态的变化而变化(比如说野兽的出现致使鼓点变得密集并激烈)。可以说是一个简易的自动为不同游戏状态制作bgm的系统吧。
另外,这个IMS要出unity和UE4的插件,只不过现在还没出,大家可以期待一波。
Magenta
官网:https://magenta.tensorflow.org/
github:https://github.com/tensorflow/magenta
magenta demos: https://magenta.tensorflow.org/demos
magenta是由Google Brain团队开发的一款基于tensorflow平台的开源的人工智能项目。Magenta应用深度学习或增强学习的算法,来创造音乐、图片、绘画等等。
请注意,在这里我用了“创造”一词,也就是说,magenta的研究人员不只是想让机器模仿制作出一段音乐,而是想探索机器是否能创造出音乐。(比如说,在使模型学习了大量的音乐片段后,我们只给予计算机一些小的提示,这些可以是短的音乐片段或其他,计算机能否通过这些小的提示,创作出完整的音乐片段。这些尝试你可以在demos里看到)
Magenta项目提供了很多models和demos。由于是开源项目,所以也吸引了很多对此感兴趣的科研工作者或音乐家参与,也产生了很多派生的项目和demos,具体的大家可自行进入网址浏览,这里就不多赘述了,贴几张gif吸引眼球。
Amper
官网:https://www.ampermusic.com/
宣传视频:https://youtube/lyXrU_Qo6UQ
API文档:https://docs.ampermusic.com/jimmy/
Amper是一个能够生成音乐的AI。
相较于前几个例子,Amper使你可以直接体验到AI作曲的奇妙。只要进入官网注册就可以体验了。
创作开始的时候,会有简易(Simple)和专业(Pro)两种模式选择。(两种模式的区别是专业版可以在不同分段使用不同的音乐风格,而见简易模式只能选择一种音乐风格)
选择完模式后接下来就可以设置曲风、类型、时常等等参数了。然后就可以随机生成符合你设置的音乐了。在生成之后还可以对这段音乐进行微调,比如说换乐器之类的
具体的就不介绍了,界面很简洁,操作也很简单,只需要点点点就够了,大家自行体会。至于做出来的曲子的水平,反正比我自己写的强......
上述的几个实例可以说是目前音乐生成领域所能达到的天花板。我们可以看出,相较于图片生成,音乐生成领域发展的更为成熟些,虽然距离达到真正的应用级还差许多.....
3.展望
在未来,我们或许可以拥有这样一款引擎,通过不同的内置的预训练的模型,我们只要输入不同画风的素材图片,引擎就能自动的学习这些图片的特征,从而生成对应的不同画风的素材,我们可以直接使用这些素材,也可以使用它来为我们的创作提供创意。(当然对于大佬,自己画永远是最好选择)
又或者,我们可以真正做到根据游戏状态的不同来为游戏自动配乐。
(甚至可能,通过增强学习,使玩家面对一个逐渐“成长”的AI。 这很COOOOL不是吗。)
如果这实现了的话,这将极大的降低游戏开发的门槛,也会提高游戏开发的效率。
当然,上述的设想其实过于理想化,以现有的技术做的话效果可能不会太好。但是未来充满可能性,我也希望有更多的开发者关注人工智能领域,大家共同进步。
暂无关于此日志的评论。