From 7931203261b0f5b33cbcc15048d9528d41a606a1 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sat, 28 Sep 2024 07:39:06 -0600 Subject: [PATCH] Use the dynamic label map --- frigate/const.py | 2 +- frigate/detectors/detector_config.py | 7 +++++-- frigate/video.py | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/frigate/const.py b/frigate/const.py index eecb8aa5c..b37ca662e 100644 --- a/frigate/const.py +++ b/frigate/const.py @@ -15,7 +15,7 @@ PLUS_API_HOST = "https://api.frigate.video" # Attribute & Object constants -ATTRIBUTE_LABEL_MAP = { +DEFAULT_ATTRIBUTE_LABEL_MAP = { "person": ["amazon", "face"], "car": ["amazon", "fedex", "license_plate", "ups"], } diff --git a/frigate/detectors/detector_config.py b/frigate/detectors/detector_config.py index 96dc7024c..a44167ba3 100644 --- a/frigate/detectors/detector_config.py +++ b/frigate/detectors/detector_config.py @@ -9,7 +9,7 @@ import requests from pydantic import BaseModel, ConfigDict, Field from pydantic.fields import PrivateAttr -from frigate.const import ATTRIBUTE_LABEL_MAP +from frigate.const import DEFAULT_ATTRIBUTE_LABEL_MAP from frigate.plus import PlusApi from frigate.util.builtin import generate_color_palette, load_labels @@ -130,7 +130,10 @@ class ModelConfig(BaseModel): self.model_type = model_info["type"] # generate list of attribute labels - self.attributes_map = model_info.get("attributes", ATTRIBUTE_LABEL_MAP) + self.attributes_map = { + **model_info.get("attributes", DEFAULT_ATTRIBUTE_LABEL_MAP), + **self.attributes_map, + } unique_attributes = set() for attributes in self.attributes_map.values(): diff --git a/frigate/video.py b/frigate/video.py index 8b6ceacc4..485764d2e 100755 --- a/frigate/video.py +++ b/frigate/video.py @@ -16,7 +16,6 @@ from frigate.comms.config_updater import ConfigSubscriber from frigate.comms.inter_process import InterProcessRequestor from frigate.config import CameraConfig, DetectConfig, ModelConfig from frigate.const import ( - ATTRIBUTE_LABEL_MAP, CACHE_DIR, CACHE_SEGMENT_FORMAT, REQUEST_REGION_GRID, @@ -736,7 +735,7 @@ def process_frames( # group the attribute detections based on what label they apply to attribute_detections = {} - for label, attribute_labels in ATTRIBUTE_LABEL_MAP.items(): + for label, attribute_labels in model_config.attributes_map.items(): attribute_detections[label] = [ d for d in consolidated_detections if d[0] in attribute_labels ]