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); }
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); } }
/// <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 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); } }
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)