Make face detection_threshold effective below 0.5

FaceDetectorYN was created with a hardcoded score_threshold of 0.5, so
configured face_recognition.detection_threshold values below 0.5 had no
effect: lower-confidence faces were discarded inside OpenCV before the
config threshold was applied as a post-filter.

On cameras with low-resolution detect streams (e.g. 736x416 substreams),
real faces routinely score 0.3-0.5 in YuNet, so face recognition never
ran on them even though the embedding model handles such crops well.

Cap the internal threshold at the configured value instead.
This commit is contained in:
Jozef Huscava
2026-07-12 14:48:02 +02:00
parent 5f6043aa92
commit 433ee15275
+1 -1
View File
@@ -127,7 +127,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
os.path.join(MODEL_CACHE_DIR, "facedet/facedet.onnx"), os.path.join(MODEL_CACHE_DIR, "facedet/facedet.onnx"),
config="", config="",
input_size=(320, 320), input_size=(320, 320),
score_threshold=0.5, score_threshold=min(0.5, self.face_config.detection_threshold),
nms_threshold=0.3, nms_threshold=0.3,
) )
self.faces_per_second.start() self.faces_per_second.start()