mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
cleanup
This commit is contained in:
parent
bb8e4621f5
commit
05951aa7da
@ -51,12 +51,6 @@ GLOBAL_OBJECT_CONFIG = CONFIG.get('objects', {})
|
|||||||
WEB_PORT = CONFIG.get('web_port', 5000)
|
WEB_PORT = CONFIG.get('web_port', 5000)
|
||||||
DEBUG = (CONFIG.get('debug', '0') == '1')
|
DEBUG = (CONFIG.get('debug', '0') == '1')
|
||||||
|
|
||||||
# TODO: make CPU/Coral switching more seamless
|
|
||||||
# MODEL_PATH = CONFIG.get('tflite_model', '/lab/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite')
|
|
||||||
MODEL_PATH = CONFIG.get('tflite_model', '/lab/detect.tflite')
|
|
||||||
LABEL_MAP = CONFIG.get('label_map', '/lab/labelmap.txt')
|
|
||||||
|
|
||||||
|
|
||||||
class CameraWatchdog(threading.Thread):
|
class CameraWatchdog(threading.Thread):
|
||||||
def __init__(self, camera_processes, config, tflite_process, tracked_objects_queue):
|
def __init__(self, camera_processes, config, tflite_process, tracked_objects_queue):
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
@ -129,13 +123,13 @@ def main():
|
|||||||
tracked_objects_queue = mp.Queue()
|
tracked_objects_queue = mp.Queue()
|
||||||
|
|
||||||
# Start the shared tflite process
|
# Start the shared tflite process
|
||||||
tflite_process = EdgeTPUProcess(MODEL_PATH)
|
tflite_process = EdgeTPUProcess()
|
||||||
|
|
||||||
# start the camera processes
|
# start the camera processes
|
||||||
camera_processes = {}
|
camera_processes = {}
|
||||||
for name, config in CONFIG['cameras'].items():
|
for name, config in CONFIG['cameras'].items():
|
||||||
camera_processes[name] = {
|
camera_processes[name] = {
|
||||||
'fps': mp.Value('d', float(config[name]['fps'])),
|
'fps': mp.Value('d', float(config['fps'])),
|
||||||
'skipped_fps': mp.Value('d', 0.0)
|
'skipped_fps': mp.Value('d', 0.0)
|
||||||
}
|
}
|
||||||
camera_process = mp.Process(target=track_camera, args=(name, config, FFMPEG_DEFAULT_CONFIG, GLOBAL_OBJECT_CONFIG,
|
camera_process = mp.Process(target=track_camera, args=(name, config, FFMPEG_DEFAULT_CONFIG, GLOBAL_OBJECT_CONFIG,
|
||||||
|
@ -27,7 +27,7 @@ def load_labels(path, encoding='utf-8'):
|
|||||||
return {index: line.strip() for index, line in enumerate(lines)}
|
return {index: line.strip() for index, line in enumerate(lines)}
|
||||||
|
|
||||||
class ObjectDetector():
|
class ObjectDetector():
|
||||||
def __init__(self, model_file):
|
def __init__(self):
|
||||||
edge_tpu_delegate = None
|
edge_tpu_delegate = None
|
||||||
try:
|
try:
|
||||||
edge_tpu_delegate = load_delegate('libedgetpu.so.1.0')
|
edge_tpu_delegate = load_delegate('libedgetpu.so.1.0')
|
||||||
@ -61,7 +61,7 @@ class ObjectDetector():
|
|||||||
return detections
|
return detections
|
||||||
|
|
||||||
class EdgeTPUProcess():
|
class EdgeTPUProcess():
|
||||||
def __init__(self, model):
|
def __init__(self):
|
||||||
# TODO: see if we can use the plasma store with a queue and maintain the same speeds
|
# TODO: see if we can use the plasma store with a queue and maintain the same speeds
|
||||||
try:
|
try:
|
||||||
sa.delete("frame")
|
sa.delete("frame")
|
||||||
@ -79,11 +79,11 @@ class EdgeTPUProcess():
|
|||||||
self.detect_ready = mp.Event()
|
self.detect_ready = mp.Event()
|
||||||
self.frame_ready = mp.Event()
|
self.frame_ready = mp.Event()
|
||||||
self.fps = mp.Value('d', 0.0)
|
self.fps = mp.Value('d', 0.0)
|
||||||
self.avg_inference_speed = mp.Value('d', 10.0)
|
self.avg_inference_speed = mp.Value('d', 0.01)
|
||||||
|
|
||||||
def run_detector(model, detect_ready, frame_ready, fps, avg_speed):
|
def run_detector(detect_ready, frame_ready, fps, avg_speed):
|
||||||
print(f"Starting detection process: {os.getpid()}")
|
print(f"Starting detection process: {os.getpid()}")
|
||||||
object_detector = ObjectDetector(model)
|
object_detector = ObjectDetector()
|
||||||
input_frame = sa.attach("frame")
|
input_frame = sa.attach("frame")
|
||||||
detections = sa.attach("detections")
|
detections = sa.attach("detections")
|
||||||
fps_tracker = EventsPerSecond()
|
fps_tracker = EventsPerSecond()
|
||||||
@ -103,7 +103,7 @@ class EdgeTPUProcess():
|
|||||||
duration = datetime.datetime.now().timestamp()-start
|
duration = datetime.datetime.now().timestamp()-start
|
||||||
avg_speed.value = (avg_speed.value*9 + duration)/10
|
avg_speed.value = (avg_speed.value*9 + duration)/10
|
||||||
|
|
||||||
self.detect_process = mp.Process(target=run_detector, args=(model, self.detect_ready, self.frame_ready, self.fps, self.avg_inference_speed))
|
self.detect_process = mp.Process(target=run_detector, args=(self.detect_ready, self.frame_ready, self.fps, self.avg_inference_speed))
|
||||||
self.detect_process.daemon = True
|
self.detect_process.daemon = True
|
||||||
self.detect_process.start()
|
self.detect_process.start()
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ def track_camera(name, config, ffmpeg_global_config, global_objects_config, dete
|
|||||||
mask[:] = 255
|
mask[:] = 255
|
||||||
|
|
||||||
motion_detector = MotionDetector(frame_shape, mask, resize_factor=6)
|
motion_detector = MotionDetector(frame_shape, mask, resize_factor=6)
|
||||||
object_detector = RemoteObjectDetector('/lab/labelmap.txt', detect_lock, detect_ready, frame_ready)
|
object_detector = RemoteObjectDetector('/labelmap.txt', detect_lock, detect_ready, frame_ready)
|
||||||
|
|
||||||
object_tracker = ObjectTracker(10)
|
object_tracker = ObjectTracker(10)
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ def track_camera(name, config, ffmpeg_global_config, global_objects_config, dete
|
|||||||
motion_boxes = motion_detector.detect(frame)
|
motion_boxes = motion_detector.detect(frame)
|
||||||
|
|
||||||
# skip object detection if we are below the min_fps
|
# skip object detection if we are below the min_fps
|
||||||
if frame_num > 50 and fps.value < expected_fps-1:
|
if frame_num > 100 and fps.value < expected_fps-1:
|
||||||
skipped_fps_tracker.update()
|
skipped_fps_tracker.update()
|
||||||
skipped_fps.value = skipped_fps_tracker.eps()
|
skipped_fps.value = skipped_fps_tracker.eps()
|
||||||
continue
|
continue
|
||||||
|
Loading…
Reference in New Issue
Block a user