Unity 对接 ML-Agents 初探

news/2024/4/23 17:38:48/文章来源:https://blog.csdn.net/EverNess010/article/details/129141930

一、ML-Agents 是什么

The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents. We provide implementations (based on PyTorch) of state-of-the-art algorithms to enable game developers and hobbyists to easily train intelligent agents for 2D, 3D and VR/AR games. Researchers can also use the provided simple-to-use Python API to train Agents using reinforcement learning, imitation learning, neuroevolution, or any other methods. These trained agents can be used for multiple purposes, including controlling NPC behavior (in a variety of settings such as multi-agent and adversarial), automated testing of game builds and evaluating different game design decisions pre-release. The ML-Agents Toolkit is mutually beneficial for both game developers and AI researchers as it provides a central platform where advances in AI can be evaluated on Unity’s rich environments and then made accessible to the wider research and game developer communities.

译文:
Unity Machine Learning Agents (ML-Agents) 是一款开源的 Unity 插件, 使得我们得以在游戏环境和模拟环境中训练智能 agent。您可以使用 reinforcement learning(强化学习)、imitation learning(模仿学习)、neuroevolution(神经进化)或其他机器学习方法, 通过简单易用的 Python API进行控制,对 Agent 进行训练。我们还提供最先进算法的实现方式(基于 TensorFlow),让游戏开发者和业余爱好者能够轻松地 训练用于 2D、3D 和 VR/AR 游戏的智能 agent。 这些经过训练的 agent 可用于多种目的, 包括控制 NPC 行为(采用各种设置, 例如多个 agent 和对抗)、对游戏内部版本进行自动化测试、以及评估不同游戏设计决策的预发布版本。ML-Agents 对于游戏开发者和 AI 研究人员双方 都有利,因为它提供了一个集中的平台, 使得我们得以在 Unity 的丰富环境中测试 AI 的最新进展, 并使结果为更多的研究者和游戏开发者所用。


二、环境说明

操作环境:Win10
ML-Agent 版本:Release 20 (所有版本下载地址)
Unity 版本:2021.3.18f1
Anaconda 安装文件:Anaconda3-2022.10-Windows-x86_64.exe (官方网站) 该版本自带 Python3.9


三、安装 Anaconda

Anaconda,译为大蟒蛇,是一个开源的 Python 发行版本,其包含了 conda、Python 等180多个科学包及其依赖项。

在查阅网络资料的过程中,有些文章是直接使用 Python + pip 的形式进行设置,而有些是使用 Anaconda 中的 Python + conda 来进行设置。
conda 是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
pip 是用于安装和管理软件包的包管理器。
conda 比 pip 的环境管理更为简单,并且不会影响系统自带的 Python,而 pip 的限制较多并且仅适用于 Python。

由于 ML-Agent 的官方文档中本身就需要设置 Python 的虚拟环境,而 Anaconda 可以使用 conda 去更加简单的配置虚拟环境,所以选择安装 Anaconda。

具体的安装方式基本就是点击官方的 exe 文件进行安装,可以参阅此篇文章

其中需要注意的是:
  1. 在 windows 环境下,安装的路径不能含有空格,同时不能是 “unicode” 编码。
  2. 在 windows 环境下,安装的路径不能含有空格,同时不能是 “unicode” 编码。
  3. 在 windows 环境下,安装的路径不能含有空格,同时不能是 “unicode” 编码。

重要的事情说三遍。一开始因为习惯将文件安装到自己定义的 Program Files 文件夹中,而此文件夹名称带有空格,结果就是各种报错。后来看到一篇文章里提到了这个问题才知道。

验证安装是否成功:
  1. 点击 “开始” 菜单
  2. 点击 “Anaconda3 (64-bit)”
  3. 点击 “Anaconda Prompt (Anaconda3)” 在控制台中输入 conda list,可以查看已经安装的包名和版本号,若正常显示就说明安装成功。
  4. 或者输入 conda --version 能够成功显示版本号也说明安装成功,如下所示。
(base) C:\Users\Administrator>conda --version
conda 23.1.0

之后使用 Anaconda 时,可以直接去开始菜单 -> Anaconda3 (64-bit) -> Anaconda Prompt (Anaconda3)


四、对接 ML-Agents 工程

看了一圈网上的文章,由于有些文章的时间比较久了,所以可能跟目前的新版本不太匹配,会造成一些误区。
推荐和官方文档一起食用,味道更佳。
目前最新的的 git 工程版本是 Release 20,可直接在 git 下载,或者在所有版本下载地址下载
在这里插入图片描述

需要注意的是,不同的版本有各自的配置需求,这些需求都会在官方文档中提及,需要引起重视。

Release 20 版本的需求如下:

  • Unity 版本需要是 2021.3 或更高
  • Python 版本需要是 3.8.13 或更高

需要着重提起的问题是关于 Unity 的 ml-agents 组件,目前网上的文章基本都是推荐在 Unity 的 Package Manager 下载最新版 ML-Agents 组件,实际这样做可能会导致一系列的报错。
在这里插入图片描述
根据官方文档的流程,正确的方式如下:

  • 导航到目录 Window -> Package Manager
  • 点击左上角 +
  • 选择 Add package from disk...
    在这里插入图片描述
  • 在目录中,选择从 git 上下载并解压的 Release 20 版压缩包,里面有一个文件夹叫 com.unity.ml-agents

在这里插入图片描述

  • 选择 package.json 文件并打开

在这里插入图片描述
稍等片刻,就可以看到引入的本地插件

在这里插入图片描述
但是此时依然会有报错,而这就是另一个目前网上文章会导致的误区:只安装 ML-Agents 组件是不够的

根据官方文档的流程,我们还需要安装一个叫 com.unity.ml-agents.extensions 的插件,而流程也和上面的大致相同,该插件同样可以从 Release 20 的压缩包中找到。
在这里插入图片描述
在这里插入图片描述

安装完成后如下所示:
在这里插入图片描述

另外,如果将全部 Release 20 中的示例都拷贝进入 Unity 工程中时,可能还需要引入 Input System 插件,该插件直接从 Package Manager 中下载最新版即可。

此外,需要注意的是,如果在引入本地插件之后,改变了该插件的位置,会导致工程报错,此时需要在 Package Manager 中重新定位一下插件。


五、在 Anaconda 中创建 ML-Agent 环境

打开 Anaconda Prompt 进入控制台

// 查看已有的所有环境
conda-env list

如果没有创建过环境时,就会显示如下:

(base) C:\Users\Administrator>conda-env list
# conda environments:
#
base                  *  C:\anaconda\Anaconda3

创建环境的命令如下:

// 创建新环境
conda create -n ml-agents python=3.9
  • ml-agents 是环境名称,此处可以自己设置。
  • python=3.9 是将该环境设置成 Python 3.9 版本,此处也可以自己配置,但是需要符合 ML-Agent 的最低标准。

激活环境
打开 Anaconda Prompt 时默认的路径如下:

(base) C:\Users\Administrator>
// 激活 ml-agents 环境
(base) C:\Users\Administrator>activate ml-agents(ml-agents) C:\Users\Administrator>

可以看到,激活后前方的 (base) 变成了 (ml-agents),说明此时处于 ml-agents 的虚拟环境中。

退出环境:
当前版本退出环境的命令如下:

// 退出 ml-agents 环境
(ml-agents) C:\Users\Administrator>conda deactivate(base) C:\Users\Administrator>

可能是由于版本问题,网上有些文章中的退出命令和此处使用的不同。

升级 pip:
进入 ml-agents 环境,执行升级 pip 的命令,保证 pip 是比较新的版本,否则可能在下载其他插件的过程中出现问题。

(ml-agents) C:\Users\Administrator>python.exe -m pip install --upgrade pip

六、安装 PyTorch

  • 激活创建的 ML-Agent 环境
(base) C:\Users\Administrator> activate ml-agents
  • 根据官方文档,使用 pip 指令下载 PyTorch,该插件较大需要耐心等待,如果中途报错可能是和网络有关,确保 pip 是最新版本,然后尝试重新下载,或者找一下其他的源。
(ml-agents) C:\Users\Administrator>pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html

七、安装需要的 Python 包

为了进行自定义的训练,还需要安装两个 Python 包,这两个包都包含在 Release 20 的压缩文件中。

  1. mlagents :包含了机器学习算法,使用户能够在 Unity 场景中训练行为。
  2. mlagents_envs :包含一组 Python API,用于与 Unity 场景交互,它是促进 Unity 场景和 Python 机器学习算法之间数据消息传递的基础层。因此,mlagents 依赖于 mlagents_envs

安装方式是打开 Anaconda Prompt,激活之前创建的 ml-agents 环境,然后通过 cd 命令分别导航到 Release 20 解压的文件夹内对应的目录中,之后使用 pip 命令进行安装。

pip install .

至此,初步的 Unity ML-Agents 环境就布置结束了,接下来就可以尝试使用官方给出的几个 Demo 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73476.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测 目录回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循…

Unity(三)--导入3d模型并实现UGUI界面上嵌入3d模型

Unity支持的常用模型格式及建模软件: 格式建模软件网格动画材质骨骼FBX3DMax,C4D,Blender,Maya等√√√√OBJ3DMax,C4D,Blender,Maya等√目录 导入模型并调整好位置创建2D场景(UGUI)使3d模型显示在图片前面方法一:使用Render Texture注意点导入模型并调整好位置 以FBX为例,…

百万数据excel导出功能如何实现?

最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了。 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助。 原始需求:用户在UI界面上点击全部导出按钮…

如果不使用时钟同步工具,linux如何解决时钟同步问题?仅需要一行命令即可。

这是一篇日记,记录了上帝下凡出手,解救苍生与水火之中的神奇文章,如果你也有过类似的经历,留言关注,咱们交流一下~ 目录 背景(如果不想知道可以跳过) 一行神奇的命令 一段一段的研究 总结 背…

go atomic 原子操作

在 go 语言 string 类型思考 中有说到 -race 竞态检测,多个 goroutine 并发读写同一个变量是会触发。竞态竞争导致的问题是:结果不可控,你也无法预料最终的结果是什么。 比较棘手的竞态竞争会发生在一些切片类型上,在遍历读取切片…

221 最大正方形

#221 最大正方形 题目描述 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例 1: 输入:matrix [["1","0","1","0","0"],["1",&…

【LeetCode】2357. 使数组中所有元素都等于零

2357. 使数组中所有元素都等于零 题目描述 给你一个非负整数数组 nums 。在一步操作中,你必须: 选出一个正整数 x ,x 需要小于或等于 nums 中 最小 的 非零 元素。nums 中的每个正整数都减去 x。 返回使 nums 中所有元素都等于 0 需要的 …

经典设计模式MVC理解

MVC是模型(Model)、视图(View)、控制器(Controller)的简写,将业务逻辑、数据、显示分离的方法来组织代码。今天简单回顾一下。 mvc释义理解 M代表模型(Model),表示业务规则封装。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据…

图表类可视化开发采坑记录之旅3

如图所示的扇形图样式改造&#xff1a; 开发框架&#xff1a; 基于vue2&#xff0c;echarts5.0.0 基于组件&#xff1a; html代码&#xff1a; <div class"showCanvas"><div id"midError"></div> </div> css代码&#xff1a; …

【华为OD机试模拟题】用 C++ 实现 - 去除多余空格(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

运动蓝牙耳机什么牌子好,运动蓝牙耳机品牌推荐

现在市面上运动耳机的品牌越来越多&#xff0c;还不知道选择哪一些运动耳机品牌&#xff0c;可以看看下面的一些耳机分享&#xff0c;运动耳机需要注意耳机的参数配置以及佩戴舒适度&#xff0c;根据自己最根本的使用需求来选择运动耳机。 1、南卡Runner Pro4骨传导蓝牙运动耳…

C/C++开发,无可避免的内存管理(篇一)-内存那些事

一、内存管理机制 任何编程语言在访问和操作内存时都会涉及大量的计算工作。但相对其他语言&#xff0c;c/c开发者必须自行采取措施确保所访问的内存是有效的&#xff0c;并且与实际物理存储相对应&#xff0c;以确保正在执行的任务不会访问不应该访问的内存位置。C/C语言及编译…

mongoDB的安装与使用

MongoDB安装MongoDB官方网站&#xff1a;https://www.mongodb.com/try/download/community-kubernetes-operator2软件安装权限不足&#xff1a;https://www.javaclub.cn/database/56541.htmlstep1:打开安装包直接点击Nextstep2&#xff1a;继续点击Nextstep3&#xff1a;点击自…

DMotion - 基于DOTS的动画框架和状态机

【博物纳新】专栏是UWA旨在为开发者推荐新颖、易用、有趣的开源项目&#xff0c;帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果&#xff0c;并探索将其应用到自己项目的可行性。很多时候&#xff0c;我们并不知道自己想要什么&#xff0c;直到某…

day51【代码随想录】动态规划之回文子串、最长回文子序列

文章目录前言一、回文子串&#xff08;力扣647&#xff09;二、最长回文子序列&#xff08;力扣516&#xff09;前言 1、回文子串 2、最长回文子序列 一、回文子串&#xff08;力扣647&#xff09; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目…

数据库防护做不好,分分钟要被勒索比特币,每个接触数据库的都必须知道

公司有个公网数据库被黑了&#xff0c;对方留言勒索0.006比特币&#xff0c;按目前比特币的价值&#xff0c;大概1009元人民币左右&#xff0c;虽然不多&#xff0c;但发生这个事情着实让人丢脸&#xff0c;说明平时对防护还做不到位&#xff01; 还好公司平时有做数据库防范措…

骨传导耳机靠谱吗,骨传导耳机的原理是什么

很多人刚开始接触骨传导耳机时都会具有一个疑问&#xff0c;骨传导耳机是不是真的靠谱&#xff0c;是不是真的不伤害听力&#xff1f;骨传导耳机传输声音的原理是什么&#xff1f; 下面就给大家讲解一下骨传导耳机传输声音的原理以及骨传导耳机对听力到底有没有伤害。 骨传导…

DeepLabV3+:对预测处理的详解

相信大家对于这一部分才是最感兴趣的&#xff0c;能够实实在在的看到效果。这里我们就只需要两个.py文件&#xff08;deeplab.py、predict_img.py&#xff09;。 创建DeeplabV3类 deeplab.py的作用是为了创建一个DeeplabV3类&#xff0c;提供一个检测图片的方法&#xff0c;而…

如何通过jar包得知maven坐标,以及如何替换依赖的依赖的版本

问题一&#xff1a;我只能得到这个jar包的名字&#xff0c;如果得知这个jar包的maven坐标&#xff08;groupId以及artifactId&#xff09;&#xff1f; 思路1&#xff1a;将jar包的名字&#xff08;去除版本号&#xff09;在mvn仓库中搜索&#xff0c;地址&#xff1a;https:/…

Linux期末考试应急

Linux期末考试应急 虚拟机添加硬盘、分区、格式化、挂载、卸载 fdisk -l#查看系统现有分区fdisk <指定磁盘>#指定磁盘分区sudo mkfs.ext3 <指定分区>#格式化磁盘###挂载磁盘1.新建一个目录sudo mkdir /mnt/test2.将指定分区挂载到对应目录sudo mount /dev/sdb10 /…