diff --git a/benchmark.py b/benchmark.py index 1f39302a7..46adc59df 100755 --- a/benchmark.py +++ b/benchmark.py @@ -4,13 +4,13 @@ from statistics import mean import numpy as np -import frigate.util as util from frigate.config import DetectorTypeEnum from frigate.object_detection.base import ( ObjectDetectProcess, RemoteObjectDetector, load_labels, ) +from frigate.util.process import FrigateProcess my_frame = np.expand_dims(np.full((300, 300, 3), 1, np.uint8), axis=0) labels = load_labels("/labelmap.txt") @@ -91,7 +91,7 @@ edgetpu_process_2 = ObjectDetectProcess( ) for x in range(0, 10): - camera_process = util.Process( + camera_process = FrigateProcess( target=start, args=(x, 300, detection_queue, events[str(x)]) ) camera_process.daemon = True diff --git a/frigate/embeddings/__init__.py b/frigate/embeddings/__init__.py index 191acf0fd..0e2e3453d 100644 --- a/frigate/embeddings/__init__.py +++ b/frigate/embeddings/__init__.py @@ -16,9 +16,9 @@ from frigate.const import CONFIG_DIR, FACE_DIR from frigate.data_processing.types import DataProcessorMetrics from frigate.db.sqlitevecq import SqliteVecQueueDatabase from frigate.models import Event -from frigate.util import Process as FrigateProcess from frigate.util.builtin import serialize from frigate.util.classification import kickoff_model_training +from frigate.util.process import FrigateProcess from .maintainer import EmbeddingMaintainer from .util import ZScoreNormalization diff --git a/frigate/events/audio.py b/frigate/events/audio.py index d7242cf2b..7f94c2a00 100644 --- a/frigate/events/audio.py +++ b/frigate/events/audio.py @@ -11,7 +11,6 @@ from typing import Any, Tuple import numpy as np -import frigate.util as util from frigate.comms.detections_updater import DetectionPublisher, DetectionTypeEnum from frigate.comms.event_metadata_updater import ( EventMetadataPublisher, @@ -40,6 +39,7 @@ from frigate.ffmpeg_presets import parse_preset_input from frigate.log import LogPipe from frigate.object_detection.base import load_labels from frigate.util.builtin import get_ffmpeg_arg_list +from frigate.util.process import FrigateProcess from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg try: @@ -76,7 +76,7 @@ def get_ffmpeg_command(ffmpeg: FfmpegConfig) -> list[str]: ) -class AudioProcessor(util.Process): +class AudioProcessor(FrigateProcess): name = "frigate.audio_manager" def __init__( diff --git a/frigate/object_detection/base.py b/frigate/object_detection/base.py index e86b1b036..2953f86eb 100644 --- a/frigate/object_detection/base.py +++ b/frigate/object_detection/base.py @@ -7,7 +7,6 @@ from multiprocessing.synchronize import Event as MpEvent import numpy as np -import frigate.util as util from frigate.comms.object_detector_signaler import ( ObjectDetectorPublisher, ObjectDetectorSubscriber, @@ -21,6 +20,7 @@ from frigate.detectors.detector_config import ( ) from frigate.util.builtin import EventsPerSecond, load_labels from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory +from frigate.util.process import FrigateProcess from .util import tensor_transform @@ -85,7 +85,7 @@ class LocalObjectDetector(ObjectDetector): return self.detect_api.detect_raw(tensor_input=tensor_input) -class DetectorRunner(util.Process): +class DetectorRunner(FrigateProcess): def __init__( self, name, @@ -172,7 +172,7 @@ class ObjectDetectProcess: self.detection_queue = detection_queue self.avg_inference_speed = Value("d", 0.01) self.detection_start = Value("d", 0.0) - self.detect_process: util.Process | None = None + self.detect_process: FrigateProcess | None = None self.config = config self.detector_config = detector_config self.start_or_restart() @@ -195,7 +195,7 @@ class ObjectDetectProcess: if (self.detect_process is not None) and self.detect_process.is_alive(): self.stop() self.detect_process = DetectorRunner( - f"detector:{self.name}", + f"frigate.detector:{self.name}", self.detection_queue, self.cameras, self.avg_inference_speed, diff --git a/frigate/output/output.py b/frigate/output/output.py index 0cb8a649f..da5906e78 100644 --- a/frigate/output/output.py +++ b/frigate/output/output.py @@ -14,7 +14,6 @@ from ws4py.server.wsgirefserver import ( ) from ws4py.server.wsgiutils import WebSocketWSGIApplication -import frigate.util as util from frigate.comms.detections_updater import DetectionSubscriber, DetectionTypeEnum from frigate.comms.ws import WebSocket from frigate.config import FrigateConfig @@ -27,6 +26,7 @@ from frigate.output.birdseye import Birdseye from frigate.output.camera import JsmpegCamera from frigate.output.preview import PreviewRecorder from frigate.util.image import SharedMemoryFrameManager, get_blank_yuv_frame +from frigate.util.process import FrigateProcess logger = logging.getLogger(__name__) @@ -71,7 +71,7 @@ def check_disabled_camera_update( birdseye.all_cameras_disabled() -class OutputProcess(util.Process): +class OutputProcess(FrigateProcess): def __init__(self, config: FrigateConfig) -> None: super().__init__(name="frigate.output", daemon=True) self.config = config diff --git a/frigate/record/record.py b/frigate/record/record.py index 153560a11..c52260745 100644 --- a/frigate/record/record.py +++ b/frigate/record/record.py @@ -7,7 +7,7 @@ from playhouse.sqliteq import SqliteQueueDatabase from frigate.config import FrigateConfig from frigate.models import Recordings, ReviewSegment from frigate.record.maintainer import RecordingMaintainer -from frigate.util import Process as FrigateProcess +from frigate.util.process import FrigateProcess logger = logging.getLogger(__name__) diff --git a/frigate/review/review.py b/frigate/review/review.py index e687f4f45..677d07776 100644 --- a/frigate/review/review.py +++ b/frigate/review/review.py @@ -2,14 +2,14 @@ import logging -import frigate.util as util from frigate.config import FrigateConfig from frigate.review.maintainer import ReviewSegmentMaintainer +from frigate.util.process import FrigateProcess logger = logging.getLogger(__name__) -class ReviewProcess(util.Process): +class ReviewProcess(FrigateProcess): def __init__(self, config: FrigateConfig) -> None: super().__init__(name="frigate.review_segment_manager", daemon=True) self.config = config diff --git a/frigate/util/__init__.py b/frigate/util/__init__.py index 307bf4f8b..e69de29bb 100644 --- a/frigate/util/__init__.py +++ b/frigate/util/__init__.py @@ -1,3 +0,0 @@ -from .process import Process - -__all__ = ["Process"] diff --git a/frigate/util/classification.py b/frigate/util/classification.py index 842f38fa2..c6e2b5878 100644 --- a/frigate/util/classification.py +++ b/frigate/util/classification.py @@ -14,7 +14,7 @@ from frigate.comms.embeddings_updater import EmbeddingsRequestEnum, EmbeddingsRe from frigate.comms.inter_process import InterProcessRequestor from frigate.const import CLIPS_DIR, MODEL_CACHE_DIR, UPDATE_MODEL_STATE from frigate.types import ModelStatusTypesEnum -from frigate.util import Process +from frigate.util.process import FrigateProcess BATCH_SIZE = 16 EPOCHS = 50 @@ -144,7 +144,7 @@ def kickoff_model_training( # run training in sub process so that # tensorflow will free CPU / GPU memory # upon training completion - training_process = Process( + training_process = FrigateProcess( target=__train_classification_model, name=f"model_training:{model_name}", args=(model_name,), diff --git a/frigate/util/process.py b/frigate/util/process.py index 6e3459c6b..9234a0ea6 100644 --- a/frigate/util/process.py +++ b/frigate/util/process.py @@ -39,7 +39,7 @@ class BaseProcess(mp.Process): pass -class Process(BaseProcess): +class FrigateProcess(BaseProcess): logger: logging.Logger @property diff --git a/frigate/video.py b/frigate/video.py index 80deae707..5a7f67269 100755 --- a/frigate/video.py +++ b/frigate/video.py @@ -11,7 +11,6 @@ from typing import Any import cv2 -import frigate.util as util from frigate.camera import CameraMetrics, PTZMetrics from frigate.comms.inter_process import InterProcessRequestor from frigate.config import CameraConfig, DetectConfig, ModelConfig @@ -51,6 +50,7 @@ from frigate.util.object import ( is_object_filtered, reduce_detections, ) +from frigate.util.process import FrigateProcess logger = logging.getLogger(__name__) @@ -437,7 +437,7 @@ class CameraCaptureRunner(threading.Thread): ) -class CameraCapture(util.Process): +class CameraCapture(FrigateProcess): def __init__( self, config: CameraConfig, shm_frame_count: int, camera_metrics: CameraMetrics ) -> None: @@ -461,7 +461,7 @@ class CameraCapture(util.Process): camera_watchdog.join() -class CameraTracker(util.Process): +class CameraTracker(FrigateProcess): def __init__( self, config: CameraConfig,