diff --git a/frigate/config/semantic_search.py b/frigate/config/semantic_search.py index 35346e91d..154423bae 100644 --- a/frigate/config/semantic_search.py +++ b/frigate/config/semantic_search.py @@ -12,6 +12,9 @@ class FaceRecognitionConfig(FrigateBaseModel): threshold: float = Field( default=0.8, title="Face similarity score required to be considered a match." ) + min_area: int = Field( + default=1000, title="Min area of face box to consider running face recognition." + ) class SemanticSearchConfig(FrigateBaseModel): diff --git a/frigate/embeddings/maintainer.py b/frigate/embeddings/maintainer.py index ac6d14d63..1e7606400 100644 --- a/frigate/embeddings/maintainer.py +++ b/frigate/embeddings/maintainer.py @@ -26,7 +26,7 @@ from frigate.events.types import EventTypeEnum from frigate.genai import get_genai_client from frigate.models import Event from frigate.util.builtin import serialize -from frigate.util.image import SharedMemoryFrameManager, calculate_region +from frigate.util.image import SharedMemoryFrameManager, calculate_region, area from .embeddings import Embeddings @@ -317,7 +317,8 @@ class EmbeddingMaintainer(threading.Thread): face_box = face.get("box") - if not face_box: + # check that face is valid + if not face_box or area(face_box) < self.config.semantic_search.face_recognition.min_area: return face_frame = cv2.cvtColor(frame, cv2.COLOR_YUV2BGR_I420)