Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)


Unity3D ML-Agent-0.8.1 学习一(基础教程)

      • 写的目的
      • 搭建环境
        • 下载Anaconda
        • 安装Anaconda
        • 安装虚拟环境
        • 下载ml-agents插件和安装所需要的包
        • 训练最简单的例子3DBallLearning
      • 总结

写的目的
ML-Agent是什么就不介绍啦,百度就好,至于为什么要写这个,主要是因为最近在做深度学习研究,学到了强化学习,而我本身又有游戏经验和背景,而Unity3D刚好也有机器学习插件,正好把这些结合起来,看看能不能在游戏里发挥下。
所以最近都就开始研究这个,其实还有个大的想法,就是能不能用人工智能去重新定义游戏的开发,运营等环节,目前知道AI可以上色,可以作曲,可以写故事,可以生成动漫头像等等,这个系列的主题就是用AI去定义游戏开发中的角色AI,不用传统的硬编码,而用强化学习去训练,使得可以有更好的泛化能力,应对更多的情况。当然想法是好的,路还很长,一步步来吧。Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

搭建环境
如果对于机器学习或者深度学习有点经验的朋友,应该不是太大的问题,Anaconda环境基本都已经搭过,只要进行一些命令安装就可以了。对于没有经验的,也没关系,其实很简单,只要下列几部:
下载Anaconda 去Anaconda下载链接下载对应系统的的版本就行我的是(windows),不一定要unity官方说的python3.5,3.6,下3.7的版本也没关系,到时候创建虚拟环境可以指定版本的,别装2.x版本就行了,因为插件说了不支持。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

安装Anaconda 安装过程跟普通的软件没啥区别,基本无脑点下一步就行,到了有可以选是否将Anaconda加入环境变量时,你可以自己考虑,加入就不需要自己去加了,没加的话你就的自己去加,具体怎么加环境变量百度即可。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

加完之后,随便起个命令行,在里面输入conda,有反应了,就说明安装好了。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

安装虚拟环境 说说为什么要装虚拟环境,因为如果你以前已经装了一些包,举个例子比如numpy(v1.0),tensorflow(v1.5) 。但是现在我需要的numpy是1.5以上版本的,tensorflow是1.7以上版本的,那么如果没有虚拟环境,我只能把升级版本,或者是删除重装,这样可能会影响其他项目,而且装多了,都堆在一起,也不方便管理。所以就引出了建立虚拟环境,虚拟环境之间是相互隔离的,你需要什么在虚拟环境里装就可以了,就好比两台电脑,一台装LOL,一台装DOTA,相互不会影响。
所以我们开始创建Ml-Agent的虚拟环境。
官方也给了例子:
conda create -n ml-agents python=3.6 即 conda create -n 环境名称 python=版本号

之后可以通过代码
conda env list 看是否创建完成

激活环境,激活后会看到命令行最前面的(ml-agents)说明已经在环境里了,而且环境列表里相对应的路径前也出现了 *
activate ml-agents 然后去激活环境,激活后就在环境里,安装的包都会安装在此环境里,跟其他是隔离的

Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

下载ml-agents插件和安装所需要的包 可以通过git下载,也可以通过直接去ml-agents插件地址下载
git clone https://github.com/Unity-Technologies/ml-agents.git

下载完成后开始安装所需要的包,记得要在激活的环境下操作下面的事,不然会把包安装到默认环境去了。
pip install mlagents 会安装所有相关联的包,如果你有兴趣想看是什么,可以去看ml-agents文件夹下的setup.py文件。

你会看到这些就是要安装的包,目前是用CPU版本训练的,至于GPU版本大家可以百度,需要N卡支持,下个对应的cuda和cudnn驱动,安装tensorflow-gpu:
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

安装的过程可能很慢,没办法只能等了,因为好多源都是国外的,国内下的肯定会慢啦。
安装好后可以在命令行尝试下面代码,有相应反馈就说明装好了。
mlagents-learn

同样,下载完成后再去安装2个插件的依赖环境
cd ml-agents-envs pip install -e . cd .. cd ml-agents pip install -e .

全部装完后即可。如果出现报错什么的,基本都是属于网络问题,可以百度,也可以留言,如果我遇到过的话我会回答的。
训练最简单的例子3DBallLearning 打开uinty,插件的项目在UnitySDK里。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

选中对应的场景,物体,会看到如下情况,说明已经准备好训练了,默认Control是不打勾的,表示不训练,打勾就要训练,记得打勾的时候是训练,需要外部支持,此时若点play会报错,因为没有检测到外部环境。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

之后在命令行把目录切换到根目录下,切记,否则可能出现找不到文件,因为他会去config下找trainer_config.yaml文件,如果在其他目录下会找不到。然后在命令行输入
mlagents-learn config/trainer_config.yaml --run-id=3dball --train其中3dball可以替换为你想要的名字。

Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

之后就等你点unity编辑器play的按钮,就可以编辑器里训练啦,以前老的版本还是打包出来外面训练的呢。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

你会看到开始训练了,看到小球慢慢不掉下去,稳定了,最多训练50000次,也不久,等会儿吧,不想等也可以ctrl+c结束。
你会看到一些数据,和训练信息,具体的一些数值什么意义,还是得有点机器学习基础,暂时不讲,有兴趣的可以百度,就讲几个比较简单的。我们暂时只关心训练了多久,效果怎么样。
max_steps: 5.0e4 表示要训练50000次 Step: 10000 表示训练了几次 Mean Reward: 60.829 表示平均的奖励,越大越好,说明训练有效果了 model_path: ./models/3dball-0/3DBallLearning 模型的输出路径 summary_path:./summaries/3dball-0_3DBallLearning 总结信息的路径,用tensorborad看一些训练的具体情况

完成后,出现以下信息:
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

可以看到最后说模型已经被生成在指定文件夹里了,可以去找到3DBallLearning.nn文件,记得以前好像不是nn,至于扩展名为什么是nn,我猜应该是神经网络(Neural Network)的意思。
然后把训练好的模型放入项目中,为了跟他存在的区别,我重新命名了:
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

放入TFModels下即可,然后选择Brains下的3DBallLearning,把刚才的模型拖到相应的位置即可。
Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)
文章图片

之后就可以运行游戏啦,记得把Control勾掉运行,才是测试模型,即预测运行,你会看到好厉害的样子,我刚开始玩的时候也是很兴奋和激动哈哈。
总结
这次就简单的介绍下安装,训练的东西,至于更加深入的东西,下次再介绍,如果希望能了解更多的,可以补习一些机器学习,深度学习的知识,比如深度神经网络,强化学习等等。
【Unity3D|Unity3D ML-Agent-0.8.1 学习一(基础教程)】好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,部分图片来自网络,侵删。

    推荐阅读