Min face configuration option (#18284)

* Add option to specify minimum face attempts for an object

* Set upper bound
This commit is contained in:
Nicolas Mowen 2025-05-18 06:20:59 -06:00 committed by GitHub
parent b10615aef1
commit b18572a3b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 0 deletions

View File

@ -65,6 +65,8 @@ Fine-tune face recognition with these optional parameters at the global level of
- Default: `0.8`.
- `recognition_threshold`: Recognition confidence score required to add the face to the object as a sub label.
- Default: `0.9`.
- `min_faces`: Min face attempts for the sub label to be applied to the person object.
- Default: `1`
- `save_attempts`: Number of images of recognized faces to save for training.
- Default: `100`.
- `blur_confidence_filter`: Enables a filter that calculates how blurry the face is and adjusts the confidence based on this.

View File

@ -559,6 +559,8 @@ face_recognition:
recognition_threshold: 0.9
# Optional: Min area of detected face box to consider running face recognition (default: shown below)
min_area: 500
# Optional: Min face attempts for the sub label to be applied to the person object (default: shown below)
min_faces: 1
# Optional: Number of images of recognized faces to save for training (default: shown below)
save_attempts: 100
# Optional: Apply a blur quality filter to adjust confidence based on the blur level of the image (default: shown below)

View File

@ -80,6 +80,12 @@ class FaceRecognitionConfig(FrigateBaseModel):
min_area: int = Field(
default=750, title="Min area of face box to consider running face recognition."
)
min_faces: int = Field(
default=1,
gt=0,
le=6,
title="Min face attempts for the sub label to be applied to the person object.",
)
save_attempts: int = Field(
default=100, ge=0, title="Number of face attempts to save in the train tab."
)

View File

@ -302,6 +302,9 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
self.person_face_history[id]
)
if len(self.person_face_history[id]) < self.face_config.min_faces:
weighted_sub_label = "unknown"
self.requestor.send_data(
"tracked_object_update",
json.dumps(