mirror of
https://github.com/koush/scrypted.git
synced 2026-05-25 14:10:30 +01:00
openvino: restart if detection times out
This commit is contained in:
4
plugins/openvino/package-lock.json
generated
4
plugins/openvino/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/openvino",
|
||||
"version": "0.1.32",
|
||||
"version": "0.1.33",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/openvino",
|
||||
"version": "0.1.32",
|
||||
"version": "0.1.33",
|
||||
"devDependencies": {
|
||||
"@scrypted/sdk": "file:../../sdk"
|
||||
}
|
||||
|
||||
@@ -40,5 +40,5 @@
|
||||
"devDependencies": {
|
||||
"@scrypted/sdk": "file:../../sdk"
|
||||
},
|
||||
"version": "0.1.32"
|
||||
"version": "0.1.33"
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ class OpenVINOPlugin(PredictPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.S
|
||||
self.storage.removeItem('mode')
|
||||
self.storage.removeItem('model')
|
||||
self.storage.removeItem('precision')
|
||||
asyncio.run_coroutine_threadsafe(scrypted_sdk.deviceManager.requestRestart(), asyncio.get_event_loop())
|
||||
self.requestRestart()
|
||||
|
||||
labels_contents = open(labelsFile, 'r').read()
|
||||
self.labels = parse_label_contents(labels_contents)
|
||||
@@ -163,7 +163,7 @@ class OpenVINOPlugin(PredictPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.S
|
||||
async def putSetting(self, key: str, value: SettingValue):
|
||||
self.storage.setItem(key, value)
|
||||
await self.onDeviceEvent(scrypted_sdk.ScryptedInterface.Settings.value, None)
|
||||
await scrypted_sdk.deviceManager.requestRestart()
|
||||
self.requestRestart()
|
||||
|
||||
# width, height, channels
|
||||
def get_input_details(self) -> Tuple[int, int, int]:
|
||||
|
||||
@@ -13,6 +13,7 @@ from scrypted_sdk.types import (ObjectDetectionResult, ObjectDetectionSession,
|
||||
ObjectsDetected, Setting)
|
||||
|
||||
from detect import DetectPlugin
|
||||
import traceback
|
||||
|
||||
from .rectangle import (Rectangle, combine_rect, from_bounding_box,
|
||||
intersect_area, intersect_rect, to_bounding_box)
|
||||
@@ -187,6 +188,18 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter):
|
||||
async def detect_once(self, input: Image.Image, settings: Any, src_size, cvss) -> ObjectsDetected:
|
||||
pass
|
||||
|
||||
async def safe_detect_once(self, input: Image.Image, settings: Any, src_size, cvss) -> ObjectsDetected:
|
||||
try:
|
||||
f = self.detect_once(input, settings, src_size, cvss)
|
||||
return await asyncio.wait_for(f, 60)
|
||||
except:
|
||||
traceback.print_exc()
|
||||
print(
|
||||
"encountered an error while detecting. requesting plugin restart."
|
||||
)
|
||||
self.requestRestart()
|
||||
raise
|
||||
|
||||
async def run_detection_image(self, image: scrypted_sdk.Image, detection_session: ObjectDetectionSession) -> ObjectsDetected:
|
||||
settings = detection_session and detection_session.get('settings')
|
||||
src_size = image.width, image.height
|
||||
@@ -217,7 +230,7 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter):
|
||||
})
|
||||
single = await ensureRGBData(data, (w, h), image.format)
|
||||
try:
|
||||
ret = await self.detect_once(single, settings, src_size, cvss)
|
||||
ret = await self.safe_detect_once(single, settings, src_size, cvss)
|
||||
return ret
|
||||
finally:
|
||||
single.close()
|
||||
@@ -281,9 +294,9 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter):
|
||||
def cvss2(point):
|
||||
return point[0] / sx + ow, point[1] / sy + oh
|
||||
|
||||
ret1 = await self.detect_once(first, settings, src_size, cvss1)
|
||||
ret1 = await self.safe_detect_once(first, settings, src_size, cvss1)
|
||||
first.close()
|
||||
ret2 = await self.detect_once(second, settings, src_size, cvss2)
|
||||
ret2 = await self.safe_detect_once(second, settings, src_size, cvss2)
|
||||
second.close()
|
||||
|
||||
two_intersect = intersect_rect(Rectangle(*first_crop), Rectangle(*second_crop))
|
||||
|
||||
@@ -229,13 +229,6 @@ class TensorFlowLitePlugin(
|
||||
interpreter, score_threshold=0.2, image_scale=(1, 1)
|
||||
)
|
||||
return objs
|
||||
except:
|
||||
traceback.print_exc()
|
||||
print(
|
||||
"tensorflow-lite encountered an error while detecting. requesting plugin restart."
|
||||
)
|
||||
self.requestRestart()
|
||||
raise e
|
||||
finally:
|
||||
self.interpreters.put(interpreter)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user