From 6fd7d56a851b54a9ce279a1406d9f15d97148b64 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 12 Jul 2024 22:08:54 +0300 Subject: [PATCH] scripts: Update ML examples and library. --- .../00-TensorFlow/tf_object_detection.py | 4 ++-- scripts/libraries/ml/ml/apps.py | 5 +++-- scripts/libraries/ml/ml/model.py | 17 ++++------------- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/scripts/examples/03-Machine-Learning/00-TensorFlow/tf_object_detection.py b/scripts/examples/03-Machine-Learning/00-TensorFlow/tf_object_detection.py index 190101843..c3a62bf19 100644 --- a/scripts/examples/03-Machine-Learning/00-TensorFlow/tf_object_detection.py +++ b/scripts/examples/03-Machine-Learning/00-TensorFlow/tf_object_detection.py @@ -22,7 +22,7 @@ min_confidence = 0.4 threshold_list = [(math.ceil(min_confidence * 255), 255)] # Load built-in FOMO face detection model -labels, model = ml.Model("fomo_face_detection") +model = ml.Model("fomo_face_detection") # Alternatively, models can be loaded from the filesystem storage. # model = ml.Model('.tflite', load_to_fb=True) @@ -76,7 +76,7 @@ while True: if len(detection_list) == 0: continue # no detections for this class? - print("********** %s **********" % labels[i]) + print("********** %s **********" % model.labels[i]) for (x, y, w, h), score in detection_list: center_x = math.floor(x + (w / 2)) center_y = math.floor(y + (h / 2)) diff --git a/scripts/libraries/ml/ml/apps.py b/scripts/libraries/ml/ml/apps.py index 770f7198b..7900d7de6 100644 --- a/scripts/libraries/ml/ml/apps.py +++ b/scripts/libraries/ml/ml/apps.py @@ -28,10 +28,11 @@ class MicroSpeech: def __init__(self, preprocessor=None, micro_speech=None, labels=None): self.preprocessor = preprocessor if preprocessor is None: - self.preprocessor = Model("audio_preprocessor")[1] + self.preprocessor = Model("audio_preprocessor") self.labels, self.micro_speech = (labels, micro_speech) if micro_speech is None: - self.labels, self.micro_speech = Model("micro_speech") + self.micro_speech = Model("micro_speech") + self.labels = self.micro_speech.labels # 16 samples/1ms self.audio_buffer = np.zeros((1, _SAMPLES_PER_STEP * 3), dtype=np.int16) self.spectrogram = np.zeros((1, _SLICE_COUNT * _SLICE_SIZE), dtype=np.int8) diff --git a/scripts/libraries/ml/ml/model.py b/scripts/libraries/ml/ml/model.py index b551708ee..2b7f638c1 100644 --- a/scripts/libraries/ml/ml/model.py +++ b/scripts/libraries/ml/ml/model.py @@ -9,19 +9,10 @@ import image from ml.preprocessing import Normalization -class Model: - def __new__(cls, *args, **kwargs): - self = super().__new__(cls) - retobj = uml.Model(*args, **kwargs) - if isinstance(retobj, tuple): - labels, self.model = retobj - return labels, self - self.model = retobj - return self - - def __str__(self): - return str(self.model) +class Model(uml.Model): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) def predict(self, args, **kwargs): args = [Normalization()(x) if isinstance(x, image.Image) else x for x in args] - return self.model.predict(args, **kwargs) + return super().predict(args, **kwargs)