From a7ff79f0639408c9d2772cb0a75c5e0ff861e3fb Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 26 Mar 2025 06:25:36 -0600 Subject: [PATCH] Adjust min_score config to unknown_score --- frigate/config/classification.py | 4 ++-- frigate/data_processing/common/face/model.py | 7 +------ frigate/data_processing/real_time/face.py | 3 +++ 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/frigate/config/classification.py b/frigate/config/classification.py index 25c379546..aecbf6537 100644 --- a/frigate/config/classification.py +++ b/frigate/config/classification.py @@ -54,8 +54,8 @@ class FaceRecognitionConfig(FrigateBaseModel): model_size: str = Field( default="small", title="The size of the embeddings model used." ) - min_score: float = Field( - title="Minimum face distance score required to save the attempt.", + unknown_score: float = Field( + title="Minimum face distance score required to be marked as a potential match.", default=0.8, gt=0.0, le=1.0, diff --git a/frigate/data_processing/common/face/model.py b/frigate/data_processing/common/face/model.py index 35777074a..5e15a2441 100644 --- a/frigate/data_processing/common/face/model.py +++ b/frigate/data_processing/common/face/model.py @@ -164,9 +164,7 @@ class LBPHRecognizer(FaceRecognizer): return self.recognizer: cv2.face.LBPHFaceRecognizer = ( - cv2.face.LBPHFaceRecognizer_create( - radius=2, threshold=(1 - self.config.face_recognition.min_score) * 1000 - ) + cv2.face.LBPHFaceRecognizer_create(radius=2, threshold=400) ) self.recognizer.train(faces, np.array(labels)) @@ -304,7 +302,4 @@ class ArcFaceRecognizer(FaceRecognizer): score = confidence label = name - if score < self.config.face_recognition.min_score: - return None - return label, round(score * blur_factor, 2) diff --git a/frigate/data_processing/real_time/face.py b/frigate/data_processing/real_time/face.py index 16d625c2b..9b479a527 100644 --- a/frigate/data_processing/real_time/face.py +++ b/frigate/data_processing/real_time/face.py @@ -241,6 +241,9 @@ class FaceRealTimeProcessor(RealTimeProcessorApi): sub_label, score = res + if score < self.face_config.unknown_score: + sub_label = "unknown" + logger.debug( f"Detected best face for person as: {sub_label} with probability {score}" )