Unity AI Sentis 基础教程

这篇具有很好参考价值的文章主要介绍了Unity AI Sentis 基础教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Sentis 是 AI 模型的本地推理引擎,它利用最终用户设备上的计算,而不是云服务器。它可以在可以部署 Unity 运行时的任何位置运行。它取代了 Barracuda 并解决了我们在 Barracuda 处于早期原型阶段时收到的许多反馈。最重要的是,Sentis 可以以游戏速度运行许多神经网络。Sentis 目前处于开放测试阶段,公开发布时可用于商业用途。届时Sentis 将对所有 Unity 用户免费开放,并可用于无限制的本地推理。

Unity AI Sentis基础教程

Sentis 允许您在ONNX 格式 进入 Unity 编辑器,然后在所有 Unity 的用户设备上实时优化和运行推理支持的平台。

可应用示例:
1.图像放大:放大低分辨率图像、模型、纹理等
2.风格迁移:将场景的外观或图像效果转换为新风格
3.不可玩角色 (NPC):自动对话
4.语音识别 (NLP):解释实时语音
5.身体/物体检测:使用相机
6.深度估计:使用相机(检测物体)
7.图像、视频和 3D 模型分类:检测屏幕上的对象(检测深度)
8.手写分类:检测手写字母、符号或数字
9.创造独一无二的玩家体验:生成无限独特的游戏场景
10.动画:将自动姿势绑定应用于刚体
11.模拟助手:用神经网络近似一个复杂的函数来驱动游戏逻辑
12.时间序列:异常检测、预测/预测

版本需求:Unity 2021.3 LTS(或更高版本)

Unity AI 内测资格申请

Unity AI 内测资格申请链接: Unity AI

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Unity 项目

项目创建

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Package Manager

1. 打开 Window -> Package Manager
2. 点击 加号
3. 选择 Add package by name

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

在输入框 键入 com.unity.sentis 并点击添加

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

在搜索框搜索 Sentis 如果有那就证明下载正确 
如果没有就可能是 Unity AI 内测资格 暂时还未通过

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

开始尝试

层级创建

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

代码搭载

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

模型下载

随便下载一个就行 我下载的是 MNIST-12

手写数字识别: 模型下载地址

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

只在放在 Assets 之下都行

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

识别图片

在这下载我不知道会不会有问题  要是下载完之后有问题的话  大家就在PS 中随便画一下就行

我这里的长宽是 28*28 

需要注意的是图片越大越消耗性能

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

完整代码

using UnityEngine;
using Unity.Sentis;
using Unity.Sentis.Layers;

/// <summary>
/// 手写体数字 识别
/// </summary>
public class ClassifyHandwrittenDigit_ZH : MonoBehaviour
{
    [Header("需要辨别的 输入")]
    public Texture2D _InputTexture;
    [Header("使用模型")]
    public ModelAsset _ModelAsset;

    //加载模型
    Model _RuntimeModel;
    //工作流
    IWorker _Worker;

    [Header("返回 概率列表")]
    public float[] _Results;

    void Start()
    {

    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            DiscernAndJudge(_InputTexture);
        }
    }

    /// <summary>
    /// 识别于判断
    /// </summary>
    public void DiscernAndJudge(Texture2D _Texture2D)
    {
        // 创建运行时模型
        _RuntimeModel = ModelLoader.Load(_ModelAsset);

        // 将 softmax 层添加到模型的末尾,而不是非 softmax 输出
        string _SoftmaxOutputName = "Softmax_Output";
        _RuntimeModel.AddLayer(new Softmax(_SoftmaxOutputName, _RuntimeModel.outputs[0]));
        _RuntimeModel.outputs[0] = _SoftmaxOutputName;

        // 将输入数据创建为张量
        using Tensor _InputTensor = TextureConverter.ToTensor(_Texture2D, width: 28, height: 28, channels: 1);

        // 创建引擎
        //在 Sentis 中,工作线程是推理引擎。您可以创建一个工作线程以将模型分解为可执行任务,在 GPU 或 CPU 上运行任务,然后输出结果。
        //例如,创建一个使用 Sentis 计算着色器在 GPU 上运行的工作线程:
        _Worker = WorkerFactory.CreateWorker(BackendType.GPUCompute, _RuntimeModel);

        // 使用输入数据运行模型
        _Worker.Execute(_InputTensor);

        // 获得结果
        using TensorFloat _OutputTensor = _Worker.PeekOutput() as TensorFloat;

        // 在读取张量数据之前将其移动到CPU
        _OutputTensor.MakeReadable();

        //返回数据填充
        _Results = _OutputTensor.ToReadOnlyArray();
    }

    /// <summary>
    /// 当前脚本处于 禁用或非活动时执行
    /// </summary>
    void OnDisable()
    {
        // 告诉GPU我们已经处理完引擎使用的内存了
        _Worker.Dispose();
    }
}

代码搭载运行

总体来说 只要大于 0.90 就证明是该的数字
下列 Results 返回数组 第几位就是 数字几
1

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

5

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

2

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

射线绘画 URP(扩展)

射线绘画:
连连看  Shader Graph

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

局部 1

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

局部 2

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

为什么要这样连接

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

Graph 基础设置

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

射线绘画脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 绘画
/// </summary>
public class Drawing_ZH : MonoBehaviour
{

    [Header("Camera")]
    public Camera _MainCamera;

    [Header("画布贴图")]
    public RenderTexture _CurrentRT;
    [Header("临时贴图")]
    public RenderTexture _TempRT;

    [Header("绘画 材质球")]
    private Material _DrawMat;

    [Header("画布贴图  大小")]
    public int _TextureSize = 512;

    [Header("绘画 笔刷大小")]
    [Range(0, 1)]
    public float _DrawRadius = 0.2f;


    void Start()
    {
        _MainCamera = Camera.main;

        _CurrentRT = CreateRT();
        _TempRT = CreateRT();

        _DrawMat = GetComponent<MeshRenderer>().material;
    }

    void Update()
    {
        //鼠标左键 射线检测
        if (Input.GetMouseButton(1))
        {
            //射线生成
            Ray _Ray = _MainCamera.ScreenPointToRay(Input.mousePosition);
            //返回结构体
            RaycastHit _Hit;
            //触发
            if (Physics.Raycast(_Ray, out _Hit))
            {
                //图案绘制

                DrawAt(_Hit.textureCoord.x, _Hit.textureCoord.y, _DrawRadius);

                print("射线绘画");
            }
        }
    }

    /// <summary>
    /// 图像绘制
    /// </summary>
    /// <param 坐标 X="x"></param>
    /// <param 坐标 Y="y"></param>
    /// <param 半径="_Radius"></param>
    private void DrawAt(float x, float y, float _Radius)
    {
        //原本绘制贴图
        _DrawMat.SetTexture("_SourceTex", _CurrentRT);

        //绘制的位置和大小
        _DrawMat.SetVector("_Pos", new Vector4(x, y, _Radius, 0));

        //绘制 提交
        Graphics.Blit(null, _TempRT, _DrawMat);

        //贴图交换
        RenderTexture _Rt = _TempRT;
        _TempRT = _CurrentRT;
        _CurrentRT = _Rt;
    }

    /// <summary>
    /// 新建 RenderTexture 画布
    /// </summary>
    /// <returns></returns>
    public RenderTexture CreateRT()
    {
        RenderTexture _Rt = new RenderTexture(_TextureSize, _TextureSize, 0, RenderTextureFormat.RFloat);
        _Rt.Create();
        return _Rt;
    }
}

脚本搭载

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

效果

Unity AI Sentis 基础教程,unity,人工智能,游戏引擎

暂时先这样吧,如果有时间的话就会更新 Muse 精灵 AI,实在看不明白就留言,看到我会回复的。
路漫漫其修远兮,与君共勉。文章来源地址https://www.toymoban.com/news/detail-759838.html

到了这里,关于Unity AI Sentis 基础教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 0基础可报名!微软AI-900人工智能基础认证

    微软AI-900 AI人工智能基础认证 AI900证证书样板 01 Microsoft 认证:Azure AI 基础知识 掌握 AI 基础知识可帮助你快速开启职业生涯,并准备好更深入地了解 Azure 提供的其他技术机会。人工智能 (AI) 使那些昨天看起来还像是科幻小说的可能性有机会成为现实。使用 AI,可以在医疗保

    2024年04月10日
    浏览(36)
  • 【Unity6.0+AI】Sentis加载模型识别手写数字案例实现

    按照国际惯例,看效果: 自己在PS中绘制黑底白字手写字体,导出jpg,尺寸28*28! 素材设置 准备工作:从 ONNX Model Zoo 下载手写识别 ONNX 模型文件  【下载模型】MNIST 手写数字识别模型 mnist-1

    2024年02月04日
    浏览(26)
  • 【AI 人工智能】Prompt 学习之基础篇

    2023 年,最火的可能就是 openAI 了,其组织代表的产品 chatGTP,相信大家已经有所耳闻。不少同学已经开始着手使用,并截图晒出 ChatGPT 是多么得智能与神奇。而有的同学在使用之后觉得有点差强人意,指出顶多算是一个比较聪明的聊天机器人而已。 其实,ChatGPT 的难点,在于

    2024年02月08日
    浏览(37)
  • AI 人工智能之概率论基础(2)

    设试验 E 的样本空间为 S={e} ,而 X=X(e) , Y=Y(e) 是定义在 S={e} 上的两个随机变量成为由这两个随机变量组成的向量 (X(e),Y(e)) 为二维随机变量或者二维随机向量。 设 (X,Y) 为二维随机变量,对任意实数 x,y ,二元函数:  称为二维随机变量 (X,Y) 的分布函数,或者称为

    2024年02月05日
    浏览(41)
  • 【人工智能】AI写作能力大比拼:《人工智能的数学基础》写下这本书的目录。

    《人工智能的数学基础》 第一章 人工智能与数学基础 1.1 人工智能简介 1.2 数学在人工智能中的作用 1.3 本书内容概述 第二章 线性代数基础 2.1 向量与矩阵 2.2 行列式与矩阵计算 2.3 线性方程组 2.4 矩阵分解与特征值分析 第三章 微积分基础 3.1 导数与微分 3.2 积分学基础 3.3 常

    2024年02月09日
    浏览(48)
  • 论文解析-基于 Unity3D 游戏人工智能的研究与应用

    这段代码是一个重写了 AgentAction 方法的方法。以下是对每行代码解释: ①public override void AgentAction(float[] vectorAction) 这行代码声明了一个公共的、重写了父类的 AgentAction 方法的方法。它 接受一个 float 类型的数组作为参数。 ② float newAction0 = Mathf.Clamp(vectorAction[0], -1, 1); 这行代

    2024年02月03日
    浏览(40)
  • 探索OpenAI-Unity:融合人工智能与游戏开发的新纪元

    项目地址:https://gitcode.com/srcnalt/OpenAI-Unity OpenAI-Unity 是一个激动人心的开源项目,它将OpenAI Gym的机器学习环境与Unity游戏引擎相结合,为开发者和研究者提供了一个在虚拟世界中训练和测试人工智能模型的强大平台。通过这个项目,您可以利用Unity的强大图形渲染能力和物理模

    2024年04月28日
    浏览(37)
  • AI人工智能对话系统网页版源码系统 附带完整的搭建教程

    AI人工智能对话系统网页版源码系统的开发背景主要是基于自然语言处理技术和机器学习算法的不断发展。自然语言处理技术使得计算机能够理解和分析人类语言,而机器学习算法则能够让计算机自我学习和改进,不断提高对话系统的智能化水平。 此外,随着互联网的普及和

    2024年02月03日
    浏览(43)
  • ChatGPT人工智能对话系统源码 一款非常强大的AI智能系统 附带完整的搭建教程

    随着人工智能技术的不断发展,对话系统作为人机交互的重要方式,已经成为了各个领域的热门应用。ChatGPT作为一款强大的人工智能对话系统,备受关注。它基于深度学习技术,通过学习大量的语料库,实现了自然语言理解和生成的能力,能够与用户进行智能化的交互。 以

    2024年01月17日
    浏览(49)
  • AI人工智能中的数学基础原理与Python实战: 线性代数基础概述

    随着人工智能技术的不断发展,人工智能已经成为了许多行业的核心技术之一。在人工智能领域中,数学是一个非常重要的基础。线性代数是数学中的一个重要分支,它在人工智能中发挥着至关重要的作用。本文将介绍线性代数的基本概念、算法原理、具体操作步骤以及数学

    2024年04月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包