Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
            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);
            }
Ejemplo n.º 4
0
        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);
                }
            }
        }
Ejemplo n.º 5
0
            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);
            }
Ejemplo n.º 6
0
            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);
            }
Ejemplo n.º 7
0
            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);
            }