From acc57a9dc778329a67b81a603a60e97efc0ae210 Mon Sep 17 00:00:00 2001
From: Mathieu Beligon <mathieu.beligon@gmail.com>
Date: Fri, 20 Mar 2020 18:35:40 -0400
Subject: [PATCH] [robots] (demo trt) Add target sender to pipeline

---
 .../research/demos/demo_pipeline_camera.py    | 31 +++++++++++--------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/robots-at-robots/research/demos/demo_pipeline_camera.py b/robots-at-robots/research/demos/demo_pipeline_camera.py
index 8088138..b340ec2 100644
--- a/robots-at-robots/research/demos/demo_pipeline_camera.py
+++ b/robots-at-robots/research/demos/demo_pipeline_camera.py
@@ -4,6 +4,7 @@ from time import time
 import pycuda.autoinit  # This is needed for initializing CUDA driver
 
 from polystar.common.communication.file_descriptor_target_sender import FileDescriptorTargetSender
+from polystar.common.communication.print_target_sender import PrintTargetSender
 from polystar.common.constants import MODELS_DIR
 from polystar.common.frame_generators.camera_frame_generator import CameraFrameGenerator
 from polystar.common.models.camera import Camera
@@ -15,6 +16,7 @@ from polystar.common.pipeline.object_selectors.closest_object_selector import Cl
 from polystar.common.pipeline.objects_detectors.trt_model_object_detector import TRTModelObjectsDetector
 from polystar.common.pipeline.objects_validators.confidence_object_validator import ConfidenceObjectValidator
 from polystar.common.pipeline.objects_validators.type_object_validator import TypeObjectValidator
+from polystar.common.pipeline.pipeline import NoTargetFound
 from polystar.common.pipeline.target_factories.ratio_simple_target_factory import RatioSimpleTargetFactory
 from polystar.common.utils.tensorflow import patch_tf_v2
 from polystar.common.view.cv2_results_viewer import CV2ResultViewer
@@ -41,20 +43,23 @@ if __name__ == "__main__":
 
     fps = 0
     with CV2ResultViewer("TensorRT demo") as viewer:
-        for image in CameraFrameGenerator(1_280, 720).generate():
 
+        for image in CameraFrameGenerator(1_280, 720).generate():
+            viewer.new(image)
             previous_time = time()
+            try:
+                # inference
+                pipeline.predict_target(image)
 
-            # inference
-            pipeline.predict_target(image)
-
-            # display
-            fps = 0.9 * fps + 0.1 / (time() - previous_time)
-            viewer.new(image)
-            viewer.add_objects(pipeline.debug_info_.validated_objects, forced_color=(0.6, 0.6, 0.6))
-            viewer.add_object(pipeline.debug_info_.selected_object)
-            viewer.add_text(f"FPS: {fps:.1f}", 10, 10, (0, 0, 0))
-            viewer.display()
+                # display
+                viewer.add_objects(pipeline.debug_info_.validated_objects, forced_color=(0.6, 0.6, 0.6))
+                viewer.add_object(pipeline.debug_info_.selected_object)
 
-            if viewer.finished:
-                break
+                if viewer.finished:
+                    break
+            except NoTargetFound:
+                pass
+            finally:
+                fps = 0.9 * fps + 0.1 / (time() - previous_time)
+                viewer.add_text(f"FPS: {fps:.1f}", 10, 10, (0, 0, 0))
+                viewer.display()
-- 
GitLab