Unity3D--机器学习之环境搭建(译)

前言

赋闲在家,在Unity3D官方论坛上看到“机器学习挑战赛”后琢磨着学习学习。然后在网上看到一篇难得的指导详尽、新手友好的环境搭建教程,可惜是英文的,想着以后可能还会参考,还是读中文比较快,所以就自己简译一次放在这里,也供他人参考。

原文链接: https://unity3d.college/2017/10/25/machine-learning-in-unity3d-setting-up-the-environment-tensorflow-for-agentml-on-windows-10/

软件环境

操作系统:Win10 x64
Unity3D: 2017.2.0f3

正文

环境搭建

1.安装CUDA Toolkit

下载CUDA Toolkit 8.0 GA2,链接地址:https://developer.nvidia.com/cuda-toolkit-archive

这里写图片描述

下载完毕后运行并安装,一路默认next即可,不过需要注意的是安装前应确保Unity3D Editor 和 Visual Studio没有实例在运行。

2.安装CUDNN

CUDNN:CUDA Deep Neural Network library
下载链接:https://developer.nvidia.com/cudnn
这里下载需要注册Nvidia的账号,注册一个就好了,免费的。之后选择版本“v6.0 for CUDA 8.0”

这里写图片描述

下载的是zip压缩文件,下载后将其中的bin、include、lib三个文件夹拷贝到CUDA的文件目录下,一般是:C:\Program Files\NVIDIA GPU Computing Toolkit\cuda\v8.0

这里写图片描述

3.配置环境变量
  • 在系统变量(注意不是用户变量)中新增CUDA_HOME变量,值为CUDA安装目录,一般是:C:\Program Files\NVIDIA GPU Computing Toolkit\cuda\v8.0
  • 编辑系统变量PATH,新增两个路径:
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\CUPTI\libx64

这里写图片描述

4.安装Anaconda

这个是用于配置Python环境,下载链接:https://www.anaconda.com/download/

这里写图片描述

下载后一路默认安装即可。安装完毕后开始菜单栏中搜索Anaconda Prompt并点击运行

这里写图片描述

接下来,搭建并安装tensorflow环境,依次输入以下命令:

> conda create -n tensorflow-gpu python=3.5.2
> activate tensorflow-gpu
> pip install tensorflow-gpu
> python
> import tensorflow as tf
5.下载样例工程

下载地址:https://github.com/Unity-Technologies/ml-agents

“以管理员身份运行”另一个Anaconda Prompt窗口,命令行进入工程文件下的python目录,比如我的是:D:\program study\ML-Agent\ml-agents-master\python

运行如下命令以安装html5lib库

> conda install –f html5lib
> pip install .

注意别漏了那个点,表示当前目录
如果上述步骤都没有出错,那么环境搭建部分就算完成了,接下来进入机器学习部分。

机器学习

这里我选择了平衡球项目,详细步骤可在下载下来的样例工程目录中的“docs/Getting-Started-with-Balance-Ball.md”文件里查看。

1.编译工程
  • 打开Unity3D样例工程“unity-environment”
  • 选择3DBall场景,目录为Assets/ML-Agents/Examples/3DBall/
  • PlayerSettings中勾选Resolution and Presentation -> Run in Background
  • PlayerSettings中Resolution and Presentation -> Display Resolution Dialog设置为Disable
  • 定位到Hierarchy面板中Ball3DAcademy下Ball3DBrain物体上,将Brain脚本下的Brain Type设置为“External”
  • 编译exe文件,并将输出目录设置为样例工程的python目录,例如我的输出文件名为BalanceBall,目录结构如下图

这里写图片描述

2.强化训练
测试Python API

在Anaconda Prompt窗口下,切换路径到python目录下后,输入命令

> jupyter notebook

然后用浏览器打开http://localhost:8888,可以看到如下页面

这里写图片描述

使用PPO算法训练

点击上述页面(http://localhost:8888)中的ppo.ipynb,在新开窗口中修改如下配置:
- env_name设置为你的输出exe文件名
- max_steps设置为50000
- buffer_size设置为5000
- batch_size设置为512
其中后三个修改是为了加快学习速度,也可以保持默认不变,或者修改为其他值。
设置完后,鼠标点击页面最下方的“Export the trained Tensorflow graph”模块,然后点击菜单栏”Cell”->”Run All Above”,稍等片刻后,即会自动运行输出的exe程序开始训练,训练完毕后会在python/models/ppo目录下生成对应的.bytes文件并自动关闭exe程序窗口。

这里写图片描述

这里写图片描述

(可选)观察训练过程

在cmd窗口下进入python目录,运行以下命令后,用浏览器打开localhost:6006即可观察训练过程(不过我使用时页面是空白的)

> tensorboard --logdir=summaries

具体参数含义可见docs下的Getting-Started-with-Balance-Ball.md文档,这里就不写了。

设置TensorFlowSharp支持

这个需要下载TFSharpPlugin.unitypackage插件,下载链接:https://s3.amazonaws.com/unity-agents/0.2/TFSharpPlugin.unitypackage
下载速度可能比较慢,可以网上搜下有没有相应资源,我在网上搜了一个,但是下载后无法导入Unity,报错无法解压缩,后来再用原链接下,很快又下好了,不知道为啥。

下载完毕后,导入到Unity工程中,这个包中包含了样例工程的文件和我们需要的Plugins下的文件,因为导入时不能选择特定文件,所以全部导入覆盖即可,完成后会发现Plugins目录下相较之前多了Android、IOS、Computer三个文件夹和System.Numerics及System.ValueTuple两个文件。

然后在PlayerSettings中修改如下两个设置:
- Other Settings下Scripting Runtime Version设置为Experimental (.NET 4.6 Equivalent)
- Other Settings下Scripting Defined Symbols添加ENABLE_TENSORFLOW后切记回车

点击File -> Save Project后重启Unity3D Editor。

注意: TensorFlowSharp支持仍为实验功能,启用支持后,Brain Type只能选择”Internal”!

导入训练后的模型
  • 将之前训练生成的.bytes文件拷贝至unity-environment/Assets/ML-Agents/Examples/3DBall/TFModels/目录
  • Unity编辑器中修改Ball3DAcademy下Ball3DBrain物体上Brain脚本的Brain Type为“Internal”,Graph Model设置为导入的.bytes文件,Graph Placeholder设置为1,增加一个epsilon,其属性为Name:epsilon,ValueType:FloatingPoint,MinValue:0,MaxValue:0

结果

以上设置完毕后,点击运行,即可看到球体掉落在平板上后已可维持平衡而不是之前从平板上滑落。

这里写图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值