我有一个用pytorch训练的神经网络,我想把它部署到Unity应用程序中。做这件事最好的方法是什么?我还对允许用户在Unity应用程序中进一步训练神经网络感兴趣,我猜这将需要将pytorch的某些部分集成到Unity中(也许有一种方法可以将pytorch的C++ / torchscript API与Unity集成?)。如果有人有这方面的经验,我想知道最好的替代方案是什么。
发布于 2019-09-17 06:19:16
查看Unity ML Agents中的新功能。Unity ML代理(称为Barracuda)中有一个推理引擎,允许您在应用程序中使用预先训练的模型。AFAIK,您可以将Tensorflow和ONNX模型转换为Barracuda。这应该不是问题,因为Pytorch模型可以转换为ONNX格式。如果模型直接受到应用程序的影响(例如,如果它是RL代理),则可能需要重新训练模型。
编辑:要回答您的第二个问题,您可以继续训练模型,但不能实时训练。您可以做的是从用户收集数据,并使用这些数据进一步训练模型(这就是TensorFlow服务的工作方式)。您可以通过ONNX将PyTorch模型转换为TensorFlow模型来完成此操作。
编辑2: Barracuda现在是一个独立的和生产就绪的推理引擎,专门运行在ONNX格式上。只要包含受支持的运算符,任何可以转换为格式的框架(例如,Keras、Pytorch、MXNet)都可以工作。
发布于 2019-05-27 13:27:06
这不是一个完整的答案。但是它应该能够帮助你取得更大的进步。
在我看来,本质上你只需要能够在C#代码中运行Python代码。在这种情况下,与Unity的框架合作。
我做了一些搜索,发现了4个部分解决方案:
https://forum.unity.com/threads/python-interpreter-in-unity.86461/
一旦能够运行代码,就需要参考python文件的位置。这样,如果您运行它的环境也安装并正确设置了Python,那么您应该能够运行它。
您必须确保文件在部署时位于您的项目中。Unity可以访问它们。
希望这对你有帮助。
发布于 2021-11-27 03:44:07
https://github.com/asus4/tf-lite-unity-sample展示了如何在Android和IOS中应用tensorflow模型,通过barracuda也可以在移动平台上应用onnx模型,tf-lite-unity-sample比barracuda快得多。
https://stackoverflow.com/questions/56316823
复制相似问题