input_side_packet: "input_sequence_example_path" input_side_packet: "input_video_path" input_side_packet: "output_video_path" input_side_packet: "segment_size" input_side_packet: "overlap" node { calculator: "LocalFileContentsCalculator" input_side_packet: "FILE_PATH:input_sequence_example_path" output_side_packet: "CONTENTS:input_sequence_example" } node { calculator: "StringToSequenceExampleCalculator" input_side_packet: "STRING:input_sequence_example" output_side_packet: "SEQUENCE_EXAMPLE:parsed_sequence_example" } node { calculator: "UnpackMediaSequenceCalculator" input_side_packet: "SEQUENCE_EXAMPLE:parsed_sequence_example" output_stream: "FLOAT_FEATURE_RGB:rgb_feature_vector" output_stream: "FLOAT_FEATURE_AUDIO:audio_feature_vector" } node { calculator: "ConcatenateFloatVectorCalculator" input_stream: "rgb_feature_vector" input_stream: "audio_feature_vector" output_stream: "feature_vector" } node { calculator: "VectorFloatToTensorCalculator" input_stream: "feature_vector" output_stream: "feature_tensor" } node { calculator: "StringToInt32Calculator" input_side_packet: "segment_size" output_side_packet: "segment_size_int" } node { calculator: "StringToInt32Calculator" input_side_packet: "overlap" output_side_packet: "overlap_int" } node { calculator: "LappedTensorBufferCalculator" input_stream: "feature_tensor" output_stream: "lapped_feature_tensor" input_side_packet: "BUFFER_SIZE:segment_size_int" input_side_packet: "OVERLAP:overlap_int" node_options: { [type.googleapis.com/mediapipe.LappedTensorBufferCalculatorOptions] { add_batch_dim_to_tensors: true } } } node { calculator: "SidePacketToStreamCalculator" input_side_packet: "segment_size_int" output_stream: "AT_ZERO:segment_size_int_stream" } node { calculator: "VectorIntToTensorCalculator" input_stream: "SINGLE_INT:segment_size_int_stream" output_stream: "TENSOR_OUT:segment_size_tensor" } node { calculator: "PacketClonerCalculator" input_stream: "segment_size_tensor" input_stream: "lapped_feature_tensor" output_stream: "synced_segment_size_tensor" } node { calculator: "TensorFlowSessionFromSavedModelCalculator" output_side_packet: "SESSION:session" node_options: { [type.googleapis.com/mediapipe.TensorFlowSessionFromSavedModelCalculatorOptions]: { saved_model_path: "/tmp/mediapipe/saved_model" } } } node: { calculator: "TensorFlowInferenceCalculator" input_side_packet: "SESSION:session" input_stream: "NUM_FRAMES:synced_segment_size_tensor" input_stream: "RGB_AND_AUDIO:lapped_feature_tensor" output_stream: "PREDICTIONS:prediction_tensor" node_options: { [type.googleapis.com/mediapipe.TensorFlowInferenceCalculatorOptions]: { batch_size: 32 } } } node { calculator: "TensorToVectorFloatCalculator" input_stream: "prediction_tensor" output_stream: "prediction_vector" } node { calculator: "TopKScoresCalculator" input_stream: "SCORES:prediction_vector" output_stream: "TOP_K_INDEXES:top_k_indexes" output_stream: "TOP_K_SCORES:top_k_scores" output_stream: "TOP_K_LABELS:top_k_labels" node_options: { [type.googleapis.com/mediapipe.TopKScoresCalculatorOptions]: { top_k: 3 label_map_path: "mediapipe/graphs/youtube8m/label_map.txt" } } } node { calculator: "OpenCvVideoDecoderCalculator" input_side_packet: "INPUT_FILE_PATH:input_video_path" output_stream: "VIDEO:input_video" output_stream: "VIDEO_PRESTREAM:input_video_header" } node { calculator: "LabelsToRenderDataCalculator" input_stream: "LABELS:top_k_labels" input_stream: "SCORES:top_k_scores" input_stream: "VIDEO_PRESTREAM:input_video_header" output_stream: "RENDER_DATA:render_data" node_options: { [type.googleapis.com/mediapipe.LabelsToRenderDataCalculatorOptions]: { color { r: 255 g: 0 b: 0 } color { r: 0 g: 255 b: 0 } color { r: 0 g: 0 b: 255 } thickness: 2.0 font_height_px: 20 max_num_labels: 3 location: TOP_LEFT } } } node { calculator: "PacketClonerCalculator" input_stream: "render_data" input_stream: "input_video" output_stream: "synchronized_render_data" } node { calculator: "AnnotationOverlayCalculator" input_stream: "IMAGE:input_video" input_stream: "synchronized_render_data" output_stream: "IMAGE:output_video" } 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" } } }