public async Task <Image_RecoModelOutput> EvaluateAsync(Image_RecoModelInput input) { var d = input.data.Direct3DSurface.Description; binding.Bind("data", input.data); LearningModelEvaluationResultPreview evalResult = await learningModel.EvaluateAsync(binding, string.Empty); return(output); }
private void StartPullFrames(MediaFrameReader sender) { Task.Run(async() => { for (;;) { var frameReference = sender.TryAcquireLatestFrame(); var videoFrame = frameReference?.VideoMediaFrame?.GetVideoFrame(); if (videoFrame == null) { continue; //ignoring frame } var input = new Image_RecoModelInput(); input.data = videoFrame; if (videoFrame.Direct3DSurface == null) { continue; //ignoring frame } try { Image_RecoModelOutput prediction = await imageRecoModel.EvaluateAsync(input).ConfigureAwait(false); var classWithHighestProb = prediction.classLabel[0]; if (prediction.loss[classWithHighestProb] > 0.5) { DisplayText("I see a " + classWithHighestProb); } else { DisplayText("I see nothing"); } } catch { //Log errors } await Task.Delay(predictEvery); } }); }