|
9 | 9 | import time |
10 | 10 | from collections import deque |
11 | 11 | from contextlib import contextmanager |
12 | | -from dataclasses import dataclass |
13 | 12 | from typing import Any |
14 | 13 |
|
15 | 14 | import numpy as np |
|
27 | 26 | from dlclivegui.utils.stats import WorkerTimingStats |
28 | 27 | from dlclivegui.utils.utils import format_thread_stack |
29 | 28 |
|
30 | | -from .inference.base import PoseBackends, PosePacket, PoseResult, PoseSource, WorkerState |
| 29 | +from .inference.base import PoseBackends, PosePacket, PoseResult, PoseSource, ProcessorStats, WorkerState |
31 | 30 |
|
32 | 31 | logger = logging.getLogger(__name__) |
33 | 32 | STOP_WORKER_TIMEOUT = 10.0 # # seconds to wait in STOPPING state before scheduling background reaping |
@@ -93,27 +92,6 @@ def validate_pose_array( |
93 | 92 | return arr |
94 | 93 |
|
95 | 94 |
|
96 | | -@dataclass |
97 | | -class ProcessorStats: |
98 | | - """Statistics for DLC processor performance.""" |
99 | | - |
100 | | - frames_enqueued: int = 0 |
101 | | - frames_processed: int = 0 |
102 | | - frames_dropped: int = 0 |
103 | | - queue_size: int = 0 |
104 | | - processing_fps: float = 0.0 |
105 | | - average_latency: float = 0.0 |
106 | | - last_latency: float = 0.0 |
107 | | - # Profiling metrics |
108 | | - avg_queue_wait: float = 0.0 |
109 | | - avg_inference_time: float = 0.0 |
110 | | - avg_signal_emit_time: float = 0.0 |
111 | | - avg_total_process_time: float = 0.0 |
112 | | - # Separated timing for GPU vs socket processor |
113 | | - avg_gpu_inference_time: float = 0.0 # Pure model inference |
114 | | - avg_processor_overhead: float = 0.0 # Socket processor overhead |
115 | | - |
116 | | - |
117 | 95 | class DLCLiveProcessor(QObject): |
118 | 96 | """Background pose estimation using DLCLive with queue-based threading.""" |
119 | 97 |
|
|
0 commit comments