栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity 机器学习(ML-Agents) 基础

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity 机器学习(ML-Agents) 基础

Unity 机器学习 ML-Agents 基础
  • Unity 官方示例下载
    • ML-Agents 部分
    • Python 下载
  • Anaconda
    • Anaconda 环境变量
    • Anaconda 基础环境
    • Anaconda 虚拟环境构建 ML-Agents
      • 安装 ML-Agents Python 包
      • 安装 ML-Agents 包
  • ML-Agents 入门指南
    • Unity Hub 部分
    • 虚拟环境 训练
      • 虚拟环境 训练运行:
      • 虚拟环境 开始训练:
      • 虚拟环境 观察训练进度:
      • 虚拟环境 停止训练
      • 虚拟环境 恢复训练
      • 虚拟环境 训练模型
  • ML-Agents 打造新的学习环境
    • ML-Agents 资产导入
    • Unity 场景创建
    • Unity 代码部分
  • Anaconda 执行
    • rollerball_config.yaml 机器学习逻辑处理代码
    • Anaconda 虚拟环境
  • 地址合集
  • 虚拟环境命令小结
    • 虚拟环境安装
    • 虚拟环境 训练命令

Unity 官方示例下载

Unity 中国 地址 : Unity 中国 ML-Agents 示例下载

进入官方网站

点击机器学习代理

ML-Agents 部分

ML_Agents: 下载GitHub 项目.

下载 机器学习项目 选择想要下载的版本


当然你也可以在主页自主点击文档。


Unity ML-Agents 工具包文档地址

Python 下载

Python 下载地址

使用 ML-Agents Toolkit 的条件:
重要的是:1. Unity 
		 2. Python(根据版本不同下载不同的,我这里使用的是 3.7)
		 3. Anaconda (Python 可视化窗口软件)

这里点击安装就会跳转 Python 下载界面

选择你想要安装的版本下载。下载完毕之后默认安装就行。

Anaconda

Anaconda 官方网站

打开 Anaconda 官方网站

下载 Anaconda  下载完毕之后看自己的喜好安装,尽量不要有中文路径!!!!

Anaconda 环境变量
下载安装完毕之后 按菜单键 找到Anaconda Prompt 打开

键入 conda --version 查看是否有返回值 如果没有 就是需要添加环境变量

搜索栏 搜索环境变量

点击环境变量按钮

找到 系统变量的 Path 点击编辑 当然双击也是可以的

点击新建将这四条添加进去:

%UserProfile%Anaconda3Scripts

%UserProfile%Anaconda3Scriptsconda.exe

%UserProfile%Anaconda3

%UserProfile%Anaconda3python.exe

添加完毕之后一路确认


点击应用 确定 Anaconda环境变量就添加好了

Anaconda 基础环境
新建自己的环境 

等待加载

加载完毕之后左键点击,再点击 Open Treminal 打开 虚拟环境

Anaconda 虚拟环境构建 ML-Agents 安装 ML-Agents Python 包
您必须在安装 ML-Agents 之前单独安装 PyTorch 包
PyTorch 包安装命令:
pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html

安装 ML-Agents 包
安装 ML-Agents包 命令:
python -m pip install mlagents==0.28.0
如果到目前为止都没有什么报错,基本上就算可以正常联通了。

ML-Agents 入门指南

ML-Agents 入门指南

Unity Hub 部分
解压 GitHub  ML-Agents 压缩包


虚拟环境 训练
导航到克隆 ML-Agents 存储库的文件夹(看你解压在那个位置)复制路径
我的路径是:D:UnityPlug-inMLml-agents-release_19ml-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 打造新的学习环境

ML-Agents 打造新的学习环境官方地址

ML-Agents 资产导入
打开 Unity Package Manager

点击磁盘添加包

在 ML-Agents 根目录下 找到 com.unity.ml-agents 文件夹  打开

选中 package.json 导入

导入成功后 可以Packahes 文件夹 下 找到 MLAgents 文件夹

Unity 场景创建
Target  目标物体创建:参数自己感觉合适就行

地面创建:参数自己感觉合适就行

代理器 创建 

创建之后的层级

Unity 代码部分
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();
    }



    /// 
    /// 设置新集的环境
    /// 场景以随机方式初始化,以使代理能够学习在各种条件下解决任务
    /// 
    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 执行
打开 Anaconda 切换环境 左键打开 虚拟环境

导航到 ML-Agents 根目录

rollerball_config.yaml 机器学习逻辑处理代码
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 文件

添加文件内容 就是 上面的代码

更改名称

Anaconda 虚拟环境
如果你也是出现这样的错误,就说明:
 在此运行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

暂时先这样吧,如果有时间的话就会更新,实在看不明白就留言,看到我会回复的。
路漫漫其修远兮,与君共勉。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号