Unity AI Sentis 基础教程

Unity AI Sentis基础教程

  • Unity AI Sentis基础教程
    • Unity AI 内测资格申请
    • Unity 项目
      • Package Manager
      • 开始尝试
      • 模型下载
      • 识别图片
      • 完整代码
      • 代码搭载运行
    • 射线绘画 URP(扩展)
      • 射线绘画脚本
      • 脚本搭载
      • 效果

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 项目

项目创建

在这里插入图片描述

Package Manager

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

请添加图片描述

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

请添加图片描述

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

请添加图片描述

开始尝试

层级创建

请添加图片描述

代码搭载

请添加图片描述

模型下载

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

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

请添加图片描述

只在放在 Assets 之下都行

请添加图片描述

识别图片

在这下载我不知道会不会有问题  要是下载完之后有问题的话  大家就在PS 中随便画一下就行我这里的长宽是 28*28 需要注意的是图片越大越消耗性能

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

完整代码

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

请添加图片描述

5

请添加图片描述

2

请添加图片描述

射线绘画 URP(扩展)

射线绘画:
连连看  Shader Graph

请添加图片描述

局部 1

请添加图片描述

局部 2

请添加图片描述

为什么要这样连接

请添加图片描述

Graph 基础设置

请添加图片描述

射线绘画脚本

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;}
}

脚本搭载

请添加图片描述

效果

请添加图片描述

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

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

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

相关文章

3D孪生场景搭建:模拟仿真

前面几期文章介绍如何使用NSDT 编辑器 搭建3D应用场景&#xff0c;本期介绍下孪生场景中一个一个非常重要的功能&#xff1a;模拟仿真。 1、什么是模拟仿真 模拟仿真是一种用于描述、分析和模拟现实世界中系统、过程或事件的计算机模型和程序。仿真通过输入各种参数和条件&am…

【iOS】——仿写计算器

文章目录 一、实现思路二、实现方法三、判错处理 一、实现思路 先搭建好MVC框架&#xff0c;接着在各个模块中实现各自的任务。首先要创建好UI界面&#xff0c;接着根据UI界面的元素来与数据进行互动&#xff0c;其中创建UI界面需要用到Masonry布局。 二、实现方法 在calcu…

Maven(4)-利用intellij idea创建maven 多模块项目

本文通过一个例子来介绍利用maven来构建一个多模块的jave项目。开发工具&#xff1a;intellij idea。 一、项目结构 multi-module-project是主工程&#xff0c;里面包含两个模块&#xff08;Module&#xff09;&#xff1a; web-app是应用层&#xff0c;用于界面展示&#xff…

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

特殊笔记_10/7

安装node到第4.1就行&#xff08;安装npm的淘宝镜像&#xff09; Node.js安装与配置&#xff08;详细步骤&#xff09;_nodejs安装及环境配置_LI4836的博客-CSDN博客 安装vscode 下载组件&#xff1a; 点击第五个 Auto Close Tag&#xff1a;自动闭合标签 Chinese (Simpli…

MQ - 36 云原生:业界MQ的计算存储分离的设计与实现

文章目录 导图概述什么是存算分离架构必须是存算分离架构吗实现存算分离架构的技术思考如何选择合适的存储层引擎存储层:分区存储模型的设计计算层:弹性无状态的写入业界主流存算分离架构分析RocketMQ 5.0 架构分析Pulsar 存算架构分析总结导图 概述 结合云原生、Serverless…

JetBrains ToolBox修改应用安装位置

TooBox修改应用安装位置 1.关闭ToolBox 2.修改配置文件 找到配置文件所在位置 C:\Users\用户名\AppData\Local\JetBrains\Toolbox\.settings.json增加install_location字段 "install_location": "E:\\DevTool\\IDE",E:\DevTool\IDE可以改成自己想要的…

Springboot项目log4j与logback的Jar包冲突问题

异常信息关键词&#xff1a; SLF4J: Class path contains multiple SLF4J bindings. ERROR in ch.qos.logback.core.joran.spi.Interpreter24:14 - no applicable action for [properties], current ElementPath is [[configuration][properties]] 详细异常信息&#xff1a…

常见排序算法详解

目录 排序的相关概念 排序&#xff1a; 稳定性&#xff1a; 内部排序&#xff1a; 外部排序&#xff1a; 常见的排序&#xff1a; 常见排序算法的实现 插入排序&#xff1a; 基本思想&#xff1a; 直…

自学接口测试系列 —— 自动化测试用例设计基础!

一、接口测试思路总结 ❓首先我们在进行接口测试设计前思考一个问题&#xff1a;接口测试&#xff0c;测试的是什么&#xff1f; ❗我们必须要知道&#xff0c;接口测试的本质&#xff1a;是根据接口的参数&#xff0c;设计输入数据&#xff0c;验证接口的返回值。 那么接口…

day24-JS进阶(构造函数,new实例化,原型对象,对象原型,原型继承,原型链)

目录 构造函数 深入对象 创建对象三种方式 构造函数 new实例化执行过程(important!) 实例成员&静态成员 实例对象&实例成员 静态成员 内置构造函数 基本包装类型 Object Object.keys(obj)返回所有键组成的字符串数组 Object.values(obj)返回所有值组成的字…

Nginx支持SNI证书,已经ssl_server_name的使用

整理了一些网上的资料&#xff0c;这里记录一下&#xff0c;供大家参考 什么是SNI&#xff1f; 传统的应用场景中&#xff0c;一台服务器对应一个IP地址&#xff0c;一个域名&#xff0c;使用一张包含了域名信息的证书。随着云计算技术的普及&#xff0c;在云中的虚拟机有了一…

RPC分布式网络通信框架项目

文章目录 对比单机聊天服务器、集群聊天服务器以及分布式聊天服务器RPC通信原理使用Protobuf做数据的序列化&#xff0c;相比较于json&#xff0c;有哪些优点&#xff1f;环境配置使用项目代码工程目录vscode远程开发Linux项目muduo网络库编程示例CMake构建项目集成编译环境Lin…

在Android中实现动态应用图标

在Android中实现动态应用图标 你可能已经遇到过那些能够完成一个神奇的技巧的应用程序——在你的生日时改变他们的应用图标&#xff0c;然后无缝切换回常规图标。这是一种引发你好奇心的功能&#xff0c;让你想知道&#xff0c;“他们到底是如何做到的&#xff1f;”。嗯&…

HTML 笔记 表格

1 表格基本语法 tr&#xff1a;table row th&#xff1a;table head 2 表格属性 2.1 基本属性 表格的基本属性是指表格的行、列和单元格但并不是每个表格的单元格大小都是统一的&#xff0c;所以需要设计者通过一些属性参数来修改表格的样子&#xff0c;让它们可以更更多样…

VR全景展示带来旅游新体验,助力旅游业发展!

引言&#xff1a; VR&#xff08;虚拟现实&#xff09;技术正以惊人的速度改变着各行各业&#xff0c;在旅游业中&#xff0c;VR全景展示也展现了其惊人的影响力&#xff0c;为景区带来了全新的宣传机会和游客体验。 一&#xff0e;什么是VR全景展示&#xff1f; VR全景展示是…

华硕平板k013me176cx线刷方法

1.下载adb刷机工具, 或者刷机精灵 2.下载刷机rom包 华硕asus k013 me176cx rom固件刷机包-CSDN博客 3.平板进入刷机界面 进入方法参考&#xff1a; ASUS (k013) ME176CX不进入系统恢复出厂设置的方法-CSDN博客 4.解压ME176C-CN-3_2_23_182.zip&#xff0c;把UL-K013-CN-3.2.…

软件测试面试之问——角色扮演

作为软件测试工程师&#xff0c;在求职面试中经常会被问到这样一个问题&#xff1a;你认为测试工程师在企业中扮演着什么样的角色呢&#xff1f; 某度百科是这样概括的&#xff1a;“软件测试工程师在一家软件企业中担当的是‘质量管理’角色&#xff0c;及时发现软件问题并及…

2.5 数字传输系统

笔记&#xff1a; 针对这一节的内容&#xff0c;我为您提供一个笔记的整理方法。将内容按重要性、逻辑关系进行组织&#xff0c;再进行简化。 ## 2.5 数字传输系统 ### 背景介绍&#xff1a; 1. **早期电话网**&#xff1a;市话局到用户采用双绞线电缆&#xff0c;长途干线采…

css的gap设置元素之间的间隔

在felx布局中可以使用gap来设置元素之间的间隔&#xff1b; .box{width: 800px;height: auto;border: 1px solid green;display: flex;flex-wrap: wrap;gap: 100px; } .inner{width: 200px;height: 200px;background-color: skyblue; } <div class"box"><…