Unity:ML-Agent初探

Unity的机器学习项目ML-Agent出来有一阵子了,但之前一直没有接触过,这次我打算利用这篇文章初步熟悉下这个神器,也希望我的分享能给读者带来帮助。

环境篇

安装Anaconda和Python 3

可以从Anaconda官方网站下载安装,并且Anaconda本身就内置Python 3和一些数据科学的库。当然如果追求效率(图省事)也可以像我一样用Visual Studio的安装工具。
Unity:ML-Agent初探_第1张图片
值得一提的是安装完后需要添加一下环境变量的Path,类似这样

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts

一个是Python的安装路径,一个是路径下的Scripts文件夹。


下载ML-Agent项目代码,并安装依赖库

到ML-Agent的GitHub地址下载项目,这里选择直接下载压缩包。
Unity:ML-Agent初探_第2张图片
下载完后解压打开,会发现python文件夹下有一个requirements.txt文件,记录了所需要的库:

tensorflow==1.7.1
Pillow>=4.2.1
matplotlib
numpy>=1.11.0
jupyter
pytest>=3.2.2
docopt
pyyaml
protobuf==3.5.2
grpcio==1.11.0

这么多库总不能一个个手动pip install吧。别急,用pip install . 命令即可全部安装,其中最后的 .代表全部,不能省略。

现在,我们可以选择在命令行中直接进到...\ml-agents-master\python中,输入pip install . ,或者为了方便环境管理,也可以用Anaconda先建一个环境,然后在环境中安装库。这里选择了后者。

在Anaconda Prompt中用 conda create -n ML-Agent python=3.6 或者在Anaconda Navigator中创建,如图(注意要选3.x版本)。
Unity:ML-Agent初探_第3张图片
打开终端
Unity:ML-Agent初探_第4张图片
依次输入cd E:\Python\ml-agents-master\python(对应ML-Agent中python文件夹的路径)、:E(上述文件夹的根目录)和pip install .
Unity:ML-Agent初探_第5张图片
好了,万事俱备,现在可以愉快地开始了。


使用篇

设置并生成工程

用Unity打开...\ml-agents-master\unity-environment,在Example中选择Tennis网球游戏,说是网球,但其游戏规则更类似于羽毛球,双方互相击球,不能让球在己方落地或打出界。
Unity:ML-Agent初探_第6张图片
在这个游戏中,会有一个老师和一个学生,我们需要给老师附上预设的模型(...\Assets\ML-Agents\Examples\Tennis\TFModels\Tennis.bytes),来训练学生。

首先将TeacherBrain的BrainType改为Internal,这个时候会发现报错了,点击show me how,可以看到在文档最后给出了解决方案。

原来我们还缺了关键的一环,预设的模型有了,但是在Unity中怎么运行TensorFlow来用这个模型呢?这就要用到TFSharpPlugin.unitypackage 了,这个插件中有Tensorflow Sharp封装成的动态链接库,而后者是Tensorflow的C#版本。导入完后还需如下设置。
Unity:ML-Agent初探_第7张图片
Unity:ML-Agent初探_第8张图片
好,现在我们可以把模型导入到TeacherBrain中了。
Unity:ML-Agent初探_第9张图片
接下来还需要将StudentBrain的BrainType设为External,才能从外部操控和训练。
Unity:ML-Agent初探_第10张图片
然后Build。
Unity:ML-Agent初探_第11张图片


训练模型

得到运行程序后,依然是打开终端,进入刚才的python文件夹,输入python learn.py E:\Unity\TennisTrain\TennisTrain.exe --run-id=TennisTrain --train(其中E:\Unity\TennisTrain\TennisTrain.exe是刚才Build出来的程序路径,run-id=TennisTrain则是完成训练后存放的路径,在...\ml-agents-master\python\model 下 ),然后就开始训练了。
Unity:ML-Agent初探_第12张图片
Unity:ML-Agent初探_第13张图片


导入模型并运行

训练得到的模型就保存在...\ml-agents-master\python\model\TennisTrain 下,将其复制到工程中,与之前对TeacherBrain的处理类似,我们将得到的模型导入到StudentBrain中。
Unity:ML-Agent初探_第14张图片
然后运行就可以了。

不愧是ML-Agent和TensorFlow,效果拔群。
Unity:ML-Agent初探_第15张图片

你可能感兴趣的:(Unity:ML-Agent初探)