diff --git a/plugins/tensorflow-lite/package-lock.json b/plugins/tensorflow-lite/package-lock.json index ae77d2279..769ed3d36 100644 --- a/plugins/tensorflow-lite/package-lock.json +++ b/plugins/tensorflow-lite/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/tensorflow-lite", - "version": "0.0.108", + "version": "0.0.109", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/tensorflow-lite", - "version": "0.0.108", + "version": "0.0.109", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/tensorflow-lite/package.json b/plugins/tensorflow-lite/package.json index bf3ed58d6..735acc2de 100644 --- a/plugins/tensorflow-lite/package.json +++ b/plugins/tensorflow-lite/package.json @@ -44,5 +44,5 @@ "devDependencies": { "@scrypted/sdk": "file:../../sdk" }, - "version": "0.0.108" + "version": "0.0.109" } diff --git a/plugins/tensorflow-lite/src/predict/__init__.py b/plugins/tensorflow-lite/src/predict/__init__.py index 1332f8a74..bf9d2bdb8 100644 --- a/plugins/tensorflow-lite/src/predict/__init__.py +++ b/plugins/tensorflow-lite/src/predict/__init__.py @@ -13,6 +13,7 @@ from detect import DetectionSession, DetectPlugin from .sort_oh import tracker import numpy as np +import traceback try: from gi.repository import Gst @@ -492,7 +493,12 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.Set finally: gst_buffer.unmap(info) - return self.run_detection_image(detection_session, image, settings, src_size, convert_to_src_size) + try: + return self.run_detection_image(detection_session, image, settings, src_size, convert_to_src_size) + except: + image.close() + traceback.print_exc() + raise def create_detection_session(self): return PredictSession(start_time=time.time()) diff --git a/plugins/tensorflow-lite/src/tflite/__init__.py b/plugins/tensorflow-lite/src/tflite/__init__.py index cb0d75ce0..6d23a03fb 100644 --- a/plugins/tensorflow-lite/src/tflite/__init__.py +++ b/plugins/tensorflow-lite/src/tflite/__init__.py @@ -92,15 +92,20 @@ class TensorFlowLitePlugin(PredictPlugin, scrypted_sdk.BufferConverter, scrypted return input_size(self.interpreter) def detect_once(self, input: Image.Image, settings: Any, src_size, cvss): - with self.mutex: - common.set_input( - self.interpreter, input) - scale = (1, 1) - # _, scale = common.set_resized_input( - # self.interpreter, cropped.size, lambda size: cropped.resize(size, Image.ANTIALIAS)) - self.interpreter.invoke() - objs = detect.get_objects( - self.interpreter, score_threshold=.2, image_scale=scale) + try: + with self.mutex: + common.set_input( + self.interpreter, input) + scale = (1, 1) + # _, scale = common.set_resized_input( + # self.interpreter, cropped.size, lambda size: cropped.resize(size, Image.ANTIALIAS)) + self.interpreter.invoke() + objs = detect.get_objects( + self.interpreter, score_threshold=.2, image_scale=scale) + except: + print('tensorflow-lite encountered an error while detecting. requesting plugin restart.') + self.requestRestart() + raise e allowList = settings.get('allowList', None) if settings else None ret = self.create_detection_result(objs, src_size, allowList, cvss)