Explorar o código

use dictionary for detectors for sensors

Blake Blackshear %!s(int64=4) %!d(string=hai) anos
pai
achega
623d138d60
Modificáronse 2 ficheiros con 11 adicións e 10 borrados
  1. 2 1
      config/config.example.yml
  2. 9 9
      detect_objects.py

+ 2 - 1
config/config.example.yml

@@ -6,7 +6,8 @@ web_port: 5000
 ## EdgeTPU requires device as defined here: https://coral.ai/docs/edgetpu/multiple-edgetpu/#using-the-tensorflow-lite-python-api
 ################
 detectors:
-  - type: edgetpu
+  coral:
+    type: edgetpu
     device: usb
 
 mqtt:

+ 9 - 9
detect_objects.py

@@ -86,7 +86,7 @@ class CameraWatchdog(threading.Thread):
             now = datetime.datetime.now().timestamp()
 
             # check the detection processes
-            for detector in self.detectors:
+            for detector in self.detectors.values():
                 detection_start = detector.detection_start.value
                 if (detection_start > 0.0 and 
                     now - detection_start > 10):
@@ -186,12 +186,12 @@ def main():
 
     detection_queue = mp.Queue()
 
-    detectors = []
-    for detector in DETECTORS:
+    detectors = {}
+    for name, detector in DETECTORS.items():
         if detector['type'] == 'cpu':
-            detectors.append(EdgeTPUProcess(detection_queue, out_events=out_events, tf_device='cpu'))
+            detectors[name] = EdgeTPUProcess(detection_queue, out_events=out_events, tf_device='cpu')
         if detector['type'] == 'edgetpu':
-            detectors.append(EdgeTPUProcess(detection_queue, out_events=out_events, tf_device=detector['device']))
+            detectors[name] = EdgeTPUProcess(detection_queue, out_events=out_events, tf_device=detector['device'])
 
     # create the camera processes
     camera_processes = {}
@@ -373,13 +373,13 @@ def main():
                 }
             }
         
-        stats['detectors'] = []
-        for detector in detectors:
-            stats['detectors'].append({
+        stats['detectors'] = {}
+        for name, detector in detectors.items():
+            stats['detectors'][name] = {
                 'inference_speed': round(detector.avg_inference_speed.value*1000, 2),
                 'detection_start': detector.detection_start.value,
                 'pid': detector.detect_process.pid
-            })
+            }
         stats['detection_fps'] = round(total_detection_fps, 2)
 
         return jsonify(stats)