Unity 中国 地址 : Unity 中国 ML-Agents 示例下载
进入官方网站
点击机器学习代理
ML_Agents: 下载GitHub 项目.
下载 机器学习项目 选择想要下载的版本
当然你也可以在主页自主点击文档。
Python 下载地址
使用 ML-Agents Toolkit 的条件:
重要的是:1. Unity
2. Python(根据版本不同下载不同的,我这里使用的是 3.7)
3. Anaconda (Python 可视化窗口软件)
这里点击安装就会跳转 Python 下载界面
选择你想要安装的版本下载。下载完毕之后默认安装就行。
Anaconda 官方网站
打开 Anaconda 官方网站
下载 Anaconda 下载完毕之后看自己的喜好安装,尽量不要有中文路径!!!!
下载安装完毕之后 按菜单键 找到Anaconda Prompt 打开
键入 conda --version 查看是否有返回值 如果没有 就是需要添加环境变量
搜索栏 搜索环境变量
点击环境变量按钮
找到 系统变量的 Path 点击编辑 当然双击也是可以的
点击新建将这四条添加进去:
%UserProfile%\Anaconda3\Scripts
%UserProfile%\Anaconda3\Scripts\conda.exe
%UserProfile%\Anaconda3
%UserProfile%\Anaconda3\python.exe
添加完毕之后一路确认
点击应用 确定 Anaconda环境变量就添加好了
新建自己的环境
等待加载
加载完毕之后左键点击,再点击 Open Treminal 打开 虚拟环境
您必须在安装 ML-Agents 之前单独安装 PyTorch 包
PyTorch 包安装命令:
pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
安装 ML-Agents包 命令:
python -m pip install mlagents==0.28.0
如果到目前为止都没有什么报错,基本上就算可以正常联通了。
ML-Agents 入门指南
解压 GitHub ML-Agents 压缩包
导航到克隆 ML-Agents 存储库的文件夹(看你解压在那个位置)复制路径
我的路径是:D:\Unity\Plug-in\ML\ml-agents-release_19\ml-agents-release_19
导航到 ML-Agents 根目录
训练环境运行:
mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun05
config/ppo/3DBall.yaml是我们提供的默认训练配置文件的路径。该config/ppo文件夹包含我们所有示例环境的训练配置文件,包括 3Dball
run-id 是此培训课程的唯一名称
当屏幕上显示“按 Unity 编辑器中的播放按钮开始训练”消息时,您可以在 Unity 中按“播放”按钮开始在编辑器中进行训练。
Unity 运行效果:
如果mlagents-learn运行正确并开始训练,您应该会看到如下内容:
观察训练进度命令:
tensorboard --logdir results
退出训练: Ctrl+C
停止训练后 在浏览器 键入 http://localhost:6006/ 可以查看训练进度。
最重要的统计数据是Environment/Cumulative Reward 应该在整个训练过程中增加,最终收敛到100代理可以积累的最大奖励附近。
恢复训练,请再次运行相同的命令,并附加--resume标志
恢复训练命令:
mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun05 --resume
索引到 存储库的文件夹 results 文件下
打开你的训练文件夹 就是 run-id 文件名称
选中最新的训练文件。
也可以 直接选中外部的 .onnx 文件
导入 Unity
搭载:
训练模型 赋值
运行效果:
ML-Agents 打造新的学习环境官方地址
打开 Unity Package Manager
点击磁盘添加包
在 ML-Agents 根目录下 找到 com.unity.ml-agents 文件夹 打开
选中 package.json 导入
导入成功后 可以Packahes 文件夹 下 找到 MLAgents 文件夹
Target 目标物体创建:参数自己感觉合适就行
地面创建:参数自己感觉合适就行
代理器 创建
创建之后的层级
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;
public class RollerAgent_ZH : Agent
{
[Header("目标")]
public Transform Target;
[Header("增强力系数")]
public float _ForceMultiplier = 10;
[Header("移动组件")]
Rigidbody _RigiBody;
void Start()
{
_RigiBody = GetComponent<Rigidbody>();
}
///
/// 设置新集的环境
/// 场景以随机方式初始化,以使代理能够学习在各种条件下解决任务
///
public override void OnEpisodeBegin()
{
// 如果特工掉下去,动量为零
if (this.transform.localPosition.y < 0)
{
this._RigiBody.angularVelocity = Vector3.zero;
this._RigiBody.velocity = Vector3.zero;
this.transform.localPosition = new Vector3(0, 0.5f, 0);
}
// 将目标移动到新点
Target.localPosition = new Vector3(Random.value * 8 - 4,
0.5f,
Random.value * 8 - 4);
}
///
/// 观察环境
/// 代理收集的信息包括目标的位置、代理本身的位置以及代理的速度
///
///
public override void CollectObservations(VectorSensor sensor)
{
// 目标和代理位置
sensor.AddObservation(Target.localPosition);
sensor.AddObservation(this.transform.localPosition);
// 代理速度
sensor.AddObservation(_RigiBody.velocity.x);
sensor.AddObservation(_RigiBody.velocity.z);
}
///
/// 动作和奖励逻辑
///
///
public override void OnActionReceived(ActionBuffers actionBuffers)
{
// 动作, size = 2
Vector3 controlSignal = Vector3.zero;
controlSignal.x = actionBuffers.ContinuousActions[0];
controlSignal.z = actionBuffers.ContinuousActions[1];
_RigiBody.AddForce(controlSignal * _ForceMultiplier);
// 奖励
float distanceToTarget = Vector3.Distance(this.transform.localPosition, Target.localPosition);
// 达到目标
if (distanceToTarget < 1.42f)
{
SetReward(1.0f);
EndEpisode();
}
// 掉下来的平台
else if (this.transform.localPosition.y < 0)
{
EndEpisode();
}
}
///
/// 键盘控制代理
///
///
public override void Heuristic(in ActionBuffers actionsOut)
{
var continuousActionsOut = actionsOut.ContinuousActions;
continuousActionsOut[0] = Input.GetAxis("Horizontal");
continuousActionsOut[1] = Input.GetAxis("Vertical");
}
}
搭载详情:
需要新添加组件: DecisionRequester
注意:参数更改!参数更改!参数更改! 重要的事情说三遍。
打开 Anaconda 切换环境 左键打开 虚拟环境
导航到 ML-Agents 根目录
behaviors:
RollerBall:
trainer_type: ppo
hyperparameters:
batch_size: 10
buffer_size: 100
learning_rate: 3.0e-4
beta: 5.0e-4
epsilon: 0.2
lambd: 0.99
num_epoch: 3
learning_rate_schedule: linear
beta_schedule: constant
epsilon_schedule: linear
network_settings:
normalize: false
hidden_units: 128
num_layers: 2
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
max_steps: 500000
time_horizon: 64
summary_freq: 10000
在 config 文件夹下 创建 .tex 文件
添加文件内容 就是 上面的代码
更改名称
如果你也是出现这样的错误,就说明:
在此运行ID中找到以前的数据。
要么指定一个新的运行ID,使用 --resume 恢复运行
要么使用 --force 参数覆盖现有的数据。
我这里选择的是覆盖执行 --force
执行命令:
首次执行:
mlagents-learn config/rollerball_config.yaml --run-id=RollerBall
恢复运行:
mlagents-learn config/rollerball_config.yaml --run-id=RollerBall --resume
覆盖执行:
mlagents-learn config/rollerball_config.yaml --run-id=RollerBall --force
命令执行之后点击 播放按钮 就能看到效果了
训练结果:
第一个框选的是:训练模型输出路径。
第二个框选的是:模型训练详情。Ctrl + C 浏览器地址栏查看
模型训练结果:
导入Unity
最终效果:
清华大学开源软件镜像站
Anaconda 官方网站
ML-Agents GitHub 项目地址.
Unity 中国 ML-Agents 示例下载
Python 下载地址
安装 PyTorch 包地址
Unity ML-Agents 工具包文档地址
Unity ML-Agents 安装文档地址
Unity ML-Agents入门指南文档地址
Unity ML-Agents 打造新的学习环境文档地址
Unity ML-Agents 使用-Tensorboard.md文档地址
克隆 ML-Agents Toolkit 存储库(可选)
git clone --branch release_19 https://github.com/Unity-Technologies/ml-agents.git
(Windows) 安装 PyTorch(必选)
pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
安装 mlagentsPython 包(必选)
python -m pip install mlagents==0.28.0
高级:用于开发的本地安装(注意安装顺序)(可选)
pip3 install torch -f https://download.pytorch.org/whl/torch_stable.html
pip3 install -e ./ml-agents-envs
pip3 install -e ./ml-agents
首次执行:
mlagents-learn config/rollerball_config.yaml --run-id=RollerBall
恢复运行:
mlagents-learn config/rollerball_config.yaml --run-id=RollerBall --resume
覆盖执行:
mlagents-learn config/rollerball_config.yaml --run-id=RollerBall --force
停止训练:
Ctrl + C
观察训练进度:
tensorboard --logdir results
暂时先这样吧,如果有时间的话就会更新,实在看不明白就留言,看到我会回复的。
路漫漫其修远兮,与君共勉。