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工具包
- 打开Unity
- File–>Open Project
- 打开ml-agents-master(就是从Github上下载的ml-agents文件夹)中的unity-environment文件夹,点击Open打开
- Edit–>Project Settings–>Player
- 对于所有的目标平台(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,输入完成后敲一下回车
- File–>Save Project
1.3 导入TensorFlowSharp插件
- 下载TensorFlowSharp插件
- 打开Unity后,双击下载的TFSharpPlugin.unitypackage文件打开,点击Import导入插件
- 查看Assets–>ML-Agents–>Plugins–>Computer目录下该插件是否安装成功
二、Ball3D入门操作
- 在Project窗口中,点开Assets/ML-Agents/Examples/3DBall路径,打开3DBall场景
- 在Hierarchy窗口中,选中Ball3DAcademy对象的子对象Ball3DBrain,在Inspector窗口中检视其属性
- 在Ball3DBrain的Brain组件中,将Brain Type改成Internal
- 在Project窗口中,点开Assets/ML-Agents/Examples/3DBall/TFModels路径
- 将模型文件3DBall从TFModels文件夹中拖给Ball3DBrain的Brain组件下的Graph Model
- 点击Play按钮,就能看到平台在用训练好的模型来试图平衡小球
三、训练、查看训练效果
3.1 在Unity中训练
- 选中Ball3DBrain,将Brain Type改成External
- 打开ml-agents-master中的python文件夹,所有训练相关的python代码都在这个文件夹中
- 如果要修改训练参数,打开python文件夹中的trainer_config.yaml文件修改相应参数
- 在python文件夹中打开命令行终端(如果在其他地方打开了终端,则将路径切换至python下)
- 如果TensorFlow等安装在了Anaconda的环境中,则激活该环境,如:activate ml-agents
- 在终端输入:python learn.py --run-id=<run-identifier> --train
- run-identifier是给每次训练起的名字,方便管理多次训练结果
- --train告诉 learn.py
- 当Start training by pressing the Play button in the Unity Editor 的提示出现后,在Unity中按下Play按钮,开始训练
- 训练完成后,模型文件将保存在python/models/<run-identifier>目录下。将该目录下的editor_<academy_name>_<run-identifier>.bytes文件复制到unity-environment/Assets/ML-Agents/Examples/3DBall/TFModels
- 在Unity中,选中Ball3DBrain,将Brain Type改成Internal,将editor_<academy_name>_<run-identifier>.bytes拖给Graph Model
- 点击Play按钮,就能看到平台在用你自己训练的模型来试图平衡小球!!!
3.2 利用Jupyter Notebook训练
暂时不用,懒得先写了
3.3 利用TensorBoard查看训练效果
- 在python文件夹中打开命令行终端
- 激活安装了TensorBoard的Anaconda环境
- 在终端输入:tensorboard --logdir=summaries
- 打开浏览器,打开端口localhost:6006,就能看到训练信息了
3.4 导出TensorFlow模型
ML-agents利用TensorFlow进行训练,训练完成的模型保存在python/models/<run-identifier>目录下的raw_graph_def.pb中,并自动将其转变成.bytes文件以供Unity导入和使用,因此如果想导出训练完的模型做他用,直接读取.pb文件即可
- 在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)
- 在python文件夹中打开命令行终端
- 激活安装了TensorBoard的Anaconda环境
- 在终端输入:tensorboard --logdir=log
- 打开浏览器,打开本地端口localhost:6006,就能看到模型信息了