diff --git a/frigate/data_processing/common/face/model.py b/frigate/data_processing/common/face/model.py index 56065d3ff..2fc98ebc1 100644 --- a/frigate/data_processing/common/face/model.py +++ b/frigate/data_processing/common/face/model.py @@ -108,21 +108,22 @@ class FaceRecognizer(ABC): image, M, (output_width, output_height), flags=cv2.INTER_CUBIC ) - def get_blur_confidence_reduction(self, input: np.ndarray) -> tuple[float, float]: + def get_blur_confidence_reduction(self, input: np.ndarray) -> float: """Calculates the reduction in confidence based on the blur of the image.""" if not self.config.face_recognition.blur_confidence_filter: - return 0, 0.0 + return 0.0 variance = cv2.Laplacian(input, cv2.CV_64F).var() + logger.debug(f"face detected with blurriness {variance}") - if variance < 80: # image is very blurry - return variance, 0.05 - elif variance < 100: # image moderately blurry - return variance, 0.03 - elif variance < 150: # image is slightly blurry - return variance, 0.01 + if variance < 120: # image is very blurry + return 0.06 + elif variance < 160: # image moderately blurry + return 0.04 + elif variance < 200: # image is slightly blurry + return 0.02 else: - return variance, 0.0 + return 0.0 def similarity_to_confidence( @@ -234,8 +235,7 @@ class FaceNetRecognizer(FaceRecognizer): # face recognition is best run on grayscale images # get blur factor before aligning face - variance, blur_reduction = self.get_blur_confidence_reduction(face_image) - logger.debug(f"face detected with blurriness {variance}") + blur_reduction = self.get_blur_confidence_reduction(face_image) # align face and run recognition img = self.align_face(face_image, face_image.shape[1], face_image.shape[0]) @@ -345,8 +345,7 @@ class ArcFaceRecognizer(FaceRecognizer): # face recognition is best run on grayscale images # get blur reduction before aligning face - variance, blur_reduction = self.get_blur_confidence_reduction(face_image) - logger.debug(f"face detected with blurriness {variance}") + blur_reduction = self.get_blur_confidence_reduction(face_image) # align face and run recognition img = self.align_face(face_image, face_image.shape[1], face_image.shape[0])