# MediaPipe graph to detect faces. (CPU input, and inference is executed on # CPU.) # # It is required that "face_detection_full_range_sparse.tflite" is available at # "mediapipe/modules/face_detection/face_detection_full_range_sparse.tflite" # path during execution. # # EXAMPLE: # node { # calculator: "FaceDetectionFullRangeCpu" # input_stream: "IMAGE:image" # output_stream: "DETECTIONS:face_detections" # } type: "FaceDetectionFullRangeCpu" # CPU image. (ImageFrame) input_stream: "IMAGE:image" # Detected faces. (std::vector) # NOTE: there will not be an output packet in the DETECTIONS stream for this # particular timestamp if none of faces detected. However, the MediaPipe # framework will internally inform the downstream calculators of the absence of # this packet so that they don't wait for it unnecessarily. output_stream: "DETECTIONS:detections" # Converts the input CPU image (ImageFrame) to the multi-backend image type # (Image). node: { calculator: "ToImageCalculator" input_stream: "IMAGE_CPU:image" output_stream: "IMAGE:multi_backend_image" } # Transforms the input image into a 192x192 tensor while keeping the aspect # ratio (what is expected by the corresponding face detection model), resulting # in potential letterboxing in the transformed image. node: { calculator: "ImageToTensorCalculator" input_stream: "IMAGE:multi_backend_image" output_stream: "TENSORS:input_tensors" output_stream: "MATRIX:transform_matrix" options: { [mediapipe.ImageToTensorCalculatorOptions.ext] { output_tensor_width: 192 output_tensor_height: 192 keep_aspect_ratio: true output_tensor_float_range { min: -1.0 max: 1.0 } border_mode: BORDER_ZERO } } } # Runs a TensorFlow Lite model on CPU that takes an image tensor and outputs a # vector of tensors representing, for instance, detection boxes/keypoints and # scores. node { calculator: "InferenceCalculator" input_stream: "TENSORS:input_tensors" output_stream: "TENSORS:detection_tensors" options: { [mediapipe.InferenceCalculatorOptions.ext] { model_path: "mediapipe/modules/face_detection/face_detection_full_range_sparse.tflite" delegate { xnnpack {} } } } } # Performs tensor post processing to generate face detections. node { calculator: "FaceDetectionFullRangeCommon" input_stream: "TENSORS:detection_tensors" input_stream: "MATRIX:transform_matrix" output_stream: "DETECTIONS:detections" }