Unity - управление нейронной сетью - PullRequest
0 голосов
/ 19 января 2019

Я обучил модель, используя PyTorch. В Unity я использую WebCamTexture для отображения живого видео. Как я могу подать кадры веб-камеры в модель PyTorch, а затем выполнить действия в Unity с выводом модели?

Я нашел ML-агентов Unity, но, похоже, это не поможет в этой ситуации.

1 Ответ

0 голосов
/ 19 января 2019

Вы можете захватывать данные кулачка при каждом обновлении, а затем запускать модель 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.
}

Обратите внимание, это может создать значительные накладные расходы для создания и завершения процессов с использованием внешнего исполняемого файла. Есть несколько библиотек, которые позволяют вам запускать скрипты Python внутри C #. Я могу вспомнить 2: IronPython (http://ironpython.net) и Python для .Net (http://pythonnet.github.io)). Я никогда их не пробовал.

...