From 27115aa3b65dd15386f2e5773a56840b91f436c3 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Fri, 19 Sep 2025 06:59:15 -0600 Subject: [PATCH] Only import tensorflow-lite when used as a detector --- frigate/detectors/detector_utils.py | 10 +++++----- frigate/detectors/plugins/cpu_tfl.py | 11 ++++++----- frigate/detectors/plugins/edgetpu_tfl.py | 12 ++++++------ 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/frigate/detectors/detector_utils.py b/frigate/detectors/detector_utils.py index d732de871..bfeb039d1 100644 --- a/frigate/detectors/detector_utils.py +++ b/frigate/detectors/detector_utils.py @@ -3,11 +3,6 @@ import os import numpy as np -try: - from tflite_runtime.interpreter import Interpreter, load_delegate -except ModuleNotFoundError: - from tensorflow.lite.python.interpreter import Interpreter, load_delegate - logger = logging.getLogger(__name__) @@ -50,6 +45,11 @@ def tflite_detect_raw(self, tensor_input): def tflite_load_delegate_interpreter( delegate_library: str, detector_config, device_config ): + try: + from tflite_runtime.interpreter import Interpreter, load_delegate + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter, load_delegate + try: logger.info("Attempting to load NPU") tf_delegate = load_delegate(delegate_library, device_config) diff --git a/frigate/detectors/plugins/cpu_tfl.py b/frigate/detectors/plugins/cpu_tfl.py index 37cc10777..c71705dee 100644 --- a/frigate/detectors/plugins/cpu_tfl.py +++ b/frigate/detectors/plugins/cpu_tfl.py @@ -9,11 +9,6 @@ from frigate.log import redirect_output_to_logger from ..detector_utils import tflite_detect_raw, tflite_init -try: - from tflite_runtime.interpreter import Interpreter -except ModuleNotFoundError: - from tensorflow.lite.python.interpreter import Interpreter - logger = logging.getLogger(__name__) @@ -30,6 +25,12 @@ class CpuTfl(DetectionApi): @redirect_output_to_logger(logger, logging.DEBUG) def __init__(self, detector_config: CpuDetectorConfig): + # Import TensorFlow Lite only when this detector is actually used + try: + from tflite_runtime.interpreter import Interpreter + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter + interpreter = Interpreter( model_path=detector_config.model.path, num_threads=detector_config.num_threads or 3, diff --git a/frigate/detectors/plugins/edgetpu_tfl.py b/frigate/detectors/plugins/edgetpu_tfl.py index 246d2dd41..0caefb2f7 100644 --- a/frigate/detectors/plugins/edgetpu_tfl.py +++ b/frigate/detectors/plugins/edgetpu_tfl.py @@ -8,12 +8,6 @@ from typing_extensions import Literal from frigate.detectors.detection_api import DetectionApi from frigate.detectors.detector_config import BaseDetectorConfig -try: - from tflite_runtime.interpreter import Interpreter, load_delegate -except ModuleNotFoundError: - from tensorflow.lite.python.interpreter import Interpreter, load_delegate - - logger = logging.getLogger(__name__) DETECTOR_KEY = "edgetpu" @@ -28,6 +22,12 @@ class EdgeTpuTfl(DetectionApi): type_key = DETECTOR_KEY def __init__(self, detector_config: EdgeTpuDetectorConfig): + # Import TensorFlow Lite only when this detector is actually used + try: + from tflite_runtime.interpreter import Interpreter, load_delegate + except ModuleNotFoundError: + from tensorflow.lite.python.interpreter import Interpreter, load_delegate + device_config = {} if detector_config.device is not None: device_config = {"device": detector_config.device}