Example #1
0
        static void Main(string[] args)
        {
            string directoryPath;

            if (args.Length == 0)
            {
                directoryPath = "..//..//s02170130/ImageNetSample";
            }
            else
            {
                directoryPath = args[0];
            }


            OnnxClassifier.OnnxClassifier onnxModel = new OnnxClassifier.OnnxClassifier();

            ThreadClassification task_1 = new ThreadClassification(directoryPath, onnxModel, RecognitionCompletedHandler);

            Console.WriteLine("Press any key to stop...");

            task_1.Run();

            Console.ReadKey(true);
            task_1.Stopper();
        }
        public ClassificationVM()
        {
            Classes        = new ObservableCollection <Tuple <string, int> >();
            Result         = new ObservableCollection <ResultClassification>();
            SelectedResult = new ObservableCollection <ResultClassification>();

            onnxModel = new OnnxClassifier.OnnxClassifier();
        }
        public ThreadClassification(ConcurrentQueue <string> pathImages, OnnxClassifier onnxModel, Action <ResultClassification> handler)
        {
            Model = onnxModel;
            ImageRecognitionCompleted = handler;


            PathImages = pathImages;
        }
        public ThreadClassification(string currentDirectory, OnnxClassifier onnxModel, Action <ResultClassification> handler)
        {
            Model = onnxModel;
            ImageRecognitionCompleted = handler;


            PathImages = new ConcurrentQueue <string>(Directory.GetFiles(currentDirectory).Where(s => s.EndsWith(".JPEG") || s.EndsWith(".jpg")));
        }
        public ClassificationVM()
        {
            Classes        = new ObservableCollection <Tuple <string, int> >();
            Result         = new ObservableCollection <ResultClassification>();
            SelectedResult = new ObservableCollection <RecognitionImage>();

            stat = new ObservableCollection <Tuple <int, int> >();

            db = new ApplicationContext();

            onnxModel = new OnnxClassifier.OnnxClassifier();
        }
Example #6
0
        public ResultClassification PredictModel(string imageFilePath)
        {
            DenseTensor <float> TensorImage = OnnxClassifier.PreprocImage(imageFilePath);

            var inputs = new List <NamedOnnxValue>
            {
                NamedOnnxValue.CreateFromTensor(session.InputMetadata.Keys.First(), TensorImage)
            };

            using IDisposableReadOnlyCollection <DisposableNamedOnnxValue> results = session.Run(inputs);

            var   output = results.First().AsEnumerable <float>().ToArray();
            float sum    = output.Sum(x => (float)Math.Exp(x));

            var softmax = output.Select(x => (float)Math.Exp(x) / sum).ToList();

            string cl = LabelMap.Labels[softmax.IndexOf(softmax.Max())];
            ResultClassification result = new ResultClassification(imageFilePath, cl, softmax.Max());

            return(result);
        }
        public ResultClassification Post([FromBody] ImageString obj)
        {
            ResultClassification result;

            OnnxClassifier.OnnxClassifier onnxModel;

            using (var db = new ApplicationContext())
            {
                result = db.FindInDataBase(obj);
                if (result != null)
                {
                    return(result);
                }
                onnxModel = new OnnxClassifier.OnnxClassifier();
                result    = onnxModel.PredictModel(obj.path);

                obj.path        = result._PathImage;
                obj.Probability = result._Probability;
                obj.ClassImage  = result._ClassImage;
                db.AddToDataBase(obj);
            }
            return(result);
        }