开始一个全新的Unity机器学习项目-ML-Agents

  • 目录
  • 一、安装Anaconda并新建一个环境
  • 二、配置torch和mlagents
    • 1. 进入虚拟环境(我的环境命名为ml-agents)
    • 2. pip install torch
    • 3. pip install mlagents
  • 三、最激动人心的——在Unity里动起来
    • 1. Unity 场景搭建
    • 2. 配置文件.yaml
    • 3. 执行训练文件
  • 四、最终的结果
    • 1. 训练结果的输出
    • 2. 训练结果的使用
  • 写在最后

目录

基于Unity的ML-Agents 从零开始构建一个可以成功运行的项目。重点罗列出torch和mlagents配置中可能存在的问题。

一、安装Anaconda并新建一个环境

这部分内容基本没有什么太大的问题,建议参考以下几个链接就能顺利完成。

  1. 一个我之前的工作 Anaconda下载安装
  2. Anaconda的环境变量配置+新建环境
  3. 相似的Anaconda配置工作
  4. 相似的再来一个(就不信不能解决你的问题)

二、配置torch和mlagents

1. 进入虚拟环境(我的环境命名为ml-agents)

① 打开 Anaconda Prompt

② 激活虚拟环境,输入conda activate XXXX(虚拟环境名称)

2. pip install torch

① 首先,明确自己的虚拟环境下安装的python版本(我的是==3.7)。
输入python -V查询

② 两种方法安装:

  1. pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
    但是,我自己在尝试的时候,通常会超时,而且还会出现下载为GPU版本的情况。所以我更推荐第二种下载方式。
  2. 我们在这个手动下载网页链接下找到符合自己python对应的CPU版本的torch,下载到本地进行安装。
    大家可以参考我现在的版本。

    ③ 在上述第二种方法下,我们吧这个.whl后缀的文件现在至本地,找到它的绝对路径(我的路径在 D:\Donwloads\ )。等待完成即可。

3. pip install mlagents

  1. 这部分基本没什么问题,输入pip install mlagents -i https://pypi.douban.com/simple
    慢的话后面加上清华镜像就可以了。

  2. 测试一下是否成功安装mlagents,输入mlagents-learn --help
    A. 正常显示情况。

    B. protobuf 版本太高——那就uninstall后重新下一个低版本的
    —B.1 报错如下:

    —B.2 解决如下,输入pip install protobuf==3.19.0 -i https://pypi.douban.com/simple

    基本上我遇到的问题就是这个,再一个就是提示GPU版本错误,关于这个问题只要你在第二个步骤是下载CPU版本的torch 就没有问题了。

三、最激动人心的——在Unity里动起来

1. Unity 场景搭建

可完全参照这篇文章操作搭建环境
但是 代码中还是有一些问题需要注意。

  1. OnActionReceived()函数中,使用浮点型数组会报错,所以还是在函数中声明变量类型为ActionBuffers 变量名为vectorAction
    在调用的时候使用 vectorAction.ContinuousActions[0]修改动作。
    原本

    修改
  2. 在重写Heuristic()方法时也一样。
    原本

    修改

    至此,代码部分没有任何问题。训练时记得把脚本中的Behavior Type 修改回Default

2. 配置文件.yaml

这里也可以参考训练网络-配置文件
这个压缩包是Unity官方给出ML-Agents
文件名为 rollingball_config.yaml
文件位置 D:\Downloads\ml-agents-main\ml-agents-main\config\ppo\

3. 执行训练文件

  1. 我们从Anaconda Prompt中激活新建的虚拟环境(同第1步骤);
  2. 进入压缩包所在位置 即 D:\Downloads\ml-agents-main\ml-agents-main\config\ppo\
  3. 输入mlagents-learn ./rollingball_config.yaml --run-id rollingball 其中 id 后的名称为训练后结果存放的位置;
  4. 不出意外会报错 ;
  5. 不着急我们更新一下就好了 参考;
    ① 执行指令获得帮助 python -m mlagents.trainers.upgrade_config -h

    ② 执行 python -m mlagents.trainers.upgrade_config rollingball_config.yaml rollingball_config.yaml

    ③ 再执行一次即能看到令人激动的UNITY了! mlagents-learn ./rollingball_config.yaml --run-id=RollingBall --force ,其中force表示强制覆盖原有文件

    如果出现以上图片,恭喜你配置成功了,而且只需要在Unity中点击运行即可开始训练了!!!!

四、最终的结果

1. 训练结果的输出

我们在第三步骤-3.执行训练文件-③中输入mlagents-learn ./rollingball_config.yaml --run-id=RollingBall --force,所以训练结果就在这里。

2. 训练结果的使用

我们只需要把这个训练好的.onnx文件拖进Unity,然后给到Behaviors parameters——Model就可以直接看到训练后的效果。

写在最后

最近忙完了手头的工作,开始在Unity下试试看机器学习,看看能有什么新突破和发现吧。六月的阴雨,带走离别,迎来酷暑。继续向前冲吧,谁说站在光亮里的才算英雄呢~

Unity中训练一个ML-Agents项目—解决torch和mlagents配置问题相关推荐

  1. 学习用C#在Unity中创建一个2D Metroidvania游戏

    学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...

  2. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  3. Unity:图片的一个像素单位对应Unity中的一个距离单位

    当我们使用unity开发时2D项目时,如果需求是一个像素单位就要对应unity中的一个距离单位, 也就是:图片的1像素 = unity中的1个距离单位. 在该图片的属性面板中可以看到有个属性是:Pix ...

  4. 学习在Unity中创建一个动作RPG游戏

    游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...

  5. Visual Stdio 无法直接启动带有“类库输出类型”的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目!

    Visual Stdio 无法直接启动带有"类库输出类型"的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目.将这个可执行项目设置为启动项目! 参考文章: (1) ...

  6. Unity中获取一个物体下所有的子物体的方法

    Unity中获取一个物体下所有的子物体的方法 方法1(获取全部子物体,无论子物体SetActive是否为true): using System.Collections; using System.Co ...

  7. Eclipse导入Maven项目解决Build Path不能配置问题

    Eclipse导入Maven项目解决Build Path不能配置问题 参考文章: (1)Eclipse导入Maven项目解决Build Path不能配置问题 (2)https://www.cnblog ...

  8. unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子

    之前有业界大佬建议我去了解下Unity的PBR.说来惭愧,我查找了下资料才发现自己在这方面的知识居然是一片空白.经过几周的学习与尝试我对这一块算是有了初步的了解,于是写了这篇文章,一方面对自己学到的东 ...

  9. 如何在 Unity 中制作一个道具系统

    原文:How to make a Power-Up System in Unity 作者:Kevin Small 译者:kmyhy 如果音速小子中没有金色戒指和电动鞋,超级马里奥中没有了蘑菇,或者吃豆 ...

最新文章

  1. ssm插入数据时候栈溢出_大话数据结构笔记(4)
  2. 关于simplemodal的动态加载
  3. C中结构体的存储分配
  4. .Net Core 三大Redis客户端对比和使用心得
  5. “温室里的花朵”也要直面困难
  6. Android elevation的使用阴影
  7. 又到开学季 学习神器走一波 物联网开发板
  8. html风格的滚动条
  9. 找到没使用过的ip地址
  10. 基于内外环PD控制的四旋翼飞行器控制系统simulink仿真
  11. R语言随机抽样及分层抽样
  12. Cocos2d-x制作《单机斗地主》源码解剖1:创建一副扑克牌
  13. 怎么把epub转换成txt文本
  14. sql server 2008服务无法启动的原因和解决办法
  15. Java读取文件夹下的文件并进行处理
  16. docker-compose 部署shipyard
  17. 转置卷积中的棋盘效应
  18. 亚马逊账号关联:一生只能有一个店铺
  19. 网站规划通识:原型图绘制的一些注意事项
  20. 「数据游戏」:使用 ARIMA 算法预测三日后招商银行收盘价

热门文章

  1. 手写中文数字识别PyTorch实现(全连接卷积神经网络)
  2. 读书笔记—《销售铁军》随记2
  3. UML统一建模(语言)和数据库建模
  4. Android实现图片放大缩小
  5. WHUT第九周训练整理
  6. 《动手学机器人学》第四节(上):位姿描述
  7. 尚硅谷2020微服务分布式电商项目《谷粒商城》-商品搜索
  8. C语言函数的基础运用-----二项式定理的运用
  9. win7计算机总是卡住,win7系统电脑经常死机的几种原因及修复方法
  10. 2021年中国生鲜电商行业发展回顾及未来行业发展策略分析:要增强生鲜农产品的稳定性、降低运营成本[图]