From 8abdab70e9c77b2dc50e404e0d7fe09c5ee50ab4 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Mon, 15 Apr 2024 10:35:10 -0700 Subject: [PATCH] coreml/openvino: publish --- plugins/coreml/package-lock.json | 4 ++-- plugins/coreml/package.json | 2 +- plugins/coreml/src/coreml/__init__.py | 24 ++++++++---------------- plugins/openvino/package-lock.json | 4 ++-- plugins/openvino/package.json | 2 +- plugins/openvino/src/ov/__init__.py | 8 +++++++- 6 files changed, 21 insertions(+), 23 deletions(-) diff --git a/plugins/coreml/package-lock.json b/plugins/coreml/package-lock.json index 6713a19cf..a10f6c0f7 100644 --- a/plugins/coreml/package-lock.json +++ b/plugins/coreml/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/coreml", - "version": "0.1.37", + "version": "0.1.38", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/coreml", - "version": "0.1.37", + "version": "0.1.38", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/coreml/package.json b/plugins/coreml/package.json index 5dea35577..3e3de54cb 100644 --- a/plugins/coreml/package.json +++ b/plugins/coreml/package.json @@ -42,5 +42,5 @@ "devDependencies": { "@scrypted/sdk": "file:../../sdk" }, - "version": "0.1.37" + "version": "0.1.38" } diff --git a/plugins/coreml/src/coreml/__init__.py b/plugins/coreml/src/coreml/__init__.py index 29988e82d..c847d50fd 100644 --- a/plugins/coreml/src/coreml/__init__.py +++ b/plugins/coreml/src/coreml/__init__.py @@ -173,12 +173,9 @@ class CoreMLPlugin(PredictPlugin, scrypted_sdk.Settings, scrypted_sdk.DeviceProv # run in executor if this is the plugin loop if self.yolo: - if asyncio.get_event_loop() is self.loop: - out_dict = await asyncio.get_event_loop().run_in_executor( - predictExecutor, lambda: self.model.predict({self.input_name: input}) - ) - else: - out_dict = self.model.predict({self.input_name: input}) + out_dict = await asyncio.get_event_loop().run_in_executor( + predictExecutor, lambda: self.model.predict({self.input_name: input}) + ) if self.scrypted_yolo: results = list(out_dict.values())[0][0] @@ -216,17 +213,12 @@ class CoreMLPlugin(PredictPlugin, scrypted_sdk.Settings, scrypted_sdk.DeviceProv ret = self.create_detection_result(objs, src_size, cvss) return ret - if asyncio.get_event_loop() is self.loop: - out_dict = await asyncio.get_event_loop().run_in_executor( - predictExecutor, - lambda: self.model.predict( - {"image": input, "confidenceThreshold": self.minThreshold} - ), - ) - else: - out_dict = self.model.predict( + out_dict = await asyncio.get_event_loop().run_in_executor( + predictExecutor, + lambda: self.model.predict( {"image": input, "confidenceThreshold": self.minThreshold} - ) + ), + ) coordinatesList = out_dict["coordinates"].astype(float) diff --git a/plugins/openvino/package-lock.json b/plugins/openvino/package-lock.json index dd22ff1a7..40f0afff7 100644 --- a/plugins/openvino/package-lock.json +++ b/plugins/openvino/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/openvino", - "version": "0.1.60", + "version": "0.1.62", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/openvino", - "version": "0.1.60", + "version": "0.1.62", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/openvino/package.json b/plugins/openvino/package.json index 1690f238d..c80abb9e3 100644 --- a/plugins/openvino/package.json +++ b/plugins/openvino/package.json @@ -42,5 +42,5 @@ "devDependencies": { "@scrypted/sdk": "file:../../sdk" }, - "version": "0.1.60" + "version": "0.1.62" } diff --git a/plugins/openvino/src/ov/__init__.py b/plugins/openvino/src/ov/__init__.py index b5a19e293..bdfb501a0 100644 --- a/plugins/openvino/src/ov/__init__.py +++ b/plugins/openvino/src/ov/__init__.py @@ -11,12 +11,15 @@ import scrypted_sdk from PIL import Image from scrypted_sdk.other import SettingValue from scrypted_sdk.types import Setting +import concurrent.futures import common.yolo as yolo from predict import Prediction, PredictPlugin, Rectangle from .recognition import OpenVINORecognition +predictExecutor = concurrent.futures.ThreadPoolExecutor(8, "OpenVINO-Predict") + availableModels = [ "Default", "scrypted_yolov9c_320", @@ -245,7 +248,10 @@ class OpenVINOPlugin( # Set input tensor for model with one input infer_request.set_input_tensor(input_tensor) infer_request.start_async() - infer_request.wait() + # todo: use the inference queue provided by openvino + await asyncio.get_event_loop().run_in_executor( + predictExecutor, lambda: infer_request.wait() + ) objs = []