Esempio n. 1
0
        public async Task <IDictionary <string, float> > EvaluateAsync(SoftwareBitmap bitmap)
        {
            var videoFrame        = VideoFrame.CreateWithSoftwareBitmap(bitmap);
            var imageFeatureValue = ImageFeatureValue.CreateFromVideoFrame(videoFrame);
            var input             = new SmartInkModelInput()
            {
                data = imageFeatureValue
            };
            var output = new SmartInkModelOutput();

            _binding.Bind("data", input.data);

            _binding.Bind("classLabel", output.ClassLabel);

            _binding.Bind("loss", output.Loss);
            LearningModelEvaluationResult result = await _session.EvaluateAsync(_binding, "0");

            output.ClassLabel = result.Outputs["classLabel"] as TensorString;//).GetAsVectorView()[0];

            output.Loss = result.Outputs["loss"] as IList <IDictionary <string, float> >;
            var dict = new Dictionary <string, float>();

            foreach (var key in output.Loss[0].Keys)
            {
                dict.Add(key, output.Loss[0][key]);
            }

            return(dict);
        }
Esempio n. 2
0
        private unsafe LearningModelBinding EvaluateContrastAndBrightnessSession(object input, object output)
        {
            var slope      = Math.Tan(ContrastMaxSlider.Value * 3.14159 / 2);
            var yintercept = -255 * (ContrastMinSlider.Value * 2 - 1);

            if (yintercept < 0)
            {
                // it was the x-intercept
                yintercept = slope * yintercept;
            }

            var binding = new LearningModelBinding(contrastEffectSession_);

            binding.Bind("Input", input);
            binding.Bind("Slope", TensorFloat.CreateFromArray(new long[] { 1 }, new float[] { (float)slope }));
            binding.Bind("YIntercept", TensorFloat.CreateFromArray(new long[] { 1 }, new float[] { (float)yintercept }));

            var outputBindProperties = new PropertySet();

            outputBindProperties.Add("DisableTensorCpuSync", PropertyValue.CreateBoolean(true));
            binding.Bind("Output", output, outputBindProperties);

            EvaluateInternal(contrastEffectSession_, binding);

            return(binding);
        }
Esempio n. 3
0
        private async Task LoadAndEvaluateModelAsync(VideoFrame _inputFrame, string _modelFileName)
        {
            LearningModelBinding _binding     = null;
            VideoFrame           _outputFrame = null;
            LearningModelSession _session;

            try
            {
                //Load and create the model
                if (_model == null)
                {
                    var modelFile =
                        await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx:///{_modelFileName}"));

                    _model = await LearningModel.LoadFromStorageFileAsync(modelFile);
                }

                // Create the evaluation session with the model
                _session = new LearningModelSession(_model);

                // Get input and output features of the model
                var inputFeatures  = _model.InputFeatures.ToList();
                var outputFeatures = _model.OutputFeatures.ToList();

                // Create binding and then bind input/ output features
                _binding = new LearningModelBinding(_session);

                _inputImageDescriptor =
                    inputFeatures.FirstOrDefault(feature => feature.Kind == LearningModelFeatureKind.Tensor) as TensorFeatureDescriptor;

                _outputTensorDescriptor =
                    outputFeatures.FirstOrDefault(feature => feature.Kind == LearningModelFeatureKind.Tensor) as TensorFeatureDescriptor;

                TensorFloat       outputTensor = TensorFloat.Create(_outputTensorDescriptor.Shape);
                ImageFeatureValue imageTensor  = ImageFeatureValue.CreateFromVideoFrame(_inputFrame);

                // Bind inputs +outputs
                _binding.Bind(_inputImageDescriptor.Name, imageTensor);
                _binding.Bind(_outputTensorDescriptor.Name, outputTensor);


                // Evaluate and get the results
                var results = await _session.EvaluateAsync(_binding, "test");

                Debug.WriteLine("ResultsEvaluated: " + results.ToString());

                var outputTensorList = outputTensor.GetAsVectorView();
                var resultsList      = new List <float>(outputTensorList.Count);
                for (int i = 0; i < outputTensorList.Count; i++)
                {
                    resultsList.Add(outputTensorList[i]);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"error: {ex.Message}");
                _model = null;
            }
        }
Esempio n. 4
0
        public async Task <TensorFloat> EvaluateAsync(TensorFloat input)
        {
            binding.Bind(inName, input);
            binding.Bind(outName, TensorFloat.Create(new long[] { 1, 1, InHeight, OutHeight }));
            var result = await session.EvaluateAsync(binding, inName);

            return(result.Outputs[outName] as TensorFloat);
        }
        private void SampleInputsGridView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var gridView  = sender as GridView;
            var thumbnail = gridView.SelectedItem as WinMLSamplesGallery.Controls.Thumbnail;

            if (thumbnail != null)
            {
                var image          = thumbnail.ImageUri;
                var file           = StorageFile.GetFileFromApplicationUriAsync(new Uri(image)).GetAwaiter().GetResult();
                var softwareBitmap = CreateSoftwareBitmapFromStorageFile(file);


                tensorizationSession_ =
                    CreateLearningModelSession(
                        TensorizationModels.ReshapeFlatBufferNHWC(
                            1,
                            4,
                            softwareBitmap.PixelHeight,
                            softwareBitmap.PixelWidth,
                            416,
                            416));


                // Tensorize
                var stream            = file.OpenAsync(FileAccessMode.Read).GetAwaiter().GetResult();
                var decoder           = BitmapDecoder.CreateAsync(stream).GetAwaiter().GetResult();
                var bitmap            = decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied).GetAwaiter().GetResult();
                var pixelDataProvider = decoder.GetPixelDataAsync().GetAwaiter().GetResult();
                var bytes             = pixelDataProvider.DetachPixelData();
                var buffer            = bytes.AsBuffer(); // Does this do a copy??
                var inputRawTensor    = TensorUInt8Bit.CreateFromBuffer(new long[] { 1, buffer.Length }, buffer);

                // 3 channel NCHW
                var tensorizeOutput = TensorFloat.Create(new long[] { 1, 416, 416, 3 });
                var b = new LearningModelBinding(tensorizationSession_);
                b.Bind(tensorizationSession_.Model.InputFeatures[0].Name, inputRawTensor);
                b.Bind(tensorizationSession_.Model.OutputFeatures[0].Name, tensorizeOutput);
                tensorizationSession_.Evaluate(b, "");

                // Resize
                var resizeBinding = new LearningModelBinding(_session);
                resizeBinding.Bind(_session.Model.InputFeatures[0].Name, tensorizeOutput);
                var results = _session.Evaluate(resizeBinding, "");

                var output1 = results.Output(0) as TensorFloat;

                var data       = output1.GetAsVectorView();
                var detections = ParseResult(data.ToList <float>().ToArray());

                Comparer cp = new Comparer();
                detections.Sort(cp);
                var final = NMS(detections);

                RenderImageInMainPanel(softwareBitmap);
            }
        }
Esempio n. 6
0
        public async Task <hangulOutput> EvaluateAsync(hangulInput input)
        {
            binding.Bind("input:0", input.input00);
            binding.Bind("keep_prob:0", input.keep_prob);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new hangulOutput();

            output.output00 = result.Outputs["output:0"] as TensorFloat;
            return(output);
        }
Esempio n. 7
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);
            }
Esempio n. 8
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);
                var evalResult = await _session.EvaluateAsync(binding, "0");

                return(output);
            }
Esempio n. 9
0
        /// <summary>
        /// Evaluate the model
        /// </summary>
        /// <param name="input">The VideoFrame to evaluate</param>
        /// <returns></returns>
        public async Task <ONNXModelOutput> EvaluateAsync(ONNXModelInput input)
        {
            var output  = new ONNXModelOutput();
            var binding = new LearningModelBinding(_session);

            binding.Bind("data", input.data);
            binding.Bind("classLabel", output.classLabel);
            binding.Bind("loss", output.loss);
            LearningModelEvaluationResult result = await _session.EvaluateAsync(binding, "0");

            return(output);
        }
Esempio n. 10
0
        /// <summary>
        /// Detect objects from the given image.
        /// The input image must be 416x416.
        /// </summary>
        public async Task <IList <PredictionModel> > PredictImageAsync(VideoFrame image)
        {
            var output       = new modelOutput();
            var imageFeature = ImageFeatureValue.CreateFromVideoFrame(image);
            var bindings     = new LearningModelBinding(Session);

            bindings.Bind("data", imageFeature);
            bindings.Bind("model_outputs0", output.Model_outputs0);
            var result = await Session.EvaluateAsync(bindings, "0");

            return(Postprocess(output.Model_outputs0));
        }
Esempio n. 11
0
        public async Task <modelOutput> EvaluateAsync(modelInput input)
        {
            var output = new modelOutput();

            binding.Bind("data", input.data);
            binding.Bind("classLabel", output.ClassLabel);
            binding.Bind("loss", output.Loss);
            var result = await session.EvaluateAsync(binding, "0");

            output.ClassLabel = result.Outputs["classLabel"] as TensorString;
            output.Loss       = result.Outputs["loss"] as List <IDictionary <string, float> >;
            return(output);
        }
Esempio n. 12
0
 public async Task<ShuffleNetOutput> EvaluateAsync(ShuffleNetInput input)
 {
     binding.Bind("gpu_0/data_0", input.gpu_00data_0);
     var result = await session.EvaluateAsync(binding, "0");
     var output = new ShuffleNetOutput();
     output.gpu_00softmax_1 = result.Outputs["gpu_0/softmax_1"] as TensorFloat;
     return output;
 }
        public async Task <MultiObjectDetectionModelv8Output> EvaluateAsync(MultiObjectDetectionModelv8Input input)
        {
            var output = new MultiObjectDetectionModelv8Output();

            if (input != null)
            {
                binding.Bind("image", input.Image);
                var result = await session.EvaluateAsync(binding, "0");

                output.Grid = result.Outputs["grid"] as TensorFloat;
            }
            else
            {
                throw new NullReferenceException();
            }
            return(output);
        }
Esempio n. 14
0
        public async Task <taxiFarePredOutput> EvaluateAsync(taxiFarePredInput input)
        {
            binding.Bind("PassengerCount", input.PassengerCount);
            binding.Bind("TripTime", input.TripTime);
            binding.Bind("TripDistance", input.TripDistance);
            binding.Bind("FareAmount", input.FareAmount);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new taxiFarePredOutput();

            output.PassengerCount0 = result.Outputs["PassengerCount0"] as TensorFloat;
            output.TripTime0       = result.Outputs["TripTime0"] as TensorFloat;
            output.TripDistance0   = result.Outputs["TripDistance0"] as TensorFloat;
            output.FareAmount0     = result.Outputs["FareAmount0"] as TensorFloat;
            output.Features0       = result.Outputs["Features0"] as TensorFloat;
            output.Score0          = result.Outputs["Score0"] as TensorFloat;
            return(output);
        }
Esempio n. 15
0
        public async Task <model1Output> EvaluateAsync(model1Input input)
        {
            binding.Bind("dense_1_input", input.dense_1_input);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new model1Output();

            output.activation_10Softmax00 = result.Outputs["activation_1/Softmax:0"] as TensorFloat;
            return(output);
        }
Esempio n. 16
0
        public async Task <modelOutput> EvaluateAsync(modelInput input)
        {
            binding.Bind("Input3", input.Input3);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new modelOutput();

            output.Plus692_Output_0 = result.Outputs["Plus692_Output_0"] as TensorFloat;
            return(output);
        }
Esempio n. 17
0
        /// <summary>
        /// Detect objects from the given image.
        /// The input image must be 416x416.
        /// </summary>
        public async Task <IList <PredictionModel> > PredictImageAsync(VideoFrame image)
        {
            var imageFeature = ImageFeatureValue.CreateFromVideoFrame(image);
            var bindings     = new LearningModelBinding(this.session);

            bindings.Bind("data", imageFeature);
            var result = await this.session.EvaluateAsync(bindings, "");

            return(Postprocess(result.Outputs["model_outputs0"] as TensorFloat));
        }
        public async Task <ImageClassifierOutput> EvaluateAsync(ImageClassifierInput input)
        {
            binding.Bind("modelInput", input.modelInput);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new ImageClassifierOutput();

            output.modelOutput = result.Outputs["modelOutput"] as TensorFloat;
            return(output);
        }
        public async Task <Inceptionv3_convertedOutput> EvaluateAsync(Inceptionv3_convertedInput input)
        {
            binding.Bind("input_1_0", input.input_1_0);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new Inceptionv3_convertedOutput();

            output.dense_2_Softmax_01 = result.Outputs["dense_2_Softmax_01"] as TensorFloat;
            return(output);
        }
Esempio n. 20
0
        public async Task <mnistOutput> EvaluateAsync(mnistInput input)
        {
            binding.Bind("fc1x", input.fc1x);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new mnistOutput();

            output.activation3y = result.Outputs["activation3y"] as TensorFloat;
            return(output);
        }
Esempio n. 21
0
        public async Task <AlexNetOutput> EvaluateAsync(AlexNetInput input)
        {
            binding.Bind("data_0", input.data_0);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new AlexNetOutput();

            output.prob_1 = result.Outputs["prob_1"] as TensorFloat;
            return(output);
        }
Esempio n. 22
0
        public async Task <mnistOutput> EvaluateAsync(mnistInput input)
        {
            binding.Bind("input_placeholer:0", input.input_placeholer00);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new mnistOutput();

            output.stage_30mid_conv70BiasAdd00 = result.Outputs["stage_3/mid_conv7/BiasAdd:0"] as TensorFloat;
            return(output);
        }
Esempio n. 23
0
        public async Task <HandwriteOutput> EvaluateAsync(HandwriteInput input)
        {
            binding.Bind("Input3", input.Input3);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new HandwriteOutput();

            output.Plus214_Output_0 = result.Outputs["Plus214_Output_0"] as TensorFloat;
            return(output);
        }
Esempio n. 24
0
        public async Task <modelOutput> EvaluateAsync(modelInput input)
        {
            binding.Bind("data_0", input.data_0);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new modelOutput();

            output.softmaxout_1 = result.Outputs["softmaxout_1"] as TensorFloat;
            return(output);
        }
        public async Task <sthv2_tpnOutput> EvaluateAsync(sthv2_tpnInput input)
        {
            binding.Bind("input", input.input);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new sthv2_tpnOutput();

            output.output = result.Outputs["output"] as TensorFloat;
            return(output);
        }
Esempio n. 26
0
        public async Task <mnistOutput> EvaluateAsync(mnistInput input)
        {
            binding.Bind("port", input.port);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new mnistOutput();

            output.dense3port = result.Outputs["dense3port"] as TensorFloat;
            return(output);
        }
Esempio n. 27
0
        public async Task <modelOutput> EvaluateAsync(modelInput input)
        {
            binding.Bind("data", input.data);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new modelOutput();

            output.model_outputs0 = result.Outputs["model_outputs0"] as TensorFloat;
            return(output);
        }
Esempio n. 28
0
        public async Task <resnet100Output> EvaluateAsync(resnet100Input input)
        {
            binding.Bind("data", input.data);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new resnet100Output();

            output.fc1 = result.Outputs["fc1"] as TensorFloat;
            return(output);
        }
        public async Task <pointilismOutput> EvaluateAsync(pointilismInput input)
        {
            binding.Bind("input1", input.input1);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new pointilismOutput();

            output.output1 = result.Outputs["output1"] as TensorFloat;
            return(output);
        }
Esempio n. 30
0
        public async Task <Output> EvaluateAsync(Input input)
        {
            binding.Bind("image", input.image);
            var result = await session.EvaluateAsync(binding, "0");

            var output = new Output();

            output.grid = result.Outputs["grid"] as TensorFloat;
            return(output);
        }