From 86b3283b2f77783b2149e2ada1bfc7cdf94802ae Mon Sep 17 00:00:00 2001 From: MediaPipe Team Date: Fri, 6 Dec 2019 16:14:36 -0800 Subject: [PATCH] Project import generated by Copybara. GitOrigin-RevId: 831b7eb6038549a3a5047e7a113d6a11956e2de9 --- ..._detection_desktop_lstd_tflite_graph.pbtxt | 176 ------------------ 1 file changed, 176 deletions(-) delete mode 100644 mediapipe/graphs/object_detection/object_detection_desktop_lstd_tflite_graph.pbtxt diff --git a/mediapipe/graphs/object_detection/object_detection_desktop_lstd_tflite_graph.pbtxt b/mediapipe/graphs/object_detection/object_detection_desktop_lstd_tflite_graph.pbtxt deleted file mode 100644 index 1cbba49d0..000000000 --- a/mediapipe/graphs/object_detection/object_detection_desktop_lstd_tflite_graph.pbtxt +++ /dev/null @@ -1,176 +0,0 @@ -# MediaPipe graph that performs LSTM based object detection on desktop with -# TensorFlow Lite on CPU. - -# max_queue_size limits the number of packets enqueued on any input stream -# by throttling inputs to the graph. This makes the graph only process one -# frame per time. -max_queue_size: 1 - -# Decodes an input video file into images and a video header. -node { - calculator: "OpenCvVideoDecoderCalculator" - input_side_packet: "INPUT_FILE_PATH:input_video_path" - output_stream: "VIDEO:input_video" - output_stream: "VIDEO_PRESTREAM:input_video_header" -} - -# Transforms the input image on CPU to a 256x256 image. To scale the image, by -# default it uses the STRETCH scale mode that maps the entire input image to the -# entire transformed image. As a result, image aspect ratio may be changed and -# objects in the image may be deformed (stretched or squeezed), but the object -# detection model used in this graph is agnostic to that deformation. -node: { - calculator: "ImageTransformationCalculator" - input_stream: "IMAGE:input_video" - output_stream: "IMAGE:transformed_input_video" - node_options: { - [type.googleapis.com/mediapipe.ImageTransformationCalculatorOptions] { - output_width: 256 - output_height: 256 - } - } -} - -# Converts the transformed input image on CPU into an image tensor as a -# TfLiteTensor. The zero_center option is set to true to normalize the -# pixel values to [-1.f, 1.f] as opposed to [0.f, 1.f]. -node { - calculator: "TfLiteConverterCalculator" - input_stream: "IMAGE:transformed_input_video" - output_stream: "TENSORS:image_tensor" - node_options: { - [type.googleapis.com/mediapipe.TfLiteConverterCalculatorOptions] { - zero_center: true - use_quantized_tensors: true - } - } -} - -# Joins the input image_tensor and previous lstm state tensors into a single -# output vector of tensors. -node { - calculator: "ConcatenateTfLiteTensorVectorCalculator" - input_stream: "image_tensor" - input_stream: "prev_lstm_tensors" - output_stream: "concatenated_tensors" -} - -# Runs a TensorFlow Lite model on CPU that takes an image tensor and state -# tensors, then outputs a vector of tensors representing, for instance, -# detection boxes/keypoints and scores. -node { - calculator: "TfLiteInferenceCalculator" - input_stream: "TENSORS:concatenated_tensors" - output_stream: "TENSORS:inference_tensors" - node_options: { - [type.googleapis.com/mediapipe.TfLiteInferenceCalculatorOptions] { - model_path: "mediapipe/models/lstdlite_object_detection.tflite" - } - } -} - -# Splits up the output tensors into two streams [detection_boxes, -# detection_classes, detection_scores, num_detections], and [lstm_c, lstm_h]. -node { - calculator: "SplitTfLiteTensorVectorCalculator" - input_stream: "inference_tensors" - output_stream: "detection_tensors" - output_stream: "lstm_tensors" - options { - [type.googleapis.com/mediapipe.SplitVectorCalculatorOptions] { - ranges: { begin: 0 end: 4 } - ranges: { begin: 4 end: 6 } - } - } -} - -# Waits for the LSTM state output from the TfLite inferencing to feed back in as -# an input tensor for the next frame. -node { - calculator: "PreviousLoopbackCalculator" - input_stream: "MAIN:transformed_input_video" - input_stream: "LOOP:lstm_tensors" - input_stream_info: { tag_index: "LOOP" back_edge: true } - output_stream: "PREV_LOOP:prev_lstm_tensors" -} - -# Decodes the detection tensors generated by the TensorFlow Lite model, based on -# the specification in the options, into a vector of detections. Each detection -# describes a detected object. -node { - calculator: "TfLiteTensorsToDetectionsCalculator" - input_stream: "TENSORS:detection_tensors" - output_stream: "DETECTIONS:detections" - node_options: { - [type.googleapis.com/mediapipe.TfLiteTensorsToDetectionsCalculatorOptions] { - num_classes: 7 - num_boxes: 40 - num_coords: 4 - } - } -} - -# Performs non-max suppression to remove excessive detections. -node { - calculator: "NonMaxSuppressionCalculator" - input_stream: "detections" - output_stream: "filtered_detections" - node_options: { - [type.googleapis.com/mediapipe.NonMaxSuppressionCalculatorOptions] { - min_suppression_threshold: 0.4 - min_score_threshold: 0.2 - max_num_detections: 5 - overlap_type: INTERSECTION_OVER_UNION - } - } -} - -# Maps detection label IDs to the corresponding label text. The label map is -# provided in the label_map_path option. -node { - calculator: "DetectionLabelIdToTextCalculator" - input_stream: "filtered_detections" - output_stream: "output_detections" - node_options: { - [type.googleapis.com/mediapipe.DetectionLabelIdToTextCalculatorOptions] { - label_map_path: "mediapipe/models/lstdlite_object_detection_labelmap.txt" - } - } -} - -# Converts the detections to drawing primitives for annotation overlay. -node { - calculator: "DetectionsToRenderDataCalculator" - input_stream: "DETECTIONS:output_detections" - output_stream: "RENDER_DATA:render_data" - node_options: { - [type.googleapis.com/mediapipe.DetectionsToRenderDataCalculatorOptions] { - thickness: 2.0 - color { r: 255 g: 255 b: 255 } - } - } -} - -# Draws annotations and overlays them on top of the original image coming into -# the graph. -node { - calculator: "AnnotationOverlayCalculator" - input_stream: "INPUT_FRAME:input_video" - input_stream: "render_data" - output_stream: "OUTPUT_FRAME:output_video" -} - -# Encodes the annotated images into a video file, adopting properties specified -# in the input video header, e.g., video framerate. -node { - calculator: "OpenCvVideoEncoderCalculator" - input_stream: "VIDEO:output_video" - input_stream: "VIDEO_PRESTREAM:input_video_header" - input_side_packet: "OUTPUT_FILE_PATH:output_video_path" - node_options: { - [type.googleapis.com/mediapipe.OpenCvVideoEncoderCalculatorOptions]: { - codec: "avc1" - video_format: "mp4" - } - } -}