mirror of
https://github.com/koush/scrypted.git
synced 2026-06-20 16:40:30 +01:00
predict: fix bug where memory can leak if detection fails
tf: request restart if detection fails
This commit is contained in:
4
plugins/tensorflow-lite/package-lock.json
generated
4
plugins/tensorflow-lite/package-lock.json
generated
@@ -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"
|
||||
}
|
||||
|
||||
@@ -44,5 +44,5 @@
|
||||
"devDependencies": {
|
||||
"@scrypted/sdk": "file:../../sdk"
|
||||
},
|
||||
"version": "0.0.108"
|
||||
"version": "0.0.109"
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user