From 82c236f3498c2b4905a77615388c104d641789db Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Thu, 23 Oct 2025 07:28:58 -0600 Subject: [PATCH] Dynamically add metrics for new model --- frigate/data_processing/types.py | 8 ++++++++ frigate/embeddings/maintainer.py | 3 +++ 2 files changed, 11 insertions(+) diff --git a/frigate/data_processing/types.py b/frigate/data_processing/types.py index 263a8b987..5eef3a044 100644 --- a/frigate/data_processing/types.py +++ b/frigate/data_processing/types.py @@ -10,6 +10,7 @@ from frigate.data_processing.real_time.whisper_online import FasterWhisperASR class DataProcessorMetrics: + manager: SyncManager image_embeddings_speed: Synchronized image_embeddings_eps: Synchronized text_embeddings_speed: Synchronized @@ -28,6 +29,7 @@ class DataProcessorMetrics: classification_cps: dict[str, Synchronized] def __init__(self, manager: SyncManager, custom_classification_models: list[str]): + self.manager = manager self.image_embeddings_speed = manager.Value("d", 0.0) self.image_embeddings_eps = manager.Value("d", 0.0) self.text_embeddings_speed = manager.Value("d", 0.0) @@ -50,6 +52,12 @@ class DataProcessorMetrics: self.classification_speeds[key] = manager.Value("d", 0.0) self.classification_cps[key] = manager.Value("d", 0.0) + def add_classification_model(self, model_name: str) -> None: + """Add metrics for a new classification model dynamically.""" + if model_name not in self.classification_speeds: + self.classification_speeds[model_name] = self.manager.Value("d", 0.0) + self.classification_cps[model_name] = self.manager.Value("d", 0.0) + class DataProcessorModelRunner: def __init__(self, requestor, device: str = "CPU", model_size: str = "large"): diff --git a/frigate/embeddings/maintainer.py b/frigate/embeddings/maintainer.py index fe04d8b17..e67e14842 100644 --- a/frigate/embeddings/maintainer.py +++ b/frigate/embeddings/maintainer.py @@ -304,6 +304,9 @@ class EmbeddingMaintainer(threading.Thread): ) return + if self.metrics: + self.metrics.add_classification_model(model_name) + if model_config.state_config is not None: processor = CustomStateClassificationProcessor( self.config, model_config, self.requestor, self.metrics