Unity 推出的 Sentis,赋予开发者将 AI 模型导入游戏和应用程序中的能力。现在,Sentis 已进入预发布的开放测试阶段,用户可以在所有类型的项目中实现物体识别、语音识别和智能 NPC 等复杂功能。
这些 AI 模型一旦通过 ONNX 文件标准导入,就可以直接在所有支持 Unity 的平台上运行,这意味着,用户可以直接在 Unity Runtime 中运行大多数 AI 模型,无需任何云基础设施。
Unity官方平台
,赞42
开始使用 Unity Sentis
用户可以通过 Package Manager 下载 Unity Sentis,并通过以下链接获取其文档。在项目中安装软件包后,就可以开始集成 AI 模型了,使用步骤如下。
Unity Sentis 文档:
https://docs.unity3d.com/Packages/com.unity.sentis@1.3/manual/index.html
第一步:找到支持的 AI 模型
要在项目中使用哪些模型完全取决于用户及需要完成的任务。用户可以先浏览市面上的一些模型,如 Hugging Face、Keras 或 PyTorch。如果用户有机器学习背景,也可以训练自己的模型,或使用 Unity ML-Agents 来满足强化学习的需求,但模型必须转换为 ONNX 文件格式(如有需要,用户也可以使用 ONNX 转换器,如 TF2ONNX)。
相关代码示例,请参阅 Sentis 文档中的导入模型(Import a model)部分:
https://docs.unity3d.com/Packages/com.unity.sentis@1.2/manual/import-a-model.html
ONNX 文件格式:
https://onnx.ai
TG2ONNX:
https://github.com/onnx/tensorflow-onnx
第二步:将模型加载到 Unity 中
将模型加载到 Unity 中的过程与导入其他资产的步骤相同,只需将其简单地拖放到编辑器中 Project 窗口内的 Assets 文件夹中即可,Sentis 将自动对导入的模型进行优化,然后再创建一个运行时的模型(Model)对象。
相关代码示例,请参阅 Sentis 文档中的加载模型(Load a model)部分:
https://docs.unity3d.com/Packages/com.unity.sentis@1.2/manual/understand-sentis-workflow.html
第三步:创建输入和推理
创建输入相当简单,只需检查 ONNX 模型导入设置中所需模型输入的形状和大小,然后从数据源创建张量(tensor)。如果需要多个输入,可将它们全部存储在一个字典中。
相关代码示例,请参阅 Sentis 文档中的为模型创建输入(Create input for a model)部分:
https://docs.unity3d.com/Packages/com.unity.sentis@1.2/manual/create-an-input-tensor.html
第四步:运行和优化模型
当准备好要运行模型时,用户还需要创建 Worker,它可以将模型分解为可在用户设备(CPU 或 GPU)上运行的任务,以下为创建 Worker 的代码示例:
https://docs.unity3d.com/Packages/com.unity.sentis@1.2/manual/create-an-engine.html
设置好 Worker 后,就可以运行 AI 模型了。在这里,用户要将模型的输入和输出接入游戏代码,然后使用性能分析器查看模型是否在给定的计算资源预算内运行。如果耗费太多资源,用户可以将模型“切分”到多个帧,或在 Sentis 中探索其他性能调优方式。
有关如何运行模型、获取输出和优化输出的更多信息,请参阅 Sentis 文档中的运行模型(Run a model)部分:
https://docs.unity3d.com/Packages/com.unity.sentis@1.2/manual/run-a-model.html
第五步:测试和部署模型
最后一步是测试和部署游戏。执行此步骤的方法与在任何 Unity Runtime 平台上一样。在将模型嵌入游戏二进制文件方面,用户有几种选择:将它嵌入构建版本中,或者以流媒体资源运行,这样只有在需要时才会下载。出于安全原因,用户还可以考虑对模型进行加密。
相关代码示例,请参 Sentis 文档中的 对模型进行加密(Encrypt a model)部分:
https://docs.unity3d.com/Packages/com.unity.sentis@1.3/manual/encrypt-a-model.html
上例子
利用 AI 实现数字检测
以下链接里的示例展示了使用 Sentis 神经网络的基础知识,即运行一个对象检测模型来打开上锁房间的门。它运行了一个名为 MNIST 的手写数字检测 AI 模型,该模型可以识别用户手绘的数字。
https://github.com/Unity-Technologies/sentis-samples/blob/main/DigitRecognitionSample/README.md
,时长11:12
制作一个 AI 驱动的桌面游戏对手
以下链接里的示例使用 Sentis 为一款名为“黑白棋(Othello)”的桌面游戏构建了一个机器人对手,游戏难度可以配置。它运行着一个根据游戏规则训练的神经网络,在每一步后确定游戏获胜概率,然后预测未来最有可能获胜的棋步。与使用复杂启发式算法和树状遍历的传统方法相比,这个解决方案更为简单。
https://github.com/Unity-Technologies/sentis-samples/blob/main/BoardGameAISample/README.md
,时长08:55
利用 AI 深度估算创建 AR 体验
以下链接里的示例展示了如何将 Sentis 集成到增强现实(AR)体验中。它使用深度估计神经网络,让现实世界中的物体遮挡游戏场景中的虚拟物体。深度是通过处理来自摄像头的视频帧确定的,因此与使用激光雷达传感器的传统方法(仅限于价格昂贵的手机)相比,它是一种更具可扩展性的解决方案。
这样只需要移动设备带有摄像头,不需要激光雷达传感器。
https://github.com/Unity-Technologies/sentis-samples/blob/main/DepthEstimationSample/README.md
进度条,百分之38
其他用例
AI 模型可以帮助用户创建那些使用传统代码不容易实现或非常耗时的出色功能。这些用例涵盖了各类 AI 模型,具体的应用情况取决于用户所采用的模型。
AI 模型用例:
https://keras.io/examples
以下是 Sentis 辅助开发过程的一些示例。
图像/资产增强
开发者选择 Unity 的一个重要原因是它能够更轻松地跨多平台发布,但优化仍然是一个挑战。通过使用 TensorFlow 提供的 Super Resolution 分辨率增强(upscaling)模型,用户可以将游戏中的低分辨率图像、纹理增强为符合生产质量的图像、纹理,或者仅在需要时,辅助优化不同设备上的资产。
Super Resolution:
https://www.tensorflow.org/hub/tutorials/image_enhancing
语音识别
玩家互动是联网游戏成功的关键,当涉及到与 NPC 和其他玩家互动时,用户可以利用语音转文本模型(如 OpenAI 的 Whisper),将实时语音转换为游戏中的文本。还可以引入 AI 模型来自动进行对话,并在玩家和 NPC 之间创建更有意义的互动,这个过程完全不用依赖于手动编写脚本。
OpenAI 的 Whisper:
https://openai.com/research/whisper
图形优化
AI 在创造新颖功能方面受到了很多关注,我们也看到了其在改善游戏性能方面的出色应用。一个例子是使用 AI 模型在移动设备上改进光线追踪的性能,即使用增强的生成对抗网络(GAN)AI 模型来虚构游戏场景的预渲染帧。通过应用这个模型,用户可以在较小的项目中实现光线追踪功能,如光的折射和焦散区域光,这个方法并不会影响设备的性能。
AR 和 VR 物体识别
增强现实(AR)和虚拟现实(VR)也是将 AI 模型与 Sentis 结合使用的潜在重要用例。例如,用户可以在 VR 项目中使用 Ultralytics 的 YOLO 模型,在游戏场景中检测物体,或者在 AR 项目里从设备摄像头中检测现实世界的物体。这可以为用户提供一种只有通过 AI 才可能获得的超级视觉感知。
Ultralytics 的 YOLO 模型:
https://www.ultralytics.com/yolo
Unity Sentis 现在已向所有 Unity 开发者免费开放测试。用户可以通过Unity 2021.3 或更高版本中的 Package Manager 下载使用。
Unity Sentis 官网:
https://unity.com/products/sentis
Unity Sentis首份教程来啦,利用AI模型创建先进功能