如何在Unity中为生产代码部署pytorch神经网络

时间:2019-05-26 19:44:11

标签: unity3d pytorch

我有一个经过pytorch训练的神经网络,我想将其部署到Unity应用中。最好的方法是什么?我还对允许用户在Unity应用程序中进一步训练神经网络感兴趣,我想这需要将pytorch的某些部分集成到Unity中(也许有一种方法可以将pytorch的C ++ / torchscript API与Uni​​ty集成?)。如果有人对此有经验,我想知道最好的选择是什么。

2 个答案:

答案 0 :(得分:1)

查看Unity ML代理中的新功能。 Unity ML代理中有一个推理引擎(称为梭子鱼),使您可以在应用程序中使用经过预训练的模型。 AFAIK,您可以将Tensorflow和ONNX模型转换为梭子鱼。可以将Pytorch模型转换为ONNX格式,这不会有问题。如果模型直接受应用程序影响(例如,如果它是RL代理),则可能需要重新训练模型。

答案 1 :(得分:0)

这不是一个完整的答案。但是它应该能够帮助您进一步进步。

基本上,正如我所见,您只需要能够在C#代码中运行Python代码即可。在这种情况下,要与Unity的框架协作。

我进行了一些搜索,发现了4个部分解决方案:

  1. Unity python解释器:https://forum.unity.com/threads/python-interpreter-in-unity.86461/

  2. 在Unity中使用IronPython运行代码的示例:https://gamedev.stackexchange.com/questions/123526/a-python-script-controlling-a-unity-game

  3. Unity3D C#与Python之间的通信示例,使用ZeroMQ:https://unitylist.com/p/hc8/Unity3D-Python-Communication

  4. 您自己通过XML文件实现对其他语言的语言支持:https://forum.unity.com/threads/add-multiple-language-support-to-your-unity-projects.206271/

一旦您能够运行代码,则需要引用python文件的位置。这样,如果您在其中运行的环境也已安装并正确设置了Python,就应该能够运行它。

您必须确保文件在部署时位于项目中。而且Unity可以访问它们。

希望这对您有所帮助。