private async Task InitLicensePlateDetector(Dnn.Backend preferredBackend, Dnn.Target preferredTarget, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
        {
            if (_vehicleLicensePlateDetectionModel == null)
            {
                FileDownloadManager manager = new FileDownloadManager();

                manager.AddFile(
                    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-license-plate-detection-barrier-0106/FP32/vehicle-license-plate-detection-barrier-0106.xml",
                    _modelFolderName);
                manager.AddFile(
                    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-license-plate-detection-barrier-0106/FP32/vehicle-license-plate-detection-barrier-0106.bin",
                    _modelFolderName);

                manager.OnDownloadProgressChanged += onDownloadProgressChanged;
                await manager.Download();

                _vehicleLicensePlateDetectionModel =
                    new DetectionModel(manager.Files[1].LocalFile, manager.Files[0].LocalFile);
                _vehicleLicensePlateDetectionModel.SetInputSize(new Size(300, 300));
                _vehicleLicensePlateDetectionModel.SetInputMean(new MCvScalar());
                _vehicleLicensePlateDetectionModel.SetInputScale(1.0);
                _vehicleLicensePlateDetectionModel.SetInputSwapRB(false);
                _vehicleLicensePlateDetectionModel.SetInputCrop(false);


                _vehicleLicensePlateDetectionModel.SetPreferableBackend(preferredBackend);
                _vehicleLicensePlateDetectionModel.SetPreferableTarget(preferredTarget);
            }
        }
Exemplo n.º 2
0
        public void Run_WithValidData_ExpectSuccess()
        {
            // Arrange:
            var inputData = new RadarRangeEquationInputData()
            {
                TransmitFrequency       = 10e9,
                TransmitterPeakPower    = 8000.0,
                TransmitPulseDuration   = 1e-6,
                TransmitAntennaGain_dB  = 34.0,
                ReceiveAntennaGain_dB   = 34.0,
                TargetRadarCrossSection = 5.0,
                TargetRange             = 100e3,
                SystemLosses_dB         = 6.0,
                SystemNoiseFactor_dB    = 3.0,
                NumberOfPulses          = 1024,
            };

            var detectionModel = new DetectionModel()
            {
                InputData        = inputData,
                TargetStartRange = 1000,
                TargetEndRange   = 200000,
                TargetRangeStep  = 1000
            };

            // Act:
            detectionModel.Run();

            //detectionModel.Results.WriteToCSVFile(@"c:\temp\DetectionModelResults.csv");

            // Assert:
            Assert.Inconclusive();
        }
Exemplo n.º 3
0
 /// <summary>
 /// Release the memory associated with this Yolo detector.
 /// </summary>
 protected override void DisposeObject()
 {
     if (_yoloDetectionModel != null)
     {
         _yoloDetectionModel.Dispose();
         _yoloDetectionModel = null;
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// Clear and reset the model. Required Init function to be called again before calling ProcessAndRender.
 /// </summary>
 public void Clear()
 {
     if (_yoloDetectionModel != null)
     {
         _yoloDetectionModel.Dispose();
         _yoloDetectionModel = null;
     }
 }
Exemplo n.º 5
0
 protected override void DisposeObject()
 {
     if (_yoloDetectionModel != null)
     {
         _yoloDetectionModel.Dispose();
         _yoloDetectionModel = null;
     }
     //throw new NotImplementedException();
 }
Exemplo n.º 6
0
        /// <summary>
        /// Builds a DetectionModel based on the model config.
        /// </summary>
        /// <param name="model_config">A model.proto object containing the config for the desired DetectionModel.</param>
        /// <param name="is_training">True if this model is being built for training purposes.</param>
        /// <param name="add_summaries">Whether to add tensorflow summaries in the model graph.</param>
        /// <returns>DetectionModel based on the config.</returns>
        public FasterRCNNMetaArch build(DetectionModel model_config, bool is_training, bool add_summaries = true)
        {
            var meta_architecture = model_config.ModelCase;

            if (meta_architecture == ModelOneofCase.Ssd)
            {
                throw new NotImplementedException("");
            }
            else if (meta_architecture == ModelOneofCase.FasterRcnn)
            {
                return(_build_faster_rcnn_model(model_config.FasterRcnn, is_training, add_summaries));
            }

            throw new ValueError($"Unknown meta architecture: {meta_architecture}");
        }
Exemplo n.º 7
0
        public static ImageResizer get_image_resizer_config(DetectionModel model_config)
        {
            var meta_architecture = model_config.ModelCase;

            if (meta_architecture == DetectionModel.ModelOneofCase.FasterRcnn)
            {
                return(model_config.FasterRcnn.ImageResizer);
            }
            else if (meta_architecture == DetectionModel.ModelOneofCase.Ssd)
            {
                return(model_config.Ssd.ImageResizer);
            }

            throw new Exception($"Unknown model type: {meta_architecture}");
        }
        public async Task GetDetectionModelShouldBeSuccessful()
        {
            ClarifaiResponse <IModel <Detection> > response =
                await Client.GetModel <Detection>(Client.PublicModels.LogoModel.ModelID)
                .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.AreEqual(10000, response.Status.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response.HttpCode);
            Assert.NotNull(response.RawBody);

            DetectionModel logoModel = (DetectionModel)response.Get();

            Assert.NotNull(logoModel.ModelID);
            Assert.NotNull(logoModel.OutputInfo.Concepts);
        }
Exemplo n.º 9
0
        public static int get_number_of_classes(DetectionModel model_config)
        {
            var meta_architecture = model_config.ModelCase;

            if (meta_architecture == DetectionModel.ModelOneofCase.FasterRcnn)
            {
                return(model_config.FasterRcnn.NumClasses);
            }

            if (meta_architecture == DetectionModel.ModelOneofCase.Ssd)
            {
                return(model_config.Ssd.NumClasses);
            }

            throw new Exception("Expected the model to be one of 'faster_rcnn' or 'ssd'.");
        }
Exemplo n.º 10
0
        public async Task Init(System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
#endif
        {
            if (_faceDetectionModel == null)
            {
                FileDownloadManager manager = new FileDownloadManager();

                manager.AddFile(
                    "https://github.com/opencv/opencv_3rdparty/raw/dnn_samples_face_detector_20170830/res10_300x300_ssd_iter_140000.caffemodel",
                    _modelFolderName,
                    "2A56A11A57A4A295956B0660B4A3D76BBDCA2206C4961CEA8EFE7D95C7CB2F2D");

                manager.AddFile(
                    "https://raw.githubusercontent.com/opencv/opencv/4.0.1/samples/dnn/face_detector/deploy.prototxt",
                    _modelFolderName,
                    "F62621CAC923D6F37BD669298C428BB7EE72233B5F8C3389BB893E35EBBCF795");

                if (onDownloadProgressChanged != null)
                {
                    manager.OnDownloadProgressChanged += onDownloadProgressChanged;
                }
#if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL
                yield return(manager.Download());
#else
                await manager.Download();
#endif

                if (manager.AllFilesDownloaded)
                {
                    _faceDetectionModel = new DetectionModel(manager.Files[0].LocalFile, manager.Files[1].LocalFile);
                    _faceDetectionModel.SetInputMean(new MCvScalar(104, 177, 123));
                    _faceDetectionModel.SetInputSize(new Size(300, 300));
                    _faceDetectionModel.SetInputSwapRB(false);
                    _faceDetectionModel.SetInputScale(1.0);
                    _faceDetectionModel.SetInputCrop(false);

#if !(UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL)
                    if (Emgu.CV.Cuda.CudaInvoke.HasCuda)
                    {
                        _faceDetectionModel.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda);
                        _faceDetectionModel.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda);
                    }
#endif
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Release the memory associated with this vehicle license plate detector
        /// </summary>
        protected override void DisposeObject()
        {
            if (_vehicleLicensePlateDetectionModel != null)
            {
                _vehicleLicensePlateDetectionModel.Dispose();
                _vehicleLicensePlateDetectionModel = null;
            }

            if (_vehicleAttrRecognizer != null)
            {
                _vehicleAttrRecognizer.Dispose();
                _vehicleAttrRecognizer = null;
            }

            if (_ocr != null)
            {
                _ocr.Dispose();
                _ocr = null;
            }
        }
        /// <summary>
        /// Clear and reset the model. Required Init function to be called again before calling ProcessAndRender.
        /// </summary>
        public void Clear()
        {
            if (_vehicleLicensePlateDetectionModel != null)
            {
                _vehicleLicensePlateDetectionModel.Dispose();
                _vehicleLicensePlateDetectionModel = null;
            }

            if (_vehicleAttrRecognizerModel != null)
            {
                _vehicleAttrRecognizerModel.Dispose();
                _vehicleAttrRecognizerModel = null;
            }

            if (_ocr != null)
            {
                _ocr.Dispose();
                _ocr = null;
            }
        }
Exemplo n.º 13
0
        public Func <DatasetV1Adapter> create_train_input_fn(TrainConfig train_config, InputReader train_input_config, DetectionModel model_config)
        {
            Func <DatasetV1Adapter> _train_input_fn = () =>
                                                      train_input(train_config, train_input_config, model_config);

            return(_train_input_fn);
        }
Exemplo n.º 14
0
        /// <summary>
        /// Download and initialize the yolo model
        /// </summary>
        /// <param name="version">The model version</param>
        /// <param name="onDownloadProgressChanged">Call back method during download</param>
        /// <returns>Asyn task</returns>
        public async Task Init(
            YoloVersion version = YoloVersion.YoloV3,
            System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
        {
            if (_yoloDetectionModel == null)
            {
                FileDownloadManager manager = new FileDownloadManager();

                if (version == YoloVersion.YoloV3Spp)
                {
                    manager.AddFile(
                        "https://pjreddie.com/media/files/yolov3-spp.weights",
                        _modelFolderName,
                        "87A1E8C85C763316F34E428F2295E1DB9ED4ABCEC59DD9544F8052F50DE327B4");
                    manager.AddFile(
                        "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-spp.cfg",
                        _modelFolderName,
                        "7A4EC2D7427340FB12059F2B0EF76D6FCFCAC132CC287CBBF0BE5E3ABAA856FD");
                }
                else if (version == YoloVersion.YoloV3)
                {
                    manager.AddFile(
                        "https://pjreddie.com/media/files/yolov3.weights",
                        _modelFolderName,
                        "523E4E69E1D015393A1B0A441CEF1D9C7659E3EB2D7E15F793F060A21B32F297");
                    manager.AddFile(
                        "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3.cfg",
                        _modelFolderName,
                        "22489EA38575DFA36C67A90048E8759576416A79D32DC11E15D2217777B9A953");
                }
                else if (version == YoloVersion.YoloV3Tiny)
                {
                    manager.AddFile(
                        "https://pjreddie.com/media/files/yolov3-tiny.weights",
                        _modelFolderName,
                        "DCCEA06F59B781EC1234DDF8D1E94B9519A97F4245748A7D4DB75D5B7080A42C");
                    manager.AddFile(
                        "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-tiny.cfg",
                        _modelFolderName,
                        "84EB7A675EF87C906019FF5A6E0EFFE275D175ADB75100DCB47F0727917DC2C7");
                }

                manager.AddFile("https://github.com/pjreddie/darknet/raw/master/data/coco.names",
                                _modelFolderName,
                                "634A1132EB33F8091D60F2C346ABABE8B905AE08387037AED883953B7329AF84");

                if (onDownloadProgressChanged != null)
                {
                    manager.OnDownloadProgressChanged += onDownloadProgressChanged;
                }
                await manager.Download();

                if (manager.AllFilesDownloaded)
                {
                    _yoloDetectionModel = new DetectionModel(manager.Files[0].LocalFile, manager.Files[1].LocalFile);
                    _yoloDetectionModel.SetInputSize(new Size(416, 416));
                    _yoloDetectionModel.SetInputScale(0.00392);
                    _yoloDetectionModel.SetInputMean(new MCvScalar());

                    _labels = File.ReadAllLines(manager.Files[2].LocalFile);
                }
            }
        }
 public ActionResult AddDetection([FromBody] DetectionModel detection)
 {
     _Apprepo.Add(detection);
     _Apprepo.SaveAll();
     return(Ok(detection));
 }
 public ActionResult UpdateDetection([FromBody] DetectionModel detection)
 {
     _Apprepo.Update(detection);
     _Apprepo.SaveAll();
     return(Ok(detection));
 }
Exemplo n.º 17
0
        public async Task Init(
            YoloVersion version = YoloVersion.YoloV4,
            System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
#endif
        {
            if (_yoloDetectionModel == null)
            {
                FileDownloadManager manager = new FileDownloadManager();

                bool version3 = false;
                bool version4 = false;
                if (version == YoloVersion.YoloV3Spp)
                {
                    manager.AddFile(
                        "https://pjreddie.com/media/files/yolov3-spp.weights",
                        _modelFolderName,
                        "87A1E8C85C763316F34E428F2295E1DB9ED4ABCEC59DD9544F8052F50DE327B4");
                    manager.AddFile(
                        "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-spp.cfg",
                        _modelFolderName,
                        "7A4EC2D7427340FB12059F2B0EF76D6FCFCAC132CC287CBBF0BE5E3ABAA856FD");
                    version3 = true;
                }
                else if (version == YoloVersion.YoloV3)
                {
                    manager.AddFile(
                        "https://pjreddie.com/media/files/yolov3.weights",
                        _modelFolderName,
                        "523E4E69E1D015393A1B0A441CEF1D9C7659E3EB2D7E15F793F060A21B32F297");
                    manager.AddFile(
                        "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3.cfg",
                        _modelFolderName,
                        "22489EA38575DFA36C67A90048E8759576416A79D32DC11E15D2217777B9A953");
                    version3 = true;
                }
                else if (version == YoloVersion.YoloV3Tiny)
                {
                    manager.AddFile(
                        "https://pjreddie.com/media/files/yolov3-tiny.weights",
                        _modelFolderName,
                        "DCCEA06F59B781EC1234DDF8D1E94B9519A97F4245748A7D4DB75D5B7080A42C");
                    manager.AddFile(
                        "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-tiny.cfg",
                        _modelFolderName,
                        "84EB7A675EF87C906019FF5A6E0EFFE275D175ADB75100DCB47F0727917DC2C7");
                    version3 = true;
                }
                else if (version == YoloVersion.YoloV4)
                {
                    manager.AddFile(
                        "https://github.com/aj-ames/YOLOv4-OpenCV-CUDA-DNN/raw/dd58dba457fff98e483e0f67113e0be1f17f2120/models/yolov4.weights",
                        _modelFolderName,
                        "8463FDE6EE7130A947A73104CE73C6FA88618A9D9ECD4A65D0B38F07E17EC4E4");
                    manager.AddFile(
                        "https://github.com/aj-ames/YOLOv4-OpenCV-CUDA-DNN/raw/dd58dba457fff98e483e0f67113e0be1f17f2120/models/yolov4.cfg",
                        _modelFolderName,
                        "A15524EC710005ADD4EB672140CF15CBFE46DEA0561F1AEA90CB1140B466073E");
                    version4 = true;
                }
                else if (version == YoloVersion.YoloV4Tiny)
                {
                    manager.AddFile(
                        "https://github.com/aj-ames/YOLOv4-OpenCV-CUDA-DNN/raw/dd58dba457fff98e483e0f67113e0be1f17f2120/models/yolov4-tiny.weights",
                        _modelFolderName,
                        "CF9FBFD0F6D4869B35762F56100F50ED05268084078805F0E7989EFE5BB8CA87");
                    manager.AddFile(
                        "https://github.com/aj-ames/YOLOv4-OpenCV-CUDA-DNN/raw/dd58dba457fff98e483e0f67113e0be1f17f2120/models/yolov4-tiny.cfg",
                        _modelFolderName,
                        "6CBF5ECE15235F66112E0BEDEBB324F37199B31AEE385B7E18F0BBFB536B258E");
                    version4 = true;
                }

                if (version3)
                {
                    manager.AddFile("https://github.com/pjreddie/darknet/raw/master/data/coco.names",
                                    _modelFolderName,
                                    "634A1132EB33F8091D60F2C346ABABE8B905AE08387037AED883953B7329AF84");
                }
                if (version4)
                {
                    manager.AddFile("https://github.com/aj-ames/YOLOv4-OpenCV-CUDA-DNN/raw/dd58dba457fff98e483e0f67113e0be1f17f2120/models/coco.names",
                                    _modelFolderName,
                                    "634A1132EB33F8091D60F2C346ABABE8B905AE08387037AED883953B7329AF84");
                }

                if (onDownloadProgressChanged != null)
                {
                    manager.OnDownloadProgressChanged += onDownloadProgressChanged;
                }

#if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL
                yield return(manager.Download());
#else
                await manager.Download();
#endif

                if (manager.AllFilesDownloaded)
                {
                    _yoloDetectionModel = new DetectionModel(manager.Files[0].LocalFile, manager.Files[1].LocalFile);
                    _yoloDetectionModel.SetInputSize(new Size(416, 416));
                    _yoloDetectionModel.SetInputScale(0.00392);
                    _yoloDetectionModel.SetInputMean(new MCvScalar());

                    _labels = File.ReadAllLines(manager.Files[2].LocalFile);
                }
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// Returns `features` and `labels` tensor dictionaries for training.
        /// </summary>
        /// <param name="train_config"></param>
        /// <param name="train_input_config"></param>
        /// <param name="model_config"></param>
        /// <returns></returns>
        public DatasetV1Adapter train_input(TrainConfig train_config, InputReader train_input_config, DetectionModel model_config)
        {
            var arch = modelBuilder.build(model_config, true, true);
            Func <Tensor, (Tensor, Tensor)> model_preprocess_fn = arch.preprocess;

            Func <Dictionary <string, Tensor>, (Dictionary <string, Tensor>, Dictionary <string, Tensor>)> transform_and_pad_input_data_fn = (tensor_dict) =>
            {
                return(_get_features_dict(tensor_dict), _get_labels_dict(tensor_dict));
            };

            var dataset = datasetBuilder.build(train_input_config);

            return(dataset);
        }