Unity 对接 ML-Agents 初探

news2025/7/26 8:26:31

一、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

-f 就是从指定 url 文件中查找包的下载链接,从后面紧跟的 url 参数获得的文件中,找 pip 要安装的包文件(而不是从默认的 pip 安装源)。


七、安装需要的 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.coloradmin.cn/o/368307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么很多人转行IT考虑后端开发Java?

顺应互联网时代发展的选择 在计算机广泛运用于社会的各个角落的今天,选择学习一门计算机语言真的很不错,它会让你的生活从此与众不同。软件渗透到组织的运营和管理的后台之中,形成了组织运营支撑平台。这种形态是传统软件的重要应用场景。在…

matlab simulink Buck三电平dcdc变换器

1、内容简介略653-可以交流、咨询、答疑2、内容说明三电平dc/dc变换器的发展是建立在三电平逆变器的基础上的,由于在三电平dc/dc变换器中每个开关管的电压应力是输入直流电压的一半,具有降低开关管电压应力、减小输入输出滤波器大小、减小储能电感和电容…

【Linux应用】进程间通信消息队列

1.前言 进程间通信简称IPC(Inter process communication),进程间通信就是在不同进程之间传播或交换信息。 消息队列是进程通信的一种方式,本质是一个存储消息的链表,这些消息具有特定的格式及特定优先级。消息队列是…

新建一个虚拟环境来管理自己的pytorch环境

python只是一个编程语言,在开发具体软件时,可能还需要使用到各种的包,比如著名的 numpy,torch 等等。如果我们自己来管理则显得非常麻烦,于是便有了Anaconda这样一个类似容器的东西,它封装了python各种各样…

Spring Cloud入门篇 Hello World | Spring Cloud 1

一、专栏说明 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如:服务发现/注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 本文主要介绍Spring C…

功能测试三年,是应该改变了

前言 测试行业3年多经验,学历大专自考本科,主要测试方向web,PC端,wap站,小程序公众号都测试过,app也测过一些,C端B端都有,除功能外,接口性能也有涉猎,但是不…

JavaScript 两种方案打开文件对话框

JavaScript 两种方案打开文件对话框 文章目录JavaScript 两种方案打开文件对话框一、文件对话框二、传统方案表单元素🌈三、文件系统访问API💦四、更进一步使用六、代码仓库🌐七、参考资料💘七、推荐博文🍗一、文件对话…

ZYNQ双核处理器独立运行AMP

一、简介多核处理器从多核的结构上是否一致,分为两种基本架构:同构多核架构和异构多核架构。同构多核处理器是指系统中的处理器在结构上是相同的;而异构处理器是指系统中的处理器在结构上是不同的,这些处理器可以是通用处理器&…

MySQL递归查询 三种实现方式

1 建表脚本1.1 建表DROP TABLE IF EXISTS sys_region; CREATE TABLE sys_region (id int(50) NOT NULL AUTO_INCREMENT COMMENT 地区主键编号,name varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 地区名称,short_name varchar(50) CHARA…

WebDAV之π-Disk派盘+Cloud Player

Cloud Player 支持WebDAV方式连接π-Disk派盘。 推荐一款云媒体播放器是存储在常见云平台中的内容的通用播放器。 Cloud Player云媒体播放器是存储在常见云平台中的内容的通用播放器,无需将其下载到设备。支持以下云平台:Google Drive、DropBox、One Drive、WebDav等。此外,…

BI解析,告诉你企业为什么选择商业智能BI?

数据的价值目前在商业世界和现代化城市建设中尤为突出,先说商业世界,数据在这里成为了各领域企业的重要资产,不仅让众多企业重新构建了以数据为企业文化、核心驱动力的数据体系,还把企业的财务、销售、运营、市场、研发等不同部门…

写出高质量的前端代码之消除代码中的重复

软件开发中,有个很重要的DRY原则,即Dont Repeat Yourself,也就是不要重复自己。 重复的代码会带来以下问题: 开发效率低,重复造轮子不同人开发的同一类功能,质量层次不齐修改问题时可能会遗漏&#xff0c…

vue3 + vite + ts 集成mars3d

vue3 vite ts 集成mars3d 文章目录vue3 vite ts 集成mars3d前言一、创建一个vue3 vite ts项目二、引入mars3d相关依赖三、vite.config.ts 相关配置四、 新建DIV容器 创建地图前言 使用mars3d过程中,需要集成mars3d到自己的项目中,mars3d开发教程…

MFC实现曲柄滑块以及铰链四杆机构的运动仿真

创建MFC应用,选择单文档,在应用程序类型中的应用程序类型选择单文档,在项目样式中选择MFC standard,在用户界面功能中的命令行中选择 使用菜单栏和工具栏。这样选择界面更好看一点,下面给出截图:在资源视图…

代码随想录算法训练营第三十八天 | 理论基础 ,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

Day36 周日休息~一、参考资料理论基础https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 刷题大纲递推五部曲:确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确…

云计算专业和计算机专业哪个好就业?

云计算专业其实也是属于计算机类专业呢,他包括了计算机硬件设备、计算机网络、磁盘柜、操作系统、中间件、数据库、服务器/虚拟机、应用软件开发等技术内容,云计算技术是以IT服务的形式面向用户的;所以云计算不是一门技术,而是众多…

一个底层30岁的测试员的故事,连躺平都是奢望的....

背景 我是一个生活在某二线城市的测试员,家里面有两位小朋友,老大现在读幼小衔接,明年上小学,老二两岁多一点点,明年上幼儿园。家庭主要开支有房贷、车贷、车位贷、保险、时不时小意外、还有一笔 3万的信用卡分期&…

【亲测】PHP进销存源码 ERP多仓库管理系统 网络版手机端+小程序版进销存 二次开发

可电脑端操作,也可以小程序端操作,非常方便!适合小型企业个人使用。 服务端thinkphp5全套开源源码,uniapp前端全套开源 功能 1、支持采购单录入、审核、入库、退货等采购过程中的记录追踪 2、支持销售、出库、销售审核、出库审核…

Smtplib之发邮件模块

目录 创建Smtp对象 Smtp类中的方法 MIME MIMEBase MIMEBase MIMEMultipart MIMEApplication MIMEAudio MIMEImage MIMEText 实例 texthtml格式 发送带图片附件的邮件 发送带附件的邮件 含多种格式 SMTP模块 SMTP 简单传输协议,它是一组用于由源…

JAVA商城源码-多用户商城系统源码-B2B2C商城系统

项目介绍 三勾多商户小程序商城基于springbootelement-uiuniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 采…