Mei*_*ang 4 unity-game-engine pytorch ml-agent
我有一个在 pytorch 中训练的神经网络,我想将其部署到 Unity 应用程序中。最好的方法是什么?我也有兴趣允许用户在 Unity 应用程序中进一步训练神经网络,我想这需要将 pytorch 的某些部分集成到 Unity 中(也许有一种方法可以将 pytorch 的 C++/torchscript API 与 Unity 集成?)。如果有人有这方面的经验,我想知道最好的选择是什么。
查看 Unity ML Agents 中的新功能。Unity ML Agents(称为 Barracuda)中有一个推理引擎,允许您在应用程序中使用预训练模型。AFAIK,您可以将 Tensorflow 和 ONNX 模型转换为 Barracuda。这应该不是问题,因为 Pytorch 模型可以转换为 ONNX 格式。如果模型直接受应用程序影响(例如,如果它是 RL 代理),您可能需要重新训练模型。
编辑:要回答您的第二个问题,您可以继续训练模型,但不是实时训练。您可以做的是从用户那里收集数据,并使用它来进一步训练模型(这就是 TensorFlow Serving 的工作方式)。您可以通过 ONNX 将 PyTorch 模型转换为 TensorFlow 模型来实现。
编辑 2:梭子鱼现在是一个独立的、生产就绪的推理引擎,专门在 ONNX 格式上运行。任何可以转换为该格式的框架(例如 Keras、Pytorch、MXNet)只要包含支持的运算符就可以工作。
这不是一个完整的答案。但它应该能够帮助你进一步进步。
本质上,正如我所见,您只需要能够在 C# 代码中运行 Python 代码即可。在本例中是与 Unity 的框架协作。
我做了一些搜索,发现了 4 个部分解决方案:
Unity python解释器:https://forum.unity.com/threads/python-interpreter-in-unity.86461/
在 Unity 中使用 IronPython 运行代码的示例:https ://gamedev.stackexchange.com/questions/123526/a-python-script-controlling-a-unity-game
Unity3D C# 和 Python 之间使用 ZeroMQ 的通信示例:https://unitylist.com/p/hc8/Unity3D-Python-Communication
通过 XML 文件自行实现对其他语言的语言支持:https://forum.unity.com/threads/add-multiple-language-support-to-your-unity-projects.206271/
一旦您能够运行代码,您就需要引用 python 文件的位置。这样,如果您运行它的环境也安装并正确设置了 Python,您应该能够运行它。
您必须确保这些文件在部署时位于您的项目中。Unity 可以访问它们。
希望这对您有帮助。
| 归档时间: |
|
| 查看次数: |
4332 次 |
| 最近记录: |