From 1dff1aa280b2ef39a9081550d169cfc4d30dfc4a Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Fri, 19 Sep 2025 07:31:26 -0600 Subject: [PATCH] Cover others --- frigate/data_processing/real_time/bird.py | 12 ++++++------ .../real_time/custom_classification.py | 15 ++++++++++++--- frigate/embeddings/onnx/face_embedding.py | 10 +++++----- frigate/events/audio.py | 11 +++++------ 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/frigate/data_processing/real_time/bird.py b/frigate/data_processing/real_time/bird.py index 848860230..52bae3350 100644 --- a/frigate/data_processing/real_time/bird.py +++ b/frigate/data_processing/real_time/bird.py @@ -19,11 +19,6 @@ from frigate.util.object import calculate_region from ..types import DataProcessorMetrics from .api import RealTimeProcessorApi -try: - from tflite_runtime.interpreter import Interpreter -except ModuleNotFoundError: - from tensorflow.lite.python.interpreter import Interpreter - logger = logging.getLogger(__name__) @@ -35,7 +30,7 @@ class BirdRealTimeProcessor(RealTimeProcessorApi): metrics: DataProcessorMetrics, ): super().__init__(config, metrics) - self.interpreter: Interpreter = None + self.interpreter = None self.sub_label_publisher = sub_label_publisher self.tensor_input_details: dict[str, Any] = None self.tensor_output_details: dict[str, Any] = None @@ -79,6 +74,11 @@ class BirdRealTimeProcessor(RealTimeProcessorApi): @redirect_output_to_logger(logger, logging.DEBUG) def __build_detector(self) -> None: + try: + from tflite_runtime.interpreter import Interpreter + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter + self.interpreter = Interpreter( model_path=os.path.join(MODEL_CACHE_DIR, "bird/bird.tflite"), num_threads=2, diff --git a/frigate/data_processing/real_time/custom_classification.py b/frigate/data_processing/real_time/custom_classification.py index c2cf7229d..8082d5e3c 100644 --- a/frigate/data_processing/real_time/custom_classification.py +++ b/frigate/data_processing/real_time/custom_classification.py @@ -7,7 +7,6 @@ from typing import Any import cv2 import numpy as np -from tflite_runtime.interpreter import Interpreter from frigate.comms.embeddings_updater import EmbeddingsRequestEnum from frigate.comms.event_metadata_updater import ( @@ -44,7 +43,7 @@ class CustomStateClassificationProcessor(RealTimeProcessorApi): self.requestor = requestor self.model_dir = os.path.join(MODEL_CACHE_DIR, self.model_config.name) self.train_dir = os.path.join(CLIPS_DIR, self.model_config.name, "train") - self.interpreter: Interpreter = None + self.interpreter = None self.tensor_input_details: dict[str, Any] = None self.tensor_output_details: dict[str, Any] = None self.labelmap: dict[int, str] = {} @@ -57,6 +56,11 @@ class CustomStateClassificationProcessor(RealTimeProcessorApi): @redirect_output_to_logger(logger, logging.DEBUG) def __build_detector(self) -> None: + try: + from tflite_runtime.interpreter import Interpreter + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter + self.interpreter = Interpreter( model_path=os.path.join(self.model_dir, "model.tflite"), num_threads=2, @@ -193,7 +197,7 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi): self.model_config = model_config self.model_dir = os.path.join(MODEL_CACHE_DIR, self.model_config.name) self.train_dir = os.path.join(CLIPS_DIR, self.model_config.name, "train") - self.interpreter: Interpreter = None + self.interpreter = None self.sub_label_publisher = sub_label_publisher self.tensor_input_details: dict[str, Any] = None self.tensor_output_details: dict[str, Any] = None @@ -207,6 +211,11 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi): @redirect_output_to_logger(logger, logging.DEBUG) def __build_detector(self) -> None: + try: + from tflite_runtime.interpreter import Interpreter + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter + self.interpreter = Interpreter( model_path=os.path.join(self.model_dir, "model.tflite"), num_threads=2, diff --git a/frigate/embeddings/onnx/face_embedding.py b/frigate/embeddings/onnx/face_embedding.py index 77f2dbdca..bf8980aa8 100644 --- a/frigate/embeddings/onnx/face_embedding.py +++ b/frigate/embeddings/onnx/face_embedding.py @@ -14,11 +14,6 @@ from frigate.util.downloader import ModelDownloader from ...config import FaceRecognitionConfig from .base_embedding import BaseEmbedding -try: - from tflite_runtime.interpreter import Interpreter -except ModuleNotFoundError: - from tensorflow.lite.python.interpreter import Interpreter - logger = logging.getLogger(__name__) ARCFACE_INPUT_SIZE = 112 @@ -62,6 +57,11 @@ class FaceNetEmbedding(BaseEmbedding): if self.downloader: self.downloader.wait_for_download() + try: + from tflite_runtime.interpreter import Interpreter + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter + self.runner = Interpreter( model_path=os.path.join(MODEL_CACHE_DIR, "facedet/facenet.tflite"), num_threads=2, diff --git a/frigate/events/audio.py b/frigate/events/audio.py index 31b9a7f3c..6e10fd547 100644 --- a/frigate/events/audio.py +++ b/frigate/events/audio.py @@ -40,12 +40,6 @@ from frigate.util.builtin import get_ffmpeg_arg_list from frigate.util.process import FrigateProcess from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg -try: - from tflite_runtime.interpreter import Interpreter -except ModuleNotFoundError: - from tensorflow.lite.python.interpreter import Interpreter - - logger = logging.getLogger(__name__) @@ -369,6 +363,11 @@ class AudioEventMaintainer(threading.Thread): class AudioTfl: @redirect_output_to_logger(logger, logging.DEBUG) def __init__(self, stop_event: threading.Event, num_threads=2): + try: + from tflite_runtime.interpreter import Interpreter + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter + self.stop_event = stop_event self.num_threads = num_threads self.labels = load_labels("/audio-labelmap.txt", prefill=521)