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





Вы можете собирать данные с камеры при каждом обновлении, а затем запускать свою модель 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 внутри С#. Я могу вспомнить 2: IronPython (http://ironpython.net) и Python для .Net (http://pythonnet.github.io), хотя я их никогда не пробовал.