# MediaPipe graph that build feature descriptors index for specific target. # 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: "LocalFilePatternContentsCalculator" input_side_packet: "FILE_DIRECTORY:file_directory" input_side_packet: "FILE_SUFFIX:file_suffix" output_stream: "CONTENTS:encoded_image" } node { calculator: "OpenCvEncodedImageToImageFrameCalculator" input_stream: "encoded_image" output_stream: "image_frame" } node: { calculator: "ImageTransformationCalculator" input_stream: "IMAGE:image_frame" output_stream: "IMAGE:scaled_image_frame" node_options: { [type.googleapis.com/mediapipe.ImageTransformationCalculatorOptions] { output_width: 320 output_height: 320 scale_mode: FILL_AND_CROP } } } node { calculator: "ImagePropertiesCalculator" input_stream: "IMAGE:scaled_image_frame" output_stream: "SIZE:input_video_size" } node { calculator: "FeatureDetectorCalculator" input_stream: "IMAGE:scaled_image_frame" output_stream: "FEATURES:features" output_stream: "LANDMARKS:landmarks" output_stream: "PATCHES:patches" node_options: { [type.googleapis.com/mediapipe.FeatureDetectorCalculatorOptions] { max_features: 400 } } } # input tensors: 200*32*32*1 float # output tensors: 200*40 float, only first keypoint.size()*40 is knift features, # rest is padded by zero. node { calculator: "TfLiteInferenceCalculator" input_stream: "TENSORS:patches" output_stream: "TENSORS:knift_feature_tensors" input_stream_handler { input_stream_handler: "DefaultInputStreamHandler" } node_options: { [type.googleapis.com/mediapipe.TfLiteInferenceCalculatorOptions] { model_path: "mediapipe/models/knift_float_400.tflite" } } } node { calculator: "TfLiteTensorsToFloatsCalculator" input_stream: "TENSORS:knift_feature_tensors" output_stream: "FLOATS:knift_feature_floats" } node { calculator: "BoxDetectorCalculator" input_side_packet: "OUTPUT_INDEX_FILENAME:output_index_filename" input_stream: "FEATURES:features" input_stream: "IMAGE_SIZE:input_video_size" input_stream: "DESCRIPTORS:knift_feature_floats" node_options: { [type.googleapis.com/mediapipe.BoxDetectorCalculatorOptions] { detector_options { index_type: OPENCV_BF detect_every_n_frame: 1 } } } }