private async Task EvaluateVideoFrameAsync(VideoFrame frame) { if (frame != null) { try { _stopwatch.Restart(); OnnxModelInput inputData = new OnnxModelInput(); inputData.Data = frame; var output = await _model.EvaluateAsync(inputData); var product = output.ClassLabel.GetAsVectorView()[0]; var loss = output.Loss[0][product]; _stopwatch.Stop(); var lossStr = string.Join(", ", product + " " + (loss * 100.0f).ToString("#0.00") + "%"); string message = $"Evaluation took {_stopwatch.ElapsedMilliseconds}ms to execute, Predictions: {lossStr}."; Debug.WriteLine(message); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusBlock.Text = message); } catch (Exception ex) { var err_message = $"error: {ex.Message}"; Debug.WriteLine(err_message); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusBlock.Text = err_message); } } }
private async Task EvaluateVideoFrameAsync(VideoFrame frame) { if (frame != null) { try { _stopwatch.Restart(); OnnxModelInput inputData = new OnnxModelInput(); inputData.data = frame; var results = await _model.EvaluateAsync(inputData); var loss = results.loss.ToList().OrderBy(x => - (x.Value)); var labels = results.classLabel; _stopwatch.Stop(); var lossStr = string.Join(", ", loss.Select(l => l.Key + " " + (l.Value * 100.0f).ToString("#0.00") + "%")); string message = $"Evaluation took {_stopwatch.ElapsedMilliseconds}ms to execute, Predictions: {lossStr}."; Debug.WriteLine(message); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusBlock.Text = message); } catch (Exception ex) { Debug.WriteLine($"error: {ex.Message}"); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusBlock.Text = $"error: {ex.Message}"); } await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => ButtonRun.IsEnabled = true); } }
public async Task <ModelOutput> EvaluateAsync(OnnxModelInput input) { var output = new ModelOutput(); var binding = new LearningModelBinding(_session); binding.Bind("data", input.Data); binding.Bind("model_outputs0", output.Model_outputs0); var evalResult = await _session.EvaluateAsync(binding, "0"); return(output); }
private async Task EvaluateVideoFrameAsync(VideoFrame frame) { if (frame != null) { try { _stopwatch.Restart(); var inputData = new OnnxModelInput { Data = frame }; var output = await _model.EvaluateAsync(inputData); _stopwatch.Stop(); // display Shape values Debug.WriteLine($"Shape values: {output.Model_outputs0.Shape.Count}"); for (var i = 0; i < output.Model_outputs0.Shape.Count; i++) { Debug.WriteLine($"Index {i} Shape value: {output.Model_outputs0.Shape[i]}"); } //// display full set of values //// 45 * 13 * 13 = 7604 values //var vars = output.Model_outputs0.GetAsVectorView(); //for (var i = 0; i < vars.Count; i++) //{ // Debug.WriteLine($"Index {i} value: {vars[i]}"); //} //var product = output.Model_outputs0.GetAsVectorView()[0]; //var evalResult = string.Join(", ", product); //string message = $"Evaluation took {_stopwatch.ElapsedMilliseconds}ms to execute, Predictions: {evalResult}."; //Debug.WriteLine(message); var message = $"Evaluation took {_stopwatch.ElapsedMilliseconds}ms to execute, Predictions: "; var ra = new ResultsAnalyzer(); var analRes = ra.Postprocess(output.Model_outputs0); foreach (var predictionModel in analRes) { var pred = $" {predictionModel.TagName} {(predictionModel.Probability * 100.0f):#0.00} % /-/-/"; message += pred; } await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusBlock.Text = message); } catch (Exception ex) { var err_message = $"error: {ex.Message}"; Debug.WriteLine(err_message); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusBlock.Text = err_message); } } }
public async Task <ModelOutput> EvaluateAsync(OnnxModelInput input) { var output = new ModelOutput(); var binding = new LearningModelBinding(_session); binding.Bind("data", input.Data); binding.Bind("classLabel", output.ClassLabel); binding.Bind("loss", output.Loss); LearningModelEvaluationResult evalResult = await _session.EvaluateAsync(binding, "0"); return(output); }
public async Task <OnnxModelOutput> EvaluateAsync(OnnxModelInput input) { OnnxModelOutput output = new OnnxModelOutput(); LearningModelBindingPreview binding = new LearningModelBindingPreview(learningModel); binding.Bind("data", input.data); binding.Bind("classLabel", output.classLabel); binding.Bind("loss", output.loss); LearningModelEvaluationResultPreview evalResult = await learningModel.EvaluateAsync(binding, string.Empty); return(output); }
public async Task <OnnxModelOutput> EvaluateAsync(OnnxModelInput input) { binding.Bind("data", input.data); var result = await session.EvaluateAsync(binding, string.Empty); OnnxModelOutput output = new OnnxModelOutput(); output.classLabel = (result.Outputs["classLabel"] as TensorString).GetAsVectorView(); var predictions = result.Outputs["loss"] as IList <IDictionary <string, float> >; output.loss = predictions[0]; return(output); }