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);
            }
        }
        /// <summary>
        /// Download and initialize the vehicle detector, the license plate detector and OCR.
        /// </summary>
        /// <param name="onDownloadProgressChanged">Callback when download progress has been changed</param>
        /// <returns>Async task</returns>
        public async Task Init(
            System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null,
            Object initOptions = null)
        {
            Dnn.Backend backend = Dnn.Backend.OpenCV;
            Dnn.Target  target  = Target.Cpu;
            if (initOptions != null && ((initOptions as String) != null))
            {
                String[] backendOptions = (initOptions as String).Split(';');
                if (backendOptions.Length == 2)
                {
                    String backendStr = backendOptions[0];
                    String targetStr  = backendOptions[1];

                    if (!(Enum.TryParse(backendStr, true, out backend) &&
                          Enum.TryParse(targetStr, true, out target)))
                    {
                        //If failed to part either backend or target, use the following default
                        backend = Dnn.Backend.OpenCV;
                        target  = Target.Cpu;
                    }
                }
            }
            await InitLicensePlateDetector(backend, target, onDownloadProgressChanged);
            await InitVehicleAttributesRecognizer(backend, target, onDownloadProgressChanged);
            await InitOCR(backend, target, onDownloadProgressChanged);
        }
        private async Task InitVehicleAttributesRecognizer(Dnn.Backend preferredBackend, Dnn.Target preferredTarget, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
        {
            if (_vehicleAttrRecognizerModel == null)
            {
                FileDownloadManager manager = new FileDownloadManager();

                manager.AddFile(
                    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-attributes-recognition-barrier-0042/FP32/vehicle-attributes-recognition-barrier-0042.xml",
                    _modelFolderName,
                    "9D1E877B153699CAF4547D08BFF7FE268F65B663441A42B929924B8D95DACDBB");
                manager.AddFile(
                    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/vehicle-attributes-recognition-barrier-0042/FP32/vehicle-attributes-recognition-barrier-0042.bin",
                    _modelFolderName,
                    "492520E55F452223E767D54227D6EF6B60B0C1752DD7B9D747BE65D57B685A0E");

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

                //_vehicleAttrRecognizer =
                //    DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile);
                _vehicleAttrRecognizerModel = new Model(manager.Files[1].LocalFile, manager.Files[0].LocalFile);
                _vehicleAttrRecognizerModel.SetInputSize(new Size(72, 72));
                _vehicleAttrRecognizerModel.SetInputMean(new MCvScalar());
                _vehicleAttrRecognizerModel.SetInputCrop(false);
                _vehicleAttrRecognizerModel.SetInputSwapRB(false);
                _vehicleAttrRecognizerModel.SetInputScale(1.0);

                _vehicleAttrRecognizerModel.SetPreferableBackend(preferredBackend);
                _vehicleAttrRecognizerModel.SetPreferableTarget(preferredTarget);
            }
        }
Beispiel #4
0
 internal static extern IntPtr cveTrackerDaSiamRPNCreate(
     IntPtr model,
     IntPtr kernel_cls1,
     IntPtr kernel_r1,
     Dnn.Backend backend,
     Dnn.Target target,
     ref IntPtr tracker,
     ref IntPtr sharedPtr);
        private async Task InitOCR(Dnn.Backend preferredBackend, Dnn.Target preferredTarget, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
#endif
        {
            if (_ocr == null)
            {
                FileDownloadManager manager = new FileDownloadManager();

                manager.AddFile(
                    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.xml",
                    _modelFolderName,
                    "B5B649B9566F5CF352554ACFFD44207F4AECEE1DA767F4B69F46060A102623FA");
                manager.AddFile(
                    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.2/models_bin/3/license-plate-recognition-barrier-0001/FP32/license-plate-recognition-barrier-0001.bin",
                    _modelFolderName,
                    "685934518A930CC55D023A53AC2D5E47BBE81B80828354D8318DE6DC3AD5CFBA");

                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

                _ocr =
                    DnnInvoke.ReadNetFromModelOptimizer(manager.Files[0].LocalFile, manager.Files[1].LocalFile);

                using (Mat seqInd = new Mat(
                           new Size(1, 88),
                           DepthType.Cv32F,
                           1))
                {
                    if (seqInd.Depth == DepthType.Cv32F)
                    {
                        float[] seqIndValues = new float[seqInd.Width * seqInd.Height];
                        for (int j = 1; j < seqIndValues.Length; j++)
                        {
                            seqIndValues[j] = 1.0f;
                        }

                        seqIndValues[0] = 0.0f;
                        seqInd.SetTo(seqIndValues);
                    }

                    _ocr.SetInput(seqInd, "seq_ind");
                }

                _ocr.SetPreferableBackend(preferredBackend);
                _ocr.SetPreferableTarget(preferredTarget);
            }
        }
Beispiel #6
0
 /// <summary>
 /// Create a new TrackerDaSiamRPN
 /// </summary>
 /// <param name="model">The model file</param>
 /// <param name="kernelCls1">The kernelCls1 file</param>
 /// <param name="kernelR1">The kernelR1 file</param>
 /// <param name="backend">The preferred DNN backend</param>
 /// <param name="target">The preferred DNN target</param>
 public TrackerDaSiamRPN(
     String model        = "dasiamrpn_model.onnx",
     String kernelCls1   = "dasiamrpn_kernel_cls1.onnx",
     String kernelR1     = "dasiamrpn_kernel_r1.onnx",
     Dnn.Backend backend = Dnn.Backend.Default,
     Dnn.Target target   = Target.Cpu)
 {
     using (CvString csModel = new CvString(model))
         using (CvString csKernelCls1 = new CvString(kernelCls1))
             using (CvString csKernelR1 = new CvString(kernelR1))
                 _ptr = CvInvoke.cveTrackerDaSiamRPNCreate(
                     csModel,
                     csKernelCls1,
                     csKernelR1,
                     backend,
                     target,
                     ref _trackerPtr,
                     ref _sharedPtr);
 }
        public async Task Init(
            System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null,
            Object initOptions = null)
#endif
        {
            Dnn.Backend backend = Dnn.Backend.InferenceEngine;
            Dnn.Target  target  = Target.Cpu;
            if (initOptions != null && ((initOptions as String) != null))
            {
                String[] backendOptions = (initOptions as String).Split(';');
                if (backendOptions.Length == 2)
                {
                    String backendStr = backendOptions[0];
                    String targetStr  = backendOptions[1];

                    if (!(Enum.TryParse(backendStr, true, out backend) &&
                          Enum.TryParse(targetStr, true, out target)))
                    {
                        //If failed to part either backend or target, use the following default
                        backend = Dnn.Backend.InferenceEngine;
                        target  = Target.Cpu;
                    }
                }
            }

#if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL
            yield return(InitLicensePlateDetector(backend, target, onDownloadProgressChanged));

            yield return(InitVehicleAttributesRecognizer(backend, target, onDownloadProgressChanged));

            yield return(InitOCR(backend, target, onDownloadProgressChanged));
#else
            await InitLicensePlateDetector(backend, target, onDownloadProgressChanged);
            await InitVehicleAttributesRecognizer(backend, target, onDownloadProgressChanged);
            await InitOCR(backend, target, onDownloadProgressChanged);
#endif
        }
 private IEnumerator InitOCR(Dnn.Backend preferredBackend, Dnn.Target preferredTarget, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
 private IEnumerator InitVehicleAttributesRecognizer(Dnn.Backend preferredBackend, Dnn.Target preferredTarget, System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)