Move back to creating grid in main process

This commit is contained in:
Nick Mowen 2023-10-17 08:14:32 -06:00
parent f073d6b94b
commit 8633907821
4 changed files with 13 additions and 9 deletions

View File

@ -70,6 +70,7 @@ class FrigateApp:
self.feature_metrics: dict[str, FeatureMetricsTypes] = {}
self.ptz_metrics: dict[str, PTZMetricsTypes] = {}
self.processes: dict[str, int] = {}
self.region_grids: dict[str, list[list[dict[str, int]]]] = {}
def set_environment_vars(self) -> None:
for key, value in self.config.environment_vars.items():
@ -453,6 +454,10 @@ class FrigateApp:
output_processor.start()
logger.info(f"Output process started: {output_processor.pid}")
def init_historical_regions(self) -> None:
for camera in self.config.cameras.values():
self.region_grids[camera.name] = get_camera_regions_grid(camera)
def start_camera_processors(self) -> None:
for name, config in self.config.cameras.items():
if not self.config.cameras[name].enabled:
@ -472,6 +477,7 @@ class FrigateApp:
self.detected_frames_queue,
self.camera_metrics[name],
self.ptz_metrics[name],
self.region_grids[name],
),
)
camera_process.daemon = True
@ -612,6 +618,7 @@ class FrigateApp:
self.start_detectors()
self.start_video_output_processor()
self.start_ptz_autotracker()
self.init_historical_regions()
self.start_detected_frames_processor()
self.start_camera_processors()
self.start_camera_capture_processes()

View File

@ -266,5 +266,4 @@ def find_by_key(dictionary, target_key):
def get_tomorrow_at_2() -> datetime.datetime:
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
tomorrow.replace(hour=2, minute=0, second=0)
return tomorrow
return tomorrow.replace(hour=2, minute=0, second=0)

View File

@ -52,6 +52,7 @@ def get_camera_regions_grid(
.where(Event.start_time > last_update)
)
valid_event_ids = [e["id"] for e in events.dicts()]
logger.debug(f"Found {len(valid_event_ids)} new events for {name}")
# no new events, return as is
if not valid_event_ids:
@ -71,6 +72,8 @@ def get_camera_regions_grid(
.dicts()
)
logger.debug(f"Found {len(timeline)} new entries for {name}")
width = detect.width
height = detect.height
@ -106,9 +109,6 @@ def get_camera_regions_grid(
for x in range(GRID_SIZE):
for y in range(GRID_SIZE):
cell = grid[x][y]
logger.debug(
f"stats for cell {x * grid_coef * width},{y * grid_coef * height} -> {(x + 1) * grid_coef * width},{(y + 1) * grid_coef * height} :: {len(cell['sizes'])} objects"
)
if len(cell["sizes"]) == 0:
continue

View File

@ -32,7 +32,6 @@ from frigate.util.image import (
from frigate.util.object import (
box_inside,
create_tensor_input,
get_camera_regions_grid,
get_cluster_candidates,
get_cluster_region,
get_cluster_region_from_grid,
@ -383,6 +382,7 @@ def track_camera(
detected_objects_queue,
process_info,
ptz_metrics,
region_grid,
):
stop_event = mp.Event()
@ -423,8 +423,6 @@ def track_camera(
frame_manager = SharedMemoryFrameManager()
region_grid = get_camera_regions_grid(config.name, config.detect)
process_frames(
name,
frame_queue,
@ -528,7 +526,7 @@ def process_frames(
while not stop_event.is_set():
if datetime.datetime.now() > next_region_update:
region_grid = get_camera_regions_grid(camera_name, detect_config)
# TODO signal update
next_region_update = get_tomorrow_at_2()
try: