Unity-运行神经网络

时间:2019-01-19 00:46:51

标签: c# unity3d machine-learning pytorch

我使用PyTorch训练了一个模型。在Unity中,我使用WebCamTexture来显示实时视频。如何将摄像头框架输入PyTorch模型中,然后在Unity中使用模型的输出执行操作?

我找到了Unity ML-agents,但似乎无法解决这种情况。

1 个答案:

答案 0 :(得分:0)

您可以在每次更新时捕获凸轮数据,然后通过向其提供刚捕获的数据来运行pytorch模型。我还没有尝试过并不确定pytorch的工作方式,但是对于通用python脚本,您可以执行以下操作:

...
void Start()
{
    ...
    data = new Color32[webcamTexture.width * webcamTexture.height];
    ...
}
...
void FixedUpdate ()
{
    ...
    webCamTexture.GetPixels32(data); //this is faster than returning a Color32 object
    ...
} 

...

private void runPython(string pathToPythonExecutable, string pyTorchScript, Color32[] data)
{
     var startInfo = new ProcessStartInfo();
     var pyTorchArgs = convertDataToYourPyTorchInputFormat (data)
     startInfo.Arguments = string.Format("{0} {1}", pyTorchScript, pyTorchArgs);
     startInfo.FileName = pathToPythonExecutable;
     startInfo.UseShellExecute = false;
     var process = Process.Start(start));
     process.WaitForExit();
     //do stuff in unity with the return value of process (process.ExitCode) or whatever.
}

请注意,使用外部可执行文件创建和结束进程可能会产生大量开销。有一些库可让您在c#中运行python脚本。我可以想到2:IronPython(http://ironpython.net)和Python for .Net(http://pythonnet.github.io)我从没尝试过。