mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-10 08:42:49 +03:00
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:
@@ -21,7 +21,7 @@ from frigate.data_processing.types import DataProcessorMetrics
|
||||
from frigate.db.sqlitevecq import SqliteVecQueueDatabase
|
||||
from frigate.models import Event
|
||||
from frigate.types import ModelStatusTypesEnum
|
||||
from frigate.util.builtin import serialize
|
||||
from frigate.util.builtin import EventsPerSecond, serialize
|
||||
from frigate.util.path import get_event_thumbnail_bytes
|
||||
|
||||
from .onnx.jina_v1_embedding import JinaV1ImageEmbedding, JinaV1TextEmbedding
|
||||
@@ -75,6 +75,11 @@ class Embeddings:
|
||||
self.metrics = metrics
|
||||
self.requestor = InterProcessRequestor()
|
||||
|
||||
self.image_eps = EventsPerSecond()
|
||||
self.image_eps.start()
|
||||
self.text_eps = EventsPerSecond()
|
||||
self.text_eps.start()
|
||||
|
||||
self.reindex_lock = threading.Lock()
|
||||
self.reindex_thread = None
|
||||
self.reindex_running = False
|
||||
@@ -120,6 +125,10 @@ class Embeddings:
|
||||
device="GPU" if config.semantic_search.model_size == "large" else "CPU",
|
||||
)
|
||||
|
||||
def update_stats(self) -> None:
|
||||
self.metrics.image_embeddings_eps = self.image_eps.eps()
|
||||
self.metrics.text_embeddings_eps = self.text_eps.eps()
|
||||
|
||||
def get_model_definitions(self):
|
||||
# Version-specific models
|
||||
if self.config.semantic_search.model == SemanticSearchModelEnum.jinav2:
|
||||
@@ -175,9 +184,10 @@ class Embeddings:
|
||||
)
|
||||
|
||||
duration = datetime.datetime.now().timestamp() - start
|
||||
self.metrics.image_embeddings_fps.value = (
|
||||
self.metrics.image_embeddings_fps.value * 9 + duration
|
||||
self.metrics.image_embeddings_speed.value = (
|
||||
self.metrics.image_embeddings_speed.value * 9 + duration
|
||||
) / 10
|
||||
self.image_eps.update()
|
||||
|
||||
return embedding
|
||||
|
||||
@@ -199,6 +209,7 @@ class Embeddings:
|
||||
for i in range(len(ids)):
|
||||
items.append(ids[i])
|
||||
items.append(serialize(embeddings[i]))
|
||||
self.image_eps.update()
|
||||
|
||||
self.db.execute_sql(
|
||||
"""
|
||||
@@ -209,8 +220,8 @@ class Embeddings:
|
||||
)
|
||||
|
||||
duration = datetime.datetime.now().timestamp() - start
|
||||
self.metrics.text_embeddings_sps.value = (
|
||||
self.metrics.text_embeddings_sps.value * 9 + (duration / len(ids))
|
||||
self.metrics.text_embeddings_speed.value = (
|
||||
self.metrics.text_embeddings_speed.value * 9 + (duration / len(ids))
|
||||
) / 10
|
||||
|
||||
return embeddings
|
||||
@@ -231,9 +242,10 @@ class Embeddings:
|
||||
)
|
||||
|
||||
duration = datetime.datetime.now().timestamp() - start
|
||||
self.metrics.text_embeddings_sps.value = (
|
||||
self.metrics.text_embeddings_sps.value * 9 + duration
|
||||
self.metrics.text_embeddings_speed.value = (
|
||||
self.metrics.text_embeddings_speed.value * 9 + duration
|
||||
) / 10
|
||||
self.text_eps.update()
|
||||
|
||||
return embedding
|
||||
|
||||
@@ -254,6 +266,7 @@ class Embeddings:
|
||||
for i in range(len(ids)):
|
||||
items.append(ids[i])
|
||||
items.append(serialize(embeddings[i]))
|
||||
self.text_eps.update()
|
||||
|
||||
self.db.execute_sql(
|
||||
"""
|
||||
@@ -264,8 +277,8 @@ class Embeddings:
|
||||
)
|
||||
|
||||
duration = datetime.datetime.now().timestamp() - start
|
||||
self.metrics.text_embeddings_sps.value = (
|
||||
self.metrics.text_embeddings_sps.value * 9 + (duration / len(ids))
|
||||
self.metrics.text_embeddings_speed.value = (
|
||||
self.metrics.text_embeddings_speed.value * 9 + (duration / len(ids))
|
||||
) / 10
|
||||
|
||||
return embeddings
|
||||
|
||||
Reference in New Issue
Block a user