From 4f85b18b08f1d098448b223d4f237c2421256d08 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Mon, 6 Jan 2025 09:18:25 -0600 Subject: [PATCH] Improvements to face recognition (#15854) * Do not add margin to face images * remove margin * Correctly clear --- frigate/embeddings/maintainer.py | 18 ++++-------------- frigate/util/model.py | 3 +-- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/frigate/embeddings/maintainer.py b/frigate/embeddings/maintainer.py index cfa6adef1..6aa503624 100644 --- a/frigate/embeddings/maintainer.py +++ b/frigate/embeddings/maintainer.py @@ -456,14 +456,9 @@ class EmbeddingMaintainer(threading.Thread): logger.debug("Detected no faces for person object.") return False - margin = int((face_box[2] - face_box[0]) * 0.25) face_frame = person[ - max(0, face_box[1] - margin) : min( - frame.shape[0], face_box[3] + margin - ), - max(0, face_box[0] - margin) : min( - frame.shape[1], face_box[2] + margin - ), + max(0, face_box[1]) : min(frame.shape[0], face_box[3]), + max(0, face_box[0]) : min(frame.shape[1], face_box[2]), ] face_frame = cv2.cvtColor(face_frame, cv2.COLOR_RGB2BGR) else: @@ -492,15 +487,10 @@ class EmbeddingMaintainer(threading.Thread): return False face_frame = cv2.cvtColor(frame, cv2.COLOR_YUV2BGR_I420) - margin = int((face_box[2] - face_box[0]) * 0.25) face_frame = face_frame[ - max(0, face_box[1] - margin) : min( - frame.shape[0], face_box[3] + margin - ), - max(0, face_box[0] - margin) : min( - frame.shape[1], face_box[2] + margin - ), + max(0, face_box[1]) : min(frame.shape[0], face_box[3]), + max(0, face_box[0]) : min(frame.shape[1], face_box[2]), ] res = self.face_classifier.classify_face(face_frame) diff --git a/frigate/util/model.py b/frigate/util/model.py index d14f9cc47..0e990426a 100644 --- a/frigate/util/model.py +++ b/frigate/util/model.py @@ -309,8 +309,7 @@ class FaceClassificationModel: ) def clear_classifier(self) -> None: - self.classifier = None - self.labeler = None + self.face_recognizer = None self.label_map = {} def detect_faces(self, input: np.ndarray) -> tuple[int, cv2.typing.MatLike] | None: