Implement enchrichments events per second graph (#17436)

* Cleanup existing naming

* Add face recognitions per second

* Add lpr fps

* Add all eps

* Clean up line graph

* Translations

* Change wording

* Fix incorrect access

* Don't require plates

* Add comment

* Fix
This commit is contained in:
Nicolas Mowen
2025-03-28 18:13:35 -05:00
committed by GitHub
parent b14abffea3
commit 9e8b85a957
11 changed files with 233 additions and 53 deletions
+8 -2
View File
@@ -24,6 +24,7 @@ from frigate.data_processing.common.face.model import (
FaceNetRecognizer,
FaceRecognizer,
)
from frigate.util.builtin import EventsPerSecond
from frigate.util.image import area
from ..types import DataProcessorMetrics
@@ -51,6 +52,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
self.requires_face_detection = "face" not in self.config.objects.all_objects
self.person_face_history: dict[str, list[tuple[str, float, int]]] = {}
self.recognizer: FaceRecognizer | None = None
self.faces_per_second = EventsPerSecond()
download_path = os.path.join(MODEL_CACHE_DIR, "facedet")
self.model_files = {
@@ -103,6 +105,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
score_threshold=0.5,
nms_threshold=0.3,
)
self.faces_per_second.start()
def __detect_face(
self, input: np.ndarray, threshold: float
@@ -146,12 +149,15 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
return face
def __update_metrics(self, duration: float) -> None:
self.metrics.face_rec_fps.value = (
self.metrics.face_rec_fps.value * 9 + duration
self.faces_per_second.update()
self.metrics.face_rec_speed.value = (
self.metrics.face_rec_speed.value * 9 + duration
) / 10
def process_frame(self, obj_data: dict[str, any], frame: np.ndarray):
"""Look for faces in image."""
self.metrics.face_rec_fps.value = self.faces_per_second.eps()
if not self.config.cameras[obj_data["camera"]].face_recognition.enabled:
return