Unity3D && ML-agents 入坑指导

  • @[toc]( Unity3D && ML-agents 入坑指导)
  • 一、安装之类的基本操作
  • 1.1 无非是安装unity、下载ml-agent工具包之类的
  • 1.2 导入ML-agents工具包
  • 1.3 导入**TensorFlowSharp**插件
  • 二、Ball3D入门操作
  • 三、训练、查看训练效果
  • 3.1 在Unity中训练
  • 3.2 利用Jupyter Notebook训练
  • 3.3 利用TensorBoard查看训练效果
  • 3.4 导出TensorFlow模型

这只是一篇官方文档的搬运工,嫌文档翻来翻去麻烦,自己总结一下,也方便后来人少走弯路。

  • 操作环境: Windows 10 Anaconda TensorFlow 1.7.1 (注意:必须是该版本) CUDA 9.0 Unity 2018.3.9f1 (64-bit) Unity ML-Agents Toolkit (Beta)

一、安装之类的基本操作

1.1 无非是安装unity、下载ml-agent工具包之类的

ML-agents的Github仓库安装Anaconda、TensorFlow等的详细过程

1.2 导入ML-agents工具包

  1. 打开Unity
  2. File–>Open Project
  3. 打开ml-agents-master(就是从Github上下载的ml-agents文件夹)中的unity-environment文件夹,点击Open打开
  4. Edit–>Project Settings–>Player
  5. 对于所有的目标平台(PC,Mac,Linux Standalone,IOS或Android): i.点开Other Settings一栏 ii.将Scripting Runtime Verision选至Experimental(.NET 4.6 Equivalent or .NET 4.x Equivalent) iii. 在Scripting Defined Symbols一栏中,添加flag:ENABLE_TENSORFLOW,输入完成后敲一下回车
  6. File–>Save Project
  7. unityhub激活 unity2018怎么激活_ide

1.3 导入TensorFlowSharp插件

  1. 下载TensorFlowSharp插件
  2. 打开Unity后,双击下载的TFSharpPlugin.unitypackage文件打开,点击Import导入插件
  3. 查看Assets–>ML-Agents–>Plugins–>Computer目录下该插件是否安装成功

二、Ball3D入门操作

  1. 在Project窗口中,点开Assets/ML-Agents/Examples/3DBall路径,打开3DBall场景
  2. 在Hierarchy窗口中,选中Ball3DAcademy对象的子对象Ball3DBrain,在Inspector窗口中检视其属性
  3. 在Ball3DBrain的Brain组件中,将Brain Type改成Internal
  4. 在Project窗口中,点开Assets/ML-Agents/Examples/3DBall/TFModels路径
  5. 将模型文件3DBall从TFModels文件夹中拖给Ball3DBrain的Brain组件下的Graph Model
  6. 点击Play按钮,就能看到平台在用训练好的模型来试图平衡小球

unityhub激活 unity2018怎么激活_unityhub激活_02


三、训练、查看训练效果

3.1 在Unity中训练

  1. 选中Ball3DBrain,将Brain Type改成External
  2. unityhub激活 unity2018怎么激活_unityhub激活_03

  3. 打开ml-agents-master中的python文件夹,所有训练相关的python代码都在这个文件夹中
  4. 如果要修改训练参数,打开python文件夹中的trainer_config.yaml文件修改相应参数
  5. 在python文件夹中打开命令行终端(如果在其他地方打开了终端,则将路径切换至python下)
  6. 如果TensorFlow等安装在了Anaconda的环境中,则激活该环境,如:activate ml-agents
  7. 在终端输入:python learn.py --run-id=<run-identifier> --train
  • run-identifier是给每次训练起的名字,方便管理多次训练结果
  • --train告诉 learn.py
  1. 当Start training by pressing the Play button in the Unity Editor 的提示出现后,在Unity中按下Play按钮,开始训练
  2. 训练完成后,模型文件将保存在python/models/<run-identifier>目录下。将该目录下的editor_<academy_name>_<run-identifier>.bytes文件复制到unity-environment/Assets/ML-Agents/Examples/3DBall/TFModels
  3. 在Unity中,选中Ball3DBrain,将Brain Type改成Internal,将editor_<academy_name>_<run-identifier>.bytes拖给Graph Model
  4. 点击Play按钮,就能看到平台在用你自己训练的模型来试图平衡小球!!!

3.2 利用Jupyter Notebook训练

暂时不用,懒得先写了

3.3 利用TensorBoard查看训练效果

  1. 在python文件夹中打开命令行终端
  2. 激活安装了TensorBoard的Anaconda环境
  3. 在终端输入:tensorboard --logdir=summaries
  4. 打开浏览器,打开端口localhost:6006,就能看到训练信息了

3.4 导出TensorFlow模型

ML-agents利用TensorFlow进行训练,训练完成的模型保存在python/models/<run-identifier>目录下的raw_graph_def.pb中,并自动将其转变成.bytes文件以供Unity导入和使用,因此如果想导出训练完的模型做他用,直接读取.pb文件即可

  1. 在python/models/<run-identifier>目录下运行以下python代码:
import tensorflow as tf
from tensorflow.python.platform import gfile

model = 'raw_graph_def.pb'
graph = tf.get_default_graph()

graph_def = graph.as_graph_def()
graph_def.ParseFromString(gfile.FastGFile(model, 'rb').read())
tf.import_graph_def(graph_def, name='graph')
summaryWriter = tf.summary.FileWriter('log/',graph)
  1. 在python文件夹中打开命令行终端
  2. 激活安装了TensorBoard的Anaconda环境
  3. 在终端输入:tensorboard --logdir=log
  4. 打开浏览器,打开本地端口localhost:6006,就能看到模型信息了