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