【Unity+AI】SentisAI大模型植入Unity

相关教程

把AI模型放入Unity-手写数字识别【UnitySentis入门-1】_哔哩哔哩_bilibili

Unity官方文档创建引擎以运行模型 |森蒂斯 |1.2.0-exp.2 (unity3d.com) 

教程转载自:AI Tools for Game Dev 游戏开发人工智能工具/UnitySentis/01-Unity Sentis 入门.md · chutianshu/AwesomeUnityTutorial - Gitee.comicon-default.png?t=N7T8https://gitee.com/chutianshu1981/AwesomeUnityTutorial/blob/main/AI%20Tools%20for%20Game%20Dev%20%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%B7%A5%E5%85%B7/UnitySentis/01-Unity%20Sentis%20%E5%85%A5%E9%97%A8.md

 Unity Sentis 入门

1. Unity Sentis 简介

1.1 概念

Sentis 是一个用于人工智能模型的本地推理引擎(神经网络推理库),它利用终端用户设备上的计算,而不是云服务器。它可以在任何可以部署 Unity 运行时的地方运行。

可以使用 Sentis 将训练有素的神经网络模型导入 Unity,然后在 Unity 支持的任何平台和编辑器中本地实时运行这些模型。您可以选择在 GPU 或 CPU 上运行模型。

它取代了 Barracuda(Unity 上一个本地神经网络库),解决了我们在 Barracuda 处于早期原型阶段时收到的许多反馈。最重要的是,Sentis 可以以游戏速度运行许多神经网络。可用于无限制的本地推理。

1.2 功能

Sentis 有哪些功能?

Sentis 允许您将 ONNX 格式 的人工智能/ML 神经网络模型(来自 TensorFlow、PyTorch 和其他人工智能中心)导入 Unity 编辑器,然后在所有 Unity 支持平台上的用户设备上实时优化和运行推理。

Sentis 支持 opset 版本介于 7 和 15 之间的大多数 ONNX 格式模型。有关详细信息,请参阅支持的 ONNX 操作符。

您可以在 Unity 运行时(用于游戏)或 Unity 编辑器(用于游戏创建)中完成这项工作,而无需使用昂贵的 GPU 云服务器。Sentis 速度快,避免了云计算成本,并允许进行私有神经网络推断。最终,Sentis 将使 Unity 开发人员能够利用人工智能领域令人难以置信的创新,而这在以前是不可能实现的。

可能的使用案例有很多,下面列出来一些经过 Unity 开发者已经实现的,希望 Sentis 的用户可以发挥出更多的创意 :

  1. 图像升级:放大低分辨率图像、模型、纹理等。
  2. 风格转换:将场景的外观或图像效果转换为新的风格
  3. 非游戏角色(NPC):自动生成人物对话
  4. 语音识别(NLP):解释现场语音 5.
  5. 人体/物体检测: 使用摄像头检测物体
  6. 深度估计: 使用摄像头检测深度
  7. 图像、视频和 3D 模型分类:检测屏幕上的物体
  8. 手写分类:检测手写字母、符号或数字
  9. 创造独一无二的玩家体验:生成无限独特的游戏场景
  10. 动画: 绑定自动生成的姿势
  11. 模拟助手: 用神经网络逼近复杂功能(Approximate a complicated function )?,驱动游戏逻辑
  12. 时间序列:异常检测、预测/预报

2. Sentis Quick Start 快速上手

2.1 安装 Sentis

  1. 从 Unity Hub 下载 Unity 2023.2。
    最新的Sentis 1.3.0 适用于 2023.2 以上版本,而之前的 Sentis 版本适用于 Unity 2021.3 以上版本。
  2. 创建新的 Unity 项目或打开现有项目。
  3. 进入Window > Package Manager,然后点击 + 图标,选择 "Add package by name… "并输入 "com.unity.sentis"按添加按钮安装软件包

com.unity.sentis

我们可以导入附带的Samples示例项目

2.2 使用 Sentis

使用 Sentis 在 Unity 中运行神经网络模型,通常需要如下步骤:

  1. 使用 Unity.Sentis 命名空间。
  2. 加载神经网络模型文件。
  3. 为模型创建输入。
  4. 创建推理引擎(工作站)。
  5. 使用输入运行模型,推理出结果。
  6. 获取结果

3. 关于 ONNX 神经网络模型

3.1 什么是 ONNX Model

ONNX 是一种用于表示机器学习模型的开放格式。ONNX 定义了一组通用算子(机器学习和深度学习模型的构件)和一种通用文件格式,使人工智能开发人员能够在各种框架、工具、运行时和编译器中使用模型。ONNX 模型现已经成为一种广泛流行的开放标准格式。

ONNX 模型主要可以应用在以下方面:

Vision 视觉

  • 图像分类
  • 物体检测与图像分割
  • 身体、面部和手势分析
  • 图像处理

Language 语言

  • 机器理解
  • 机器翻译
  • 语言建模

其他

  • 视觉问题解答与对话
  • 语音和音频处理
  • 其他有趣的模型

3.2 下载和转换免费的ONNX模型

Github下载地址:GitHub - leoloveaili/ONNX_models: A collection of pre-trained, state-of-the-art models in the ONNX formatA collection of pre-trained, state-of-the-art models in the ONNX format - GitHub - leoloveaili/ONNX_models: A collection of pre-trained, state-of-the-art models in the ONNX formaticon-default.png?t=N7T8https://github.com/leoloveaili/ONNX_models/tree/main

转换机器学习模型到ONNX:

(可选)将模型从 PyTorch 导出到 ONNX 并使用 ONNX 运行时运行它 — PyTorch 教程 2.2.0+cu121 文档

3.3 加载 ONNX 神经网络模型

Sentis 可以导入开放神经网络交换 ONNX 格式的模型文件。要加载模型,请按照以下步骤操作:

  1. 从机器学习框架中将模型导出为 ONNX 格式,或从互联网上下载 ONNX 模型(推荐:ONNX Modle ZOO)。
  2. 将模型文件添加到 "项目 "窗口的 "Assets "文件夹中。
  3. 在脚本中创建运行时模型:
  • 本案例提供了一个示例模型https://download.csdn.net/download/leoysq/88661406
using Unity.Sentis;

//生成模型资源对象
ModelAsset modelAsset = Resources.Load("model-file-in-assets-folder") as ModelAsset;
//创建运行时模型对象
runtimeModel = ModelLoader.Load(modelAsset);

//使用张量 API 为模型创建包含数据的张量。您可以将数组或纹理转换为张量。
//获取纹理图片作为输入
Texture2D inputTexture = Resources.Load("image-file") as Texture2D;
// 下面是将图片纹理转换为张量 Convert a texture to a tensor
TensorFloat inputTensor = TextureConverter.ToTensor(inputTexture);

//创建推理引擎(a worker):
//在 Sentis 中,worker 就是推理引擎。您可以创建一个 Worker,将模型分解为可执行的任务,在 GPU 或 CPU 上运行这些任务,并输出结果
// 这条代码使用 Sentis 计算着色器创建一个在 GPU 上运行的 Worker:
Worker worker = WorkerFactory.CreateWorker(BackendType.GPUCompute, runtimeModel);

// 运行模型
worker.Execute(inputTensor);

// 使用 worker 对象的 PeekOutput()方法 获取结果,保存为张量类型
TensorFloat outputTensor = worker.PeekOutput() as TensorFloat;

扩展阅读: 一分钟快速了解张量Tensor

4. 完整示例

下面的示例对一个手写数字进行了分类。

  1. 准备工作:从 ONNX Model Zoo 下载手写识别 ONNX 模型文件,例如 MNIST 手写数字识别模型 mnist-12.onnx,并将其拖入项目窗口的 Assets 文件夹。
    mnist-12.onnx gitee 替代下载链接

  2. 将以下脚本附加到场景中的一个 GameObject。

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

public class ClassifyHandwrittenDigit : MonoBehaviour
{
    public Texture2D inputTexture;
    public ModelAsset modelAsset;
    Model runtimeModel;
    IWorker worker;
    public float[] results;

    void Start()
    {
        // Create the runtime model
        runtimeModel = ModelLoader.Load(modelAsset);

        // Add softmax layer to end of model instead of non-softmaxed output
        string softmaxOutputName = "Softmax_Output";
        runtimeModel.AddLayer(new Softmax(softmaxOutputName, runtimeModel.outputs[0]));
        runtimeModel.outputs[0] = softmaxOutputName;

        // Create input data as a tensor
        using Tensor inputTensor = TextureConverter.ToTensor(inputTexture, width: 28, height: 28, channels: 1);

        // Create an engine
        worker = WorkerFactory.CreateWorker(BackendType.GPUCompute, runtimeModel);

        // Run the model with the input data
        worker.Execute(inputTensor);

        // Get the result
        using TensorFloat outputTensor = worker.PeekOutput() as TensorFloat;

        // Move the tensor data to the CPU before reading it
        outputTensor.MakeReadable();

        results = outputTensor.ToReadOnlyArray();
    }

    void OnDisable()
    {
        // Tell the GPU we're finished with the memory the engine used
        worker.Dispose();
    }
}
  1. 将模型资产拖入游戏对象检查器窗口中的 modelAsset 字段
  2. 下载下面的 digit.png 图片并将其拖入项目窗口的 Assets 文件夹。在导入设置中将 "Non-Power of 2"设置为 "None",然后单击 "Apply"。

  3. 将 digit.png 拖入游戏对象 Inspector 窗口中的 inputTexture(输入纹理)字段
  4. 点击播放。在 GameObject 的 "检查器 "窗口中,结果数组的每一项都显示了模型预测图像是数字的程度。例如,数组的第 0 项表示模型预测图像是手写 0 的程度。

参考资料:

  • Sentis 官方索引页
  • Sentis Quick Start
  • Sentis 官方文档
  • Sentis 官方论坛
  • 实例:Unity Sentis project sample: Build an escape room with a digit detection AI model

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则,检测产生潜在性能问题的字符转换代码,并给出相关建议。 在Rus…

机器人制作开源方案 | 森林管理员

​作者:李佳骏、常睿康、张智斌、李世斌、高华耸 单位:山西能源学院 指导老师:赵浩成、郜敏 1. 研究背景 森林作为地球上可再生自然资源及陆地生态的主体,在人类生存和发展的历史中起着不可代替的作用,它不仅能提供…

多功能视频编码标准 H.266/VVC

视频技术的最新进展潜在地增加了对流传输和广播视频内容的需求。在今日 人们依靠视频来相识并建立联系,借助超高清(Ultra High Definition,UHD)、虚 拟现实(Virtual Reality,VR)和 360 全景视频等技术,人们可以在线捕捉并分享最 快…

119. 杨辉三角 II(Java)

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

彻底卸载Keil4

彻底卸载Keil4 双击 然后回到该软件的文件夹位置,把该文件夹删除即可,然后清一下回收站。

2024年软考电子商务设计师如何备考?考什么?

一、电子商务设计师概述? 电子商务设计师属于软考中级资格考试,软考是由国家人力资源和社会保障部(原人事部)、工业和信息化部(原信息产业部)领导的国家级考试,其目的是,科学、公正…

Hive05_DML 操作

1 DML 数据操作 1.1 数据导入 1.1.1 向表中装载数据(Load) 1)语法 hive> load data [local] inpath 数据的 path [overwrite] into table student [partition (partcol1val1,…)];(1)load data:表示加载数据 &…

20231225在WIN10下使用SSH连接Ubuntu20.04.6

20231225在WIN10下使用SSH连接Ubuntu20.04.6 2023/12/25 23:03 https://jingyan.baidu.com/article/5552ef479e1856108ffbc9e3.html Win10怎么开启SSH功能 Win10怎么开启SSH功能,下面就一起来看看吧! 工具/原料 华硕天选4 Windows10 方法/步骤 点击左下角的开始菜单,打开Wind…

排序算法中In-place和Out-place

参考链接 排序方式中 In-place 和 Out-place: in-place 占用常数内存,不占用额外内存 假如问题规模是n,在解决问题过程中,只开辟了常数量的空间,与n无关,这是原址操作,就是In-place。 例 &…

【论文阅读】MCANet: Medical Image Segmentation with Multi-Scale Cross-Axis Attention

文章目录 摘要创新点总结实现效果总结 摘要 链接:https://arxiv.org/abs/2312.08866 医学图像分割是医学图像处理和计算机视觉领域的关键挑战之一。由于病变区域或器官的大小和形状各异,有效地捕捉多尺度信息和建立像素间的长距离依赖性至关重要。本文提…

学Java的第三天

一、自增自减运算符 ,自增,变量的值加一 --,自减,变量的值减一 和-- 既可以放在变量的后边,也可以放在变量的前边。 单独使用的时候, 和 -- 放在变量的前边还是后边,结果是一样的。 参与操作…

【Hadoop】ZooKeeper数据模型Znode

ZooKeeper 数据模型ZnodeZooKeeper 中的时间ZooKeeper 节点属性 ZooKeeper 数据模型Znode 前面提过,Zookeeper相当于文件系统通知机制。既然是文件系统,那就涉及数据模型。 ZooKeeper 的数据模型在结构上和Unix标准文件系统非常相似,都是采用…

W6100-EVB-Pico评估版介绍

文章目录 1 简介2 硬件资源2.1 硬件规格2.2 引脚定义2.3 工作条件 3 参考资料3.1 Datasheet3.2 原理图3.3 尺寸图(尺寸:mm)3.4 参考例程 4 硬件协议栈优势 1 简介 W6100-EVB-Pico是一款基于树莓派RP2040和全硬件TCP/IP协议栈以太网芯片W6100的…

IDEA常用快捷键三-----文本选择

目录 1、CtrlA: 全选 2、Shift Left: 向左选择 3、Shift Right: 向右选择 4、CtrlShiftLeft: 向左选择一个单词 5、CtrlShiftRight:向右选择一个单词 6、ShiftLeftFn : 向左选择至行头 7、ShiftRightFn: …

单片机原理及应用:Keil μVision4和Proteus 8的配置介绍

笔者所在的专业最近开设了单片机课程,对笔者而言,虽然之前有一定的代码基础。但还是第一次面对既要求代码架构又要求电路仿真的领域。为了巩固知识和增强记忆,特此创建了这个专栏,谨以一名非电专业初学者的身份记录和分享知识。 …

持之以恒-美文美句

年龄不小了做事情老是不能持之以恒,最近突然发现有一件事情坚持了好长时间,每次都能回馈一些美文良句,让人赏心悦目,感觉很有意思这里记录一下 持之以恒,美文积累 二零二三年【兔】(农历起止时间2023年1月2…

STM32 cubeMX 直流电机控制风扇转动

本文使用的是 HAL 库。 文章目录 前言一、直流电机介绍二、直流电机原理图三、直流电机控制方法四、STM32CubeMX 配置直流电机五、代码编写总结 前言 实验开发板:STM32F051K8。所需软件:keil5 , cubeMX 。实验目的:了解 直流电机…

CentOS安装MongoDB

CentOS安装MongoDB 文章目录 CentOS安装MongoDB1. 安装并运行2. 创建用户/密码3. 测试语句4. 允许外网访问 1. 安装并运行 在 CentOS 上安装 MongoDB,你可以按照以下步骤进行: 导入 MongoDB 的 GPG 密钥: sudo rpm --import https://www.mon…

Django(三)

1.快速上手 确保app已注册 【settings.py】 编写URL和视图函数对应关系 【urls.py】 编写视图函数 【views.py】 启动django项目 命令行启动python manage.py runserverPycharm启动 1.1 再写一个页面 2. templates模板

基于电商场景的高并发RocketMQ实战-Commitlog基于内存的高并发写入优化、基于JVM offheap的内存读写分离机制

🌈🌈🌈🌈🌈🌈🌈🌈 【11来了】文章导读地址:点击查看文章导读! 🍁🍁🍁🍁🍁🍁&#x1f3…