mediapipe-nightly 0.10.21.post20241223__cp311-cp311-manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mediapipe/__init__.py +26 -0
- mediapipe/calculators/__init__.py +0 -0
- mediapipe/calculators/audio/__init__.py +0 -0
- mediapipe/calculators/audio/mfcc_mel_calculators_pb2.py +33 -0
- mediapipe/calculators/audio/rational_factor_resample_calculator_pb2.py +33 -0
- mediapipe/calculators/audio/spectrogram_calculator_pb2.py +37 -0
- mediapipe/calculators/audio/stabilized_log_calculator_pb2.py +31 -0
- mediapipe/calculators/audio/time_series_framer_calculator_pb2.py +33 -0
- mediapipe/calculators/core/__init__.py +0 -0
- mediapipe/calculators/core/bypass_calculator_pb2.py +31 -0
- mediapipe/calculators/core/clip_vector_size_calculator_pb2.py +31 -0
- mediapipe/calculators/core/concatenate_vector_calculator_pb2.py +31 -0
- mediapipe/calculators/core/constant_side_packet_calculator_pb2.py +39 -0
- mediapipe/calculators/core/dequantize_byte_array_calculator_pb2.py +31 -0
- mediapipe/calculators/core/flow_limiter_calculator_pb2.py +32 -0
- mediapipe/calculators/core/gate_calculator_pb2.py +33 -0
- mediapipe/calculators/core/get_vector_item_calculator_pb2.py +31 -0
- mediapipe/calculators/core/graph_profile_calculator_pb2.py +31 -0
- mediapipe/calculators/core/packet_cloner_calculator_pb2.py +31 -0
- mediapipe/calculators/core/packet_resampler_calculator_pb2.py +33 -0
- mediapipe/calculators/core/packet_thinner_calculator_pb2.py +33 -0
- mediapipe/calculators/core/quantize_float_vector_calculator_pb2.py +31 -0
- mediapipe/calculators/core/sequence_shift_calculator_pb2.py +31 -0
- mediapipe/calculators/core/split_vector_calculator_pb2.py +33 -0
- mediapipe/calculators/image/__init__.py +0 -0
- mediapipe/calculators/image/bilateral_filter_calculator_pb2.py +31 -0
- mediapipe/calculators/image/feature_detector_calculator_pb2.py +31 -0
- mediapipe/calculators/image/image_clone_calculator_pb2.py +31 -0
- mediapipe/calculators/image/image_cropping_calculator_pb2.py +33 -0
- mediapipe/calculators/image/image_transformation_calculator_pb2.py +38 -0
- mediapipe/calculators/image/mask_overlay_calculator_pb2.py +33 -0
- mediapipe/calculators/image/opencv_encoded_image_to_image_frame_calculator_pb2.py +31 -0
- mediapipe/calculators/image/opencv_image_encoder_calculator_pb2.py +35 -0
- mediapipe/calculators/image/recolor_calculator_pb2.py +34 -0
- mediapipe/calculators/image/rotation_mode_pb2.py +29 -0
- mediapipe/calculators/image/scale_image_calculator_pb2.py +34 -0
- mediapipe/calculators/image/segmentation_smoothing_calculator_pb2.py +31 -0
- mediapipe/calculators/image/set_alpha_calculator_pb2.py +31 -0
- mediapipe/calculators/image/warp_affine_calculator_pb2.py +36 -0
- mediapipe/calculators/internal/__init__.py +0 -0
- mediapipe/calculators/internal/callback_packet_calculator_pb2.py +33 -0
- mediapipe/calculators/tensor/__init__.py +0 -0
- mediapipe/calculators/tensor/audio_to_tensor_calculator_pb2.py +35 -0
- mediapipe/calculators/tensor/bert_preprocessor_calculator_pb2.py +31 -0
- mediapipe/calculators/tensor/feedback_tensors_calculator_pb2.py +37 -0
- mediapipe/calculators/tensor/image_to_tensor_calculator_pb2.py +40 -0
- mediapipe/calculators/tensor/inference_calculator_pb2.py +63 -0
- mediapipe/calculators/tensor/landmarks_to_tensor_calculator_pb2.py +33 -0
- mediapipe/calculators/tensor/regex_preprocessor_calculator_pb2.py +31 -0
- mediapipe/calculators/tensor/tensor_converter_calculator_pb2.py +34 -0
- mediapipe/calculators/tensor/tensor_to_joints_calculator_pb2.py +31 -0
- mediapipe/calculators/tensor/tensors_readback_calculator_pb2.py +35 -0
- mediapipe/calculators/tensor/tensors_to_audio_calculator_pb2.py +33 -0
- mediapipe/calculators/tensor/tensors_to_classification_calculator_pb2.py +44 -0
- mediapipe/calculators/tensor/tensors_to_detections_calculator_pb2.py +39 -0
- mediapipe/calculators/tensor/tensors_to_floats_calculator_pb2.py +33 -0
- mediapipe/calculators/tensor/tensors_to_landmarks_calculator_pb2.py +33 -0
- mediapipe/calculators/tensor/tensors_to_segmentation_calculator_pb2.py +34 -0
- mediapipe/calculators/tensor/vector_to_tensor_calculator_pb2.py +27 -0
- mediapipe/calculators/tflite/__init__.py +0 -0
- mediapipe/calculators/tflite/ssd_anchors_calculator_pb2.py +32 -0
- mediapipe/calculators/tflite/tflite_converter_calculator_pb2.py +33 -0
- mediapipe/calculators/tflite/tflite_custom_op_resolver_calculator_pb2.py +31 -0
- mediapipe/calculators/tflite/tflite_inference_calculator_pb2.py +49 -0
- mediapipe/calculators/tflite/tflite_tensors_to_classification_calculator_pb2.py +31 -0
- mediapipe/calculators/tflite/tflite_tensors_to_detections_calculator_pb2.py +31 -0
- mediapipe/calculators/tflite/tflite_tensors_to_landmarks_calculator_pb2.py +33 -0
- mediapipe/calculators/tflite/tflite_tensors_to_segmentation_calculator_pb2.py +31 -0
- mediapipe/calculators/util/__init__.py +0 -0
- mediapipe/calculators/util/align_hand_to_pose_in_world_calculator_pb2.py +31 -0
- mediapipe/calculators/util/annotation_overlay_calculator_pb2.py +32 -0
- mediapipe/calculators/util/association_calculator_pb2.py +31 -0
- mediapipe/calculators/util/collection_has_min_size_calculator_pb2.py +31 -0
- mediapipe/calculators/util/combine_joints_calculator_pb2.py +36 -0
- mediapipe/calculators/util/detection_label_id_to_text_calculator_pb2.py +36 -0
- mediapipe/calculators/util/detections_to_rects_calculator_pb2.py +33 -0
- mediapipe/calculators/util/detections_to_render_data_calculator_pb2.py +33 -0
- mediapipe/calculators/util/face_to_rect_calculator_pb2.py +26 -0
- mediapipe/calculators/util/filter_detections_calculator_pb2.py +31 -0
- mediapipe/calculators/util/flat_color_image_calculator_pb2.py +32 -0
- mediapipe/calculators/util/labels_to_render_data_calculator_pb2.py +34 -0
- mediapipe/calculators/util/landmark_projection_calculator_pb2.py +31 -0
- mediapipe/calculators/util/landmarks_refinement_calculator_pb2.py +41 -0
- mediapipe/calculators/util/landmarks_smoothing_calculator_pb2.py +33 -0
- mediapipe/calculators/util/landmarks_to_detection_calculator_pb2.py +31 -0
- mediapipe/calculators/util/landmarks_to_floats_calculator_pb2.py +31 -0
- mediapipe/calculators/util/landmarks_to_render_data_calculator_pb2.py +32 -0
- mediapipe/calculators/util/landmarks_transformation_calculator_pb2.py +37 -0
- mediapipe/calculators/util/latency_pb2.py +26 -0
- mediapipe/calculators/util/local_file_contents_calculator_pb2.py +31 -0
- mediapipe/calculators/util/logic_calculator_pb2.py +34 -0
- mediapipe/calculators/util/non_max_suppression_calculator_pb2.py +35 -0
- mediapipe/calculators/util/packet_frequency_calculator_pb2.py +31 -0
- mediapipe/calculators/util/packet_frequency_pb2.py +26 -0
- mediapipe/calculators/util/packet_latency_calculator_pb2.py +31 -0
- mediapipe/calculators/util/rect_to_render_data_calculator_pb2.py +32 -0
- mediapipe/calculators/util/rect_to_render_scale_calculator_pb2.py +31 -0
- mediapipe/calculators/util/rect_transformation_calculator_pb2.py +31 -0
- mediapipe/calculators/util/refine_landmarks_from_heatmap_calculator_pb2.py +31 -0
- mediapipe/calculators/util/resource_provider_calculator_pb2.py +28 -0
- mediapipe/calculators/util/set_joints_visibility_calculator_pb2.py +41 -0
- mediapipe/calculators/util/thresholding_calculator_pb2.py +31 -0
- mediapipe/calculators/util/timed_box_list_id_to_label_calculator_pb2.py +31 -0
- mediapipe/calculators/util/timed_box_list_to_render_data_calculator_pb2.py +32 -0
- mediapipe/calculators/util/top_k_scores_calculator_pb2.py +31 -0
- mediapipe/calculators/util/visibility_copy_calculator_pb2.py +27 -0
- mediapipe/calculators/util/visibility_smoothing_calculator_pb2.py +31 -0
- mediapipe/calculators/video/__init__.py +0 -0
- mediapipe/calculators/video/box_detector_calculator_pb2.py +32 -0
- mediapipe/calculators/video/box_tracker_calculator_pb2.py +32 -0
- mediapipe/calculators/video/flow_packager_calculator_pb2.py +32 -0
- mediapipe/calculators/video/flow_to_image_calculator_pb2.py +31 -0
- mediapipe/calculators/video/motion_analysis_calculator_pb2.py +42 -0
- mediapipe/calculators/video/opencv_video_encoder_calculator_pb2.py +31 -0
- mediapipe/calculators/video/tool/__init__.py +0 -0
- mediapipe/calculators/video/tool/flow_quantizer_model_pb2.py +26 -0
- mediapipe/calculators/video/tracked_detection_manager_calculator_pb2.py +32 -0
- mediapipe/calculators/video/video_pre_stream_calculator_pb2.py +35 -0
- mediapipe/examples/__init__.py +14 -0
- mediapipe/examples/desktop/__init__.py +14 -0
- mediapipe/framework/__init__.py +0 -0
- mediapipe/framework/calculator_options_pb2.py +29 -0
- mediapipe/framework/calculator_pb2.py +59 -0
- mediapipe/framework/calculator_profile_pb2.py +48 -0
- mediapipe/framework/deps/__init__.py +0 -0
- mediapipe/framework/deps/proto_descriptor_pb2.py +29 -0
- mediapipe/framework/formats/__init__.py +0 -0
- mediapipe/framework/formats/affine_transform_data_pb2.py +28 -0
- mediapipe/framework/formats/annotation/__init__.py +0 -0
- mediapipe/framework/formats/annotation/locus_pb2.py +32 -0
- mediapipe/framework/formats/annotation/rasterization_pb2.py +29 -0
- mediapipe/framework/formats/body_rig_pb2.py +28 -0
- mediapipe/framework/formats/classification_pb2.py +31 -0
- mediapipe/framework/formats/detection_pb2.py +36 -0
- mediapipe/framework/formats/image_file_properties_pb2.py +26 -0
- mediapipe/framework/formats/image_format_pb2.py +29 -0
- mediapipe/framework/formats/landmark_pb2.py +37 -0
- mediapipe/framework/formats/location_data_pb2.py +38 -0
- mediapipe/framework/formats/matrix_data_pb2.py +31 -0
- mediapipe/framework/formats/motion/__init__.py +0 -0
- mediapipe/framework/formats/motion/optical_flow_field_data_pb2.py +30 -0
- mediapipe/framework/formats/object_detection/__init__.py +0 -0
- mediapipe/framework/formats/object_detection/anchor_pb2.py +26 -0
- mediapipe/framework/formats/rect_pb2.py +29 -0
- mediapipe/framework/formats/time_series_header_pb2.py +28 -0
- mediapipe/framework/graph_runtime_info_pb2.py +31 -0
- mediapipe/framework/mediapipe_options_pb2.py +27 -0
- mediapipe/framework/packet_factory_pb2.py +31 -0
- mediapipe/framework/packet_generator_pb2.py +33 -0
- mediapipe/framework/status_handler_pb2.py +28 -0
- mediapipe/framework/stream_handler/__init__.py +0 -0
- mediapipe/framework/stream_handler/default_input_stream_handler_pb2.py +27 -0
- mediapipe/framework/stream_handler/fixed_size_input_stream_handler_pb2.py +27 -0
- mediapipe/framework/stream_handler/sync_set_input_stream_handler_pb2.py +29 -0
- mediapipe/framework/stream_handler/timestamp_align_input_stream_handler_pb2.py +27 -0
- mediapipe/framework/stream_handler_pb2.py +30 -0
- mediapipe/framework/test_calculators_pb2.py +31 -0
- mediapipe/framework/thread_pool_executor_pb2.py +29 -0
- mediapipe/framework/tool/__init__.py +0 -0
- mediapipe/framework/tool/calculator_graph_template_pb2.py +44 -0
- mediapipe/framework/tool/field_data_pb2.py +28 -0
- mediapipe/framework/tool/node_chain_subgraph_pb2.py +31 -0
- mediapipe/framework/tool/packet_generator_wrapper_calculator_pb2.py +28 -0
- mediapipe/framework/tool/source_pb2.py +33 -0
- mediapipe/framework/tool/switch_container_pb2.py +32 -0
- mediapipe/gpu/__init__.py +0 -0
- mediapipe/gpu/copy_calculator_pb2.py +33 -0
- mediapipe/gpu/gl_animation_overlay_calculator_pb2.py +31 -0
- mediapipe/gpu/gl_context_options_pb2.py +31 -0
- mediapipe/gpu/gl_scaler_calculator_pb2.py +32 -0
- mediapipe/gpu/gl_surface_sink_calculator_pb2.py +32 -0
- mediapipe/gpu/gpu_origin_pb2.py +29 -0
- mediapipe/gpu/scale_mode_pb2.py +28 -0
- mediapipe/model_maker/__init__.py +27 -0
- mediapipe/model_maker/setup.py +107 -0
- mediapipe/modules/__init__.py +0 -0
- mediapipe/modules/face_detection/__init__.py +0 -0
- mediapipe/modules/face_detection/face_detection_full_range_cpu.binarypb +0 -0
- mediapipe/modules/face_detection/face_detection_full_range_sparse.tflite +0 -0
- mediapipe/modules/face_detection/face_detection_pb2.py +30 -0
- mediapipe/modules/face_detection/face_detection_short_range.tflite +0 -0
- mediapipe/modules/face_detection/face_detection_short_range_cpu.binarypb +0 -0
- mediapipe/modules/face_geometry/__init__.py +0 -0
- mediapipe/modules/face_geometry/data/__init__.py +0 -0
- mediapipe/modules/face_geometry/effect_renderer_calculator_pb2.py +27 -0
- mediapipe/modules/face_geometry/env_generator_calculator_pb2.py +28 -0
- mediapipe/modules/face_geometry/geometry_pipeline_calculator_pb2.py +27 -0
- mediapipe/modules/face_geometry/libs/__init__.py +0 -0
- mediapipe/modules/face_geometry/protos/__init__.py +0 -0
- mediapipe/modules/face_geometry/protos/environment_pb2.py +31 -0
- mediapipe/modules/face_geometry/protos/face_geometry_pb2.py +29 -0
- mediapipe/modules/face_geometry/protos/geometry_pipeline_metadata_pb2.py +32 -0
- mediapipe/modules/face_geometry/protos/mesh_3d_pb2.py +31 -0
- mediapipe/modules/face_landmark/__init__.py +0 -0
- mediapipe/modules/face_landmark/face_landmark.tflite +0 -0
- mediapipe/modules/face_landmark/face_landmark_front_cpu.binarypb +0 -0
- mediapipe/modules/face_landmark/face_landmark_with_attention.tflite +0 -0
- mediapipe/modules/hand_landmark/__init__.py +0 -0
- mediapipe/modules/hand_landmark/calculators/__init__.py +0 -0
- mediapipe/modules/hand_landmark/hand_landmark_full.tflite +0 -0
- mediapipe/modules/hand_landmark/hand_landmark_lite.tflite +0 -0
- mediapipe/modules/hand_landmark/hand_landmark_tracking_cpu.binarypb +0 -0
- mediapipe/modules/hand_landmark/handedness.txt +2 -0
- mediapipe/modules/holistic_landmark/__init__.py +0 -0
- mediapipe/modules/holistic_landmark/calculators/__init__.py +0 -0
- mediapipe/modules/holistic_landmark/calculators/roi_tracking_calculator_pb2.py +37 -0
- mediapipe/modules/holistic_landmark/hand_recrop.tflite +0 -0
- mediapipe/modules/holistic_landmark/holistic_landmark_cpu.binarypb +0 -0
- mediapipe/modules/iris_landmark/__init__.py +0 -0
- mediapipe/modules/iris_landmark/iris_landmark.tflite +0 -0
- mediapipe/modules/objectron/__init__.py +0 -0
- mediapipe/modules/objectron/calculators/__init__.py +0 -0
- mediapipe/modules/objectron/calculators/a_r_capture_metadata_pb2.py +102 -0
- mediapipe/modules/objectron/calculators/annotation_data_pb2.py +38 -0
- mediapipe/modules/objectron/calculators/belief_decoder_config_pb2.py +28 -0
- mediapipe/modules/objectron/calculators/camera_parameters_pb2.py +30 -0
- mediapipe/modules/objectron/calculators/filter_detection_calculator_pb2.py +35 -0
- mediapipe/modules/objectron/calculators/frame_annotation_to_rect_calculator_pb2.py +31 -0
- mediapipe/modules/objectron/calculators/frame_annotation_tracker_calculator_pb2.py +31 -0
- mediapipe/modules/objectron/calculators/lift_2d_frame_annotation_to_3d_calculator_pb2.py +32 -0
- mediapipe/modules/objectron/calculators/object_pb2.py +38 -0
- mediapipe/modules/objectron/calculators/tensors_to_objects_calculator_pb2.py +32 -0
- mediapipe/modules/objectron/calculators/tflite_tensors_to_objects_calculator_pb2.py +32 -0
- mediapipe/modules/objectron/object_detection_oidv4_labelmap.txt +24 -0
- mediapipe/modules/objectron/objectron_cpu.binarypb +0 -0
- mediapipe/modules/palm_detection/__init__.py +0 -0
- mediapipe/modules/palm_detection/palm_detection_full.tflite +0 -0
- mediapipe/modules/palm_detection/palm_detection_lite.tflite +0 -0
- mediapipe/modules/pose_detection/__init__.py +0 -0
- mediapipe/modules/pose_detection/pose_detection.tflite +0 -0
- mediapipe/modules/pose_landmark/__init__.py +0 -0
- mediapipe/modules/pose_landmark/pose_landmark_cpu.binarypb +0 -0
- mediapipe/modules/pose_landmark/pose_landmark_full.tflite +0 -0
- mediapipe/modules/selfie_segmentation/__init__.py +0 -0
- mediapipe/modules/selfie_segmentation/selfie_segmentation.tflite +0 -0
- mediapipe/modules/selfie_segmentation/selfie_segmentation_cpu.binarypb +0 -0
- mediapipe/modules/selfie_segmentation/selfie_segmentation_landscape.tflite +0 -0
- mediapipe/python/__init__.py +29 -0
- mediapipe/python/_framework_bindings.cpython-311-x86_64-linux-gnu.so +0 -0
- mediapipe/python/calculator_graph_test.py +251 -0
- mediapipe/python/image_frame_test.py +194 -0
- mediapipe/python/image_test.py +218 -0
- mediapipe/python/packet_creator.py +275 -0
- mediapipe/python/packet_getter.py +120 -0
- mediapipe/python/packet_test.py +533 -0
- mediapipe/python/solution_base.py +604 -0
- mediapipe/python/solution_base_test.py +396 -0
- mediapipe/python/solutions/__init__.py +27 -0
- mediapipe/python/solutions/download_utils.py +37 -0
- mediapipe/python/solutions/drawing_styles.py +249 -0
- mediapipe/python/solutions/drawing_utils.py +320 -0
- mediapipe/python/solutions/drawing_utils_test.py +258 -0
- mediapipe/python/solutions/face_detection.py +105 -0
- mediapipe/python/solutions/face_detection_test.py +92 -0
- mediapipe/python/solutions/face_mesh.py +125 -0
- mediapipe/python/solutions/face_mesh_connections.py +500 -0
- mediapipe/python/solutions/face_mesh_test.py +170 -0
- mediapipe/python/solutions/hands.py +153 -0
- mediapipe/python/solutions/hands_connections.py +32 -0
- mediapipe/python/solutions/hands_test.py +219 -0
- mediapipe/python/solutions/holistic.py +167 -0
- mediapipe/python/solutions/holistic_test.py +142 -0
- mediapipe/python/solutions/objectron.py +288 -0
- mediapipe/python/solutions/objectron_test.py +81 -0
- mediapipe/python/solutions/pose.py +192 -0
- mediapipe/python/solutions/pose_connections.py +22 -0
- mediapipe/python/solutions/pose_test.py +262 -0
- mediapipe/python/solutions/selfie_segmentation.py +76 -0
- mediapipe/python/solutions/selfie_segmentation_test.py +68 -0
- mediapipe/python/timestamp_test.py +78 -0
- mediapipe/tasks/__init__.py +14 -0
- mediapipe/tasks/cc/__init__.py +0 -0
- mediapipe/tasks/cc/audio/__init__.py +0 -0
- mediapipe/tasks/cc/audio/audio_classifier/__init__.py +0 -0
- mediapipe/tasks/cc/audio/audio_classifier/proto/__init__.py +0 -0
- mediapipe/tasks/cc/audio/audio_classifier/proto/audio_classifier_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/audio/audio_embedder/__init__.py +0 -0
- mediapipe/tasks/cc/audio/audio_embedder/proto/__init__.py +0 -0
- mediapipe/tasks/cc/audio/audio_embedder/proto/audio_embedder_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/audio/core/__init__.py +0 -0
- mediapipe/tasks/cc/audio/utils/__init__.py +0 -0
- mediapipe/tasks/cc/components/__init__.py +0 -0
- mediapipe/tasks/cc/components/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/components/calculators/classification_aggregation_calculator_pb2.py +31 -0
- mediapipe/tasks/cc/components/calculators/score_calibration_calculator_pb2.py +35 -0
- mediapipe/tasks/cc/components/calculators/tensors_to_embeddings_calculator_pb2.py +32 -0
- mediapipe/tasks/cc/components/containers/__init__.py +0 -0
- mediapipe/tasks/cc/components/containers/proto/__init__.py +0 -0
- mediapipe/tasks/cc/components/containers/proto/classifications_pb2.py +30 -0
- mediapipe/tasks/cc/components/containers/proto/embeddings_pb2.py +35 -0
- mediapipe/tasks/cc/components/containers/proto/landmarks_detection_result_pb2.py +32 -0
- mediapipe/tasks/cc/components/processors/__init__.py +0 -0
- mediapipe/tasks/cc/components/processors/proto/__init__.py +0 -0
- mediapipe/tasks/cc/components/processors/proto/classification_postprocessing_graph_options_pb2.py +38 -0
- mediapipe/tasks/cc/components/processors/proto/classifier_options_pb2.py +27 -0
- mediapipe/tasks/cc/components/processors/proto/detection_postprocessing_graph_options_pb2.py +36 -0
- mediapipe/tasks/cc/components/processors/proto/detector_options_pb2.py +27 -0
- mediapipe/tasks/cc/components/processors/proto/embedder_options_pb2.py +27 -0
- mediapipe/tasks/cc/components/processors/proto/embedding_postprocessing_graph_options_pb2.py +32 -0
- mediapipe/tasks/cc/components/processors/proto/image_preprocessing_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/components/processors/proto/text_model_type_pb2.py +28 -0
- mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options_pb2.py +32 -0
- mediapipe/tasks/cc/components/utils/__init__.py +0 -0
- mediapipe/tasks/cc/core/__init__.py +0 -0
- mediapipe/tasks/cc/core/proto/__init__.py +0 -0
- mediapipe/tasks/cc/core/proto/acceleration_pb2.py +28 -0
- mediapipe/tasks/cc/core/proto/base_options_pb2.py +30 -0
- mediapipe/tasks/cc/core/proto/external_file_pb2.py +31 -0
- mediapipe/tasks/cc/core/proto/inference_subgraph_pb2.py +32 -0
- mediapipe/tasks/cc/core/proto/model_resources_calculator_pb2.py +32 -0
- mediapipe/tasks/cc/genai/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/c/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/calculators/detokenizer_calculator_pb2.py +27 -0
- mediapipe/tasks/cc/genai/inference/calculators/llm_gpu_calculator_pb2.py +32 -0
- mediapipe/tasks/cc/genai/inference/calculators/model_data_calculator_pb2.py +27 -0
- mediapipe/tasks/cc/genai/inference/calculators/tokenizer_calculator_pb2.py +29 -0
- mediapipe/tasks/cc/genai/inference/common/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/proto/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/proto/llm_file_metadata_pb2.py +32 -0
- mediapipe/tasks/cc/genai/inference/proto/llm_params_pb2.py +33 -0
- mediapipe/tasks/cc/genai/inference/proto/prompt_template_pb2.py +27 -0
- mediapipe/tasks/cc/genai/inference/proto/sampler_params_pb2.py +29 -0
- mediapipe/tasks/cc/genai/inference/proto/transformer_params_pb2.py +45 -0
- mediapipe/tasks/cc/genai/inference/utils/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/utils/llm_utils/__init__.py +0 -0
- mediapipe/tasks/cc/genai/inference/utils/xnn_utils/__init__.py +0 -0
- mediapipe/tasks/cc/metadata/__init__.py +0 -0
- mediapipe/tasks/cc/metadata/python/__init__.py +0 -0
- mediapipe/tasks/cc/metadata/python/_pywrap_metadata_version.cpython-311-x86_64-linux-gnu.so +0 -0
- mediapipe/tasks/cc/metadata/tests/__init__.py +0 -0
- mediapipe/tasks/cc/metadata/utils/__init__.py +0 -0
- mediapipe/tasks/cc/text/__init__.py +0 -0
- mediapipe/tasks/cc/text/custom_ops/__init__.py +0 -0
- mediapipe/tasks/cc/text/custom_ops/ragged/__init__.py +0 -0
- mediapipe/tasks/cc/text/custom_ops/sentencepiece/__init__.py +0 -0
- mediapipe/tasks/cc/text/custom_ops/sentencepiece/testdata/__init__.py +0 -0
- mediapipe/tasks/cc/text/language_detector/__init__.py +0 -0
- mediapipe/tasks/cc/text/language_detector/custom_ops/__init__.py +0 -0
- mediapipe/tasks/cc/text/language_detector/custom_ops/utils/__init__.py +0 -0
- mediapipe/tasks/cc/text/language_detector/custom_ops/utils/hash/__init__.py +0 -0
- mediapipe/tasks/cc/text/language_detector/custom_ops/utils/utf/__init__.py +0 -0
- mediapipe/tasks/cc/text/text_classifier/__init__.py +0 -0
- mediapipe/tasks/cc/text/text_classifier/proto/__init__.py +0 -0
- mediapipe/tasks/cc/text/text_classifier/proto/text_classifier_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/text/text_embedder/__init__.py +0 -0
- mediapipe/tasks/cc/text/text_embedder/proto/__init__.py +0 -0
- mediapipe/tasks/cc/text/text_embedder/proto/text_embedder_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/text/tokenizers/__init__.py +0 -0
- mediapipe/tasks/cc/text/utils/__init__.py +0 -0
- mediapipe/tasks/cc/vision/__init__.py +0 -0
- mediapipe/tasks/cc/vision/core/__init__.py +0 -0
- mediapipe/tasks/cc/vision/custom_ops/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_detector/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_detector/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_detector/proto/face_detector_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/face_geometry/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_geometry/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_geometry/calculators/env_generator_calculator_pb2.py +28 -0
- mediapipe/tasks/cc/vision/face_geometry/calculators/geometry_pipeline_calculator_pb2.py +29 -0
- mediapipe/tasks/cc/vision/face_geometry/data/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_geometry/libs/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_geometry/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_geometry/proto/environment_pb2.py +31 -0
- mediapipe/tasks/cc/vision/face_geometry/proto/face_geometry_graph_options_pb2.py +29 -0
- mediapipe/tasks/cc/vision/face_geometry/proto/face_geometry_pb2.py +29 -0
- mediapipe/tasks/cc/vision/face_geometry/proto/geometry_pipeline_metadata_pb2.py +32 -0
- mediapipe/tasks/cc/vision/face_geometry/proto/mesh_3d_pb2.py +31 -0
- mediapipe/tasks/cc/vision/face_landmarker/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_landmarker/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_landmarker/proto/face_blendshapes_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarker_graph_options_pb2.py +37 -0
- mediapipe/tasks/cc/vision/face_landmarker/proto/face_landmarks_detector_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/vision/face_landmarker/proto/tensors_to_face_landmarks_graph_options_pb2.py +32 -0
- mediapipe/tasks/cc/vision/face_stylizer/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_stylizer/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_stylizer/calculators/tensors_to_image_calculator_pb2.py +36 -0
- mediapipe/tasks/cc/vision/face_stylizer/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/face_stylizer/proto/face_stylizer_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/__init__.py +0 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/calculators/combined_prediction_calculator_pb2.py +33 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/calculators/landmarks_to_matrix_calculator_pb2.py +31 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_classifier_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_embedder_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options_pb2.py +36 -0
- mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options_pb2.py +36 -0
- mediapipe/tasks/cc/vision/hand_detector/__init__.py +0 -0
- mediapipe/tasks/cc/vision/hand_detector/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/hand_detector/proto/hand_detector_result_pb2.py +30 -0
- mediapipe/tasks/cc/vision/hand_landmarker/__init__.py +0 -0
- mediapipe/tasks/cc/vision/hand_landmarker/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/vision/hand_landmarker/calculators/hand_association_calculator_pb2.py +31 -0
- mediapipe/tasks/cc/vision/hand_landmarker/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarker_graph_options_pb2.py +36 -0
- mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarks_detector_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_roi_refinement_graph_options_pb2.py +28 -0
- mediapipe/tasks/cc/vision/holistic_landmarker/__init__.py +0 -0
- mediapipe/tasks/cc/vision/holistic_landmarker/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/holistic_landmarker/proto/holistic_landmarker_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/holistic_landmarker/proto/holistic_result_pb2.py +29 -0
- mediapipe/tasks/cc/vision/image_classifier/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_classifier/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_classifier/proto/image_classifier_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/vision/image_embedder/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_embedder/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_embedder/proto/image_embedder_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/vision/image_generator/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_generator/diffuser/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_generator/diffuser/stable_diffusion_iterate_calculator_pb2.py +40 -0
- mediapipe/tasks/cc/vision/image_generator/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_generator/proto/conditioned_image_graph_options_pb2.py +40 -0
- mediapipe/tasks/cc/vision/image_generator/proto/control_plugin_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/image_generator/proto/image_generator_graph_options_pb2.py +30 -0
- mediapipe/tasks/cc/vision/image_segmenter/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_segmenter/calculators/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_segmenter/calculators/tensors_to_segmentation_calculator_pb2.py +34 -0
- mediapipe/tasks/cc/vision/image_segmenter/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/image_segmenter/proto/image_segmenter_graph_options_pb2.py +35 -0
- mediapipe/tasks/cc/vision/image_segmenter/proto/segmenter_options_pb2.py +33 -0
- mediapipe/tasks/cc/vision/interactive_segmenter/__init__.py +0 -0
- mediapipe/tasks/cc/vision/object_detector/__init__.py +0 -0
- mediapipe/tasks/cc/vision/object_detector/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/object_detector/proto/object_detector_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/pose_detector/__init__.py +0 -0
- mediapipe/tasks/cc/vision/pose_detector/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/pose_detector/proto/pose_detector_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/pose_landmarker/__init__.py +0 -0
- mediapipe/tasks/cc/vision/pose_landmarker/proto/__init__.py +0 -0
- mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarker_graph_options_pb2.py +36 -0
- mediapipe/tasks/cc/vision/pose_landmarker/proto/pose_landmarks_detector_graph_options_pb2.py +34 -0
- mediapipe/tasks/cc/vision/utils/__init__.py +0 -0
- mediapipe/tasks/cc/vision/utils/ghum/__init__.py +0 -0
- mediapipe/tasks/metadata/image_segmenter_metadata_schema.fbs +59 -0
- mediapipe/tasks/metadata/image_segmenter_metadata_schema_py_generated.py +108 -0
- mediapipe/tasks/metadata/metadata_schema.fbs +732 -0
- mediapipe/tasks/metadata/metadata_schema_py_generated.py +3251 -0
- mediapipe/tasks/metadata/object_detector_metadata_schema.fbs +98 -0
- mediapipe/tasks/metadata/object_detector_metadata_schema_py_generated.py +674 -0
- mediapipe/tasks/metadata/schema_py_generated.py +18438 -0
- mediapipe/tasks/python/__init__.py +27 -0
- mediapipe/tasks/python/audio/__init__.py +33 -0
- mediapipe/tasks/python/audio/audio_classifier.py +324 -0
- mediapipe/tasks/python/audio/audio_embedder.py +285 -0
- mediapipe/tasks/python/audio/core/__init__.py +16 -0
- mediapipe/tasks/python/audio/core/audio_record.py +125 -0
- mediapipe/tasks/python/audio/core/audio_task_running_mode.py +29 -0
- mediapipe/tasks/python/audio/core/base_audio_task_api.py +181 -0
- mediapipe/tasks/python/benchmark/__init__.py +13 -0
- mediapipe/tasks/python/benchmark/benchmark_utils.py +70 -0
- mediapipe/tasks/python/benchmark/vision/__init__.py +13 -0
- mediapipe/tasks/python/benchmark/vision/benchmark.py +99 -0
- mediapipe/tasks/python/benchmark/vision/core/__init__.py +14 -0
- mediapipe/tasks/python/benchmark/vision/core/base_vision_benchmark_api.py +40 -0
- mediapipe/tasks/python/components/__init__.py +13 -0
- mediapipe/tasks/python/components/containers/__init__.py +53 -0
- mediapipe/tasks/python/components/containers/audio_data.py +137 -0
- mediapipe/tasks/python/components/containers/bounding_box.py +73 -0
- mediapipe/tasks/python/components/containers/category.py +78 -0
- mediapipe/tasks/python/components/containers/classification_result.py +111 -0
- mediapipe/tasks/python/components/containers/detections.py +181 -0
- mediapipe/tasks/python/components/containers/embedding_result.py +89 -0
- mediapipe/tasks/python/components/containers/keypoint.py +77 -0
- mediapipe/tasks/python/components/containers/landmark.py +122 -0
- mediapipe/tasks/python/components/containers/landmark_detection_result.py +106 -0
- mediapipe/tasks/python/components/containers/rect.py +109 -0
- mediapipe/tasks/python/components/processors/__init__.py +23 -0
- mediapipe/tasks/python/components/processors/classifier_options.py +86 -0
- mediapipe/tasks/python/components/utils/__init__.py +13 -0
- mediapipe/tasks/python/components/utils/cosine_similarity.py +68 -0
- mediapipe/tasks/python/core/__init__.py +13 -0
- mediapipe/tasks/python/core/base_options.py +121 -0
- mediapipe/tasks/python/core/optional_dependencies.py +25 -0
- mediapipe/tasks/python/core/task_info.py +139 -0
- mediapipe/tasks/python/genai/__init__.py +14 -0
- mediapipe/tasks/python/genai/bundler/__init__.py +23 -0
- mediapipe/tasks/python/genai/bundler/llm_bundler.py +130 -0
- mediapipe/tasks/python/genai/bundler/llm_bundler_test.py +168 -0
- mediapipe/tasks/python/genai/converter/__init__.py +24 -0
- mediapipe/tasks/python/genai/converter/converter_base.py +179 -0
- mediapipe/tasks/python/genai/converter/converter_factory.py +79 -0
- mediapipe/tasks/python/genai/converter/llm_converter.py +374 -0
- mediapipe/tasks/python/genai/converter/llm_converter_test.py +63 -0
- mediapipe/tasks/python/genai/converter/pytorch_converter.py +318 -0
- mediapipe/tasks/python/genai/converter/pytorch_converter_test.py +86 -0
- mediapipe/tasks/python/genai/converter/quantization_util.py +516 -0
- mediapipe/tasks/python/genai/converter/quantization_util_test.py +259 -0
- mediapipe/tasks/python/genai/converter/safetensors_converter.py +580 -0
- mediapipe/tasks/python/genai/converter/safetensors_converter_test.py +83 -0
- mediapipe/tasks/python/genai/converter/weight_bins_writer.py +120 -0
- mediapipe/tasks/python/genai/converter/weight_bins_writer_test.py +95 -0
- mediapipe/tasks/python/metadata/__init__.py +13 -0
- mediapipe/tasks/python/metadata/flatbuffers_lib/_pywrap_flatbuffers.cpython-311-x86_64-linux-gnu.so +0 -0
- mediapipe/tasks/python/metadata/metadata.py +928 -0
- mediapipe/tasks/python/metadata/metadata_displayer_cli.py +34 -0
- mediapipe/tasks/python/metadata/metadata_writers/__init__.py +13 -0
- mediapipe/tasks/python/metadata/metadata_writers/face_stylizer.py +138 -0
- mediapipe/tasks/python/metadata/metadata_writers/image_classifier.py +71 -0
- mediapipe/tasks/python/metadata/metadata_writers/image_segmenter.py +170 -0
- mediapipe/tasks/python/metadata/metadata_writers/metadata_info.py +1166 -0
- mediapipe/tasks/python/metadata/metadata_writers/metadata_writer.py +845 -0
- mediapipe/tasks/python/metadata/metadata_writers/model_asset_bundle_utils.py +71 -0
- mediapipe/tasks/python/metadata/metadata_writers/object_detector.py +331 -0
- mediapipe/tasks/python/metadata/metadata_writers/text_classifier.py +119 -0
- mediapipe/tasks/python/metadata/metadata_writers/writer_utils.py +91 -0
- mediapipe/tasks/python/test/__init__.py +13 -0
- mediapipe/tasks/python/test/audio/__init__.py +13 -0
- mediapipe/tasks/python/test/audio/audio_classifier_test.py +387 -0
- mediapipe/tasks/python/test/audio/audio_embedder_test.py +297 -0
- mediapipe/tasks/python/test/test_utils.py +196 -0
- mediapipe/tasks/python/test/text/__init__.py +13 -0
- mediapipe/tasks/python/test/text/language_detector_test.py +228 -0
- mediapipe/tasks/python/test/text/text_classifier_test.py +235 -0
- mediapipe/tasks/python/test/text/text_embedder_test.py +326 -0
- mediapipe/tasks/python/test/vision/__init__.py +13 -0
- mediapipe/tasks/python/test/vision/face_aligner_test.py +190 -0
- mediapipe/tasks/python/test/vision/face_detector_test.py +523 -0
- mediapipe/tasks/python/test/vision/face_landmarker_test.py +565 -0
- mediapipe/tasks/python/test/vision/face_stylizer_test.py +191 -0
- mediapipe/tasks/python/test/vision/hand_landmarker_test.py +437 -0
- mediapipe/tasks/python/test/vision/holistic_landmarker_test.py +544 -0
- mediapipe/tasks/python/test/vision/image_classifier_test.py +657 -0
- mediapipe/tasks/python/test/vision/image_embedder_test.py +423 -0
- mediapipe/tasks/python/test/vision/image_segmenter_test.py +512 -0
- mediapipe/tasks/python/test/vision/interactive_segmenter_test.py +341 -0
- mediapipe/tasks/python/test/vision/object_detector_test.py +493 -0
- mediapipe/tasks/python/test/vision/pose_landmarker_test.py +518 -0
- mediapipe/tasks/python/text/__init__.py +35 -0
- mediapipe/tasks/python/text/core/__init__.py +16 -0
- mediapipe/tasks/python/text/core/base_text_task_api.py +54 -0
- mediapipe/tasks/python/text/language_detector.py +220 -0
- mediapipe/tasks/python/text/text_classifier.py +187 -0
- mediapipe/tasks/python/text/text_embedder.py +188 -0
- mediapipe/tasks/python/vision/__init__.py +90 -0
- mediapipe/tasks/python/vision/core/__init__.py +14 -0
- mediapipe/tasks/python/vision/core/base_vision_task_api.py +226 -0
- mediapipe/tasks/python/vision/core/image_processing_options.py +39 -0
- mediapipe/tasks/python/vision/core/vision_task_running_mode.py +31 -0
- mediapipe/tasks/python/vision/face_aligner.py +158 -0
- mediapipe/tasks/python/vision/face_detector.py +332 -0
- mediapipe/tasks/python/vision/face_landmarker.py +3244 -0
- mediapipe/tasks/python/vision/face_stylizer.py +158 -0
- mediapipe/tasks/python/vision/gesture_recognizer.py +480 -0
- mediapipe/tasks/python/vision/hand_landmarker.py +504 -0
- mediapipe/tasks/python/vision/holistic_landmarker.py +576 -0
- mediapipe/tasks/python/vision/image_classifier.py +358 -0
- mediapipe/tasks/python/vision/image_embedder.py +362 -0
- mediapipe/tasks/python/vision/image_segmenter.py +433 -0
- mediapipe/tasks/python/vision/interactive_segmenter.py +285 -0
- mediapipe/tasks/python/vision/object_detector.py +389 -0
- mediapipe/tasks/python/vision/pose_landmarker.py +455 -0
- mediapipe/util/__init__.py +0 -0
- mediapipe/util/analytics/__init__.py +0 -0
- mediapipe/util/analytics/mediapipe_log_extension_pb2.py +44 -0
- mediapipe/util/analytics/mediapipe_logging_enums_pb2.py +37 -0
- mediapipe/util/audio_decoder_pb2.py +33 -0
- mediapipe/util/color_pb2.py +33 -0
- mediapipe/util/label_map_pb2.py +27 -0
- mediapipe/util/render_data_pb2.py +58 -0
- mediapipe/util/sequence/__init__.py +14 -0
- mediapipe/util/sequence/media_sequence.py +716 -0
- mediapipe/util/sequence/media_sequence_test.py +290 -0
- mediapipe/util/sequence/media_sequence_util.py +800 -0
- mediapipe/util/sequence/media_sequence_util_test.py +389 -0
- mediapipe/util/tracking/__init__.py +0 -0
- mediapipe/util/tracking/box_detector_pb2.py +39 -0
- mediapipe/util/tracking/box_tracker_pb2.py +32 -0
- mediapipe/util/tracking/camera_motion_pb2.py +31 -0
- mediapipe/util/tracking/flow_packager_pb2.py +60 -0
- mediapipe/util/tracking/frame_selection_pb2.py +35 -0
- mediapipe/util/tracking/frame_selection_solution_evaluator_pb2.py +28 -0
- mediapipe/util/tracking/motion_analysis_pb2.py +35 -0
- mediapipe/util/tracking/motion_estimation_pb2.py +66 -0
- mediapipe/util/tracking/motion_models_pb2.py +42 -0
- mediapipe/util/tracking/motion_saliency_pb2.py +26 -0
- mediapipe/util/tracking/push_pull_filtering_pb2.py +26 -0
- mediapipe/util/tracking/region_flow_computation_pb2.py +59 -0
- mediapipe/util/tracking/region_flow_pb2.py +49 -0
- mediapipe/util/tracking/tone_estimation_pb2.py +45 -0
- mediapipe/util/tracking/tone_models_pb2.py +32 -0
- mediapipe/util/tracking/tracked_detection_manager_config_pb2.py +26 -0
- mediapipe/util/tracking/tracking_pb2.py +73 -0
- mediapipe_nightly-0.10.21.post20241223.dist-info/LICENSE +218 -0
- mediapipe_nightly-0.10.21.post20241223.dist-info/METADATA +199 -0
- mediapipe_nightly-0.10.21.post20241223.dist-info/RECORD +593 -0
- mediapipe_nightly-0.10.21.post20241223.dist-info/WHEEL +5 -0
- mediapipe_nightly-0.10.21.post20241223.dist-info/top_level.txt +4 -0
- mediapipe_nightly.libs/libEGL-48f73270.so.1.1.0 +0 -0
- mediapipe_nightly.libs/libGLESv2-ed5eda4f.so.2.1.0 +0 -0
- mediapipe_nightly.libs/libGLdispatch-64b28464.so.0.0.0 +0 -0
@@ -0,0 +1,137 @@
|
|
1
|
+
# Copyright 2022 The MediaPipe Authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""MediaPipe audio data."""
|
15
|
+
|
16
|
+
import dataclasses
|
17
|
+
from typing import Optional
|
18
|
+
|
19
|
+
import numpy as np
|
20
|
+
|
21
|
+
|
22
|
+
@dataclasses.dataclass
|
23
|
+
class AudioDataFormat:
|
24
|
+
"""Audio format metadata.
|
25
|
+
|
26
|
+
Attributes:
|
27
|
+
num_channels: the number of channels of the audio data.
|
28
|
+
sample_rate: the audio sample rate.
|
29
|
+
"""
|
30
|
+
num_channels: int = 1
|
31
|
+
sample_rate: Optional[float] = None
|
32
|
+
|
33
|
+
|
34
|
+
class AudioData(object):
|
35
|
+
"""MediaPipe Tasks' audio container."""
|
36
|
+
|
37
|
+
def __init__(
|
38
|
+
self,
|
39
|
+
buffer_length: int,
|
40
|
+
audio_format: AudioDataFormat = AudioDataFormat()
|
41
|
+
) -> None:
|
42
|
+
"""Initializes the `AudioData` object.
|
43
|
+
|
44
|
+
Args:
|
45
|
+
buffer_length: the length of the audio buffer.
|
46
|
+
audio_format: the audio format metadata.
|
47
|
+
"""
|
48
|
+
self._audio_format = audio_format
|
49
|
+
self._buffer = np.zeros([buffer_length, self._audio_format.num_channels],
|
50
|
+
dtype=np.float32)
|
51
|
+
|
52
|
+
def clear(self):
|
53
|
+
"""Clears the internal buffer and fill it with zeros."""
|
54
|
+
self._buffer.fill(0)
|
55
|
+
|
56
|
+
def load_from_array(self,
|
57
|
+
src: np.ndarray,
|
58
|
+
offset: int = 0,
|
59
|
+
size: int = -1) -> None:
|
60
|
+
"""Loads the audio data from a NumPy array.
|
61
|
+
|
62
|
+
Args:
|
63
|
+
src: A NumPy source array contains the input audio.
|
64
|
+
offset: An optional offset for loading a slice of the `src` array to the
|
65
|
+
buffer.
|
66
|
+
size: An optional size parameter denoting the number of samples to load
|
67
|
+
from the `src` array.
|
68
|
+
|
69
|
+
Raises:
|
70
|
+
ValueError: If the input array has an incorrect shape or if
|
71
|
+
`offset` + `size` exceeds the length of the `src` array.
|
72
|
+
"""
|
73
|
+
if len(src.shape) == 1:
|
74
|
+
if self._audio_format.num_channels != 1:
|
75
|
+
raise ValueError(f"Input audio is mono, but the audio data is expected "
|
76
|
+
f"to have {self._audio_format.num_channels} channels.")
|
77
|
+
elif src.shape[1] != self._audio_format.num_channels:
|
78
|
+
raise ValueError(f"Input audio contains an invalid number of channels. "
|
79
|
+
f"Expect {self._audio_format.num_channels}.")
|
80
|
+
|
81
|
+
if size < 0:
|
82
|
+
size = len(src)
|
83
|
+
|
84
|
+
if offset + size > len(src):
|
85
|
+
raise ValueError(
|
86
|
+
f"Index out of range. offset {offset} + size {size} should be <= "
|
87
|
+
f"src's length: {len(src)}")
|
88
|
+
|
89
|
+
if len(src) >= len(self._buffer):
|
90
|
+
# If the internal buffer is shorter than the load target (src), copy
|
91
|
+
# values from the end of the src array to the internal buffer.
|
92
|
+
new_offset = offset + size - len(self._buffer)
|
93
|
+
new_size = len(self._buffer)
|
94
|
+
self._buffer = src[new_offset:new_offset + new_size].copy()
|
95
|
+
else:
|
96
|
+
# Shift the internal buffer backward and add the incoming data to the end
|
97
|
+
# of the buffer.
|
98
|
+
shift = size
|
99
|
+
self._buffer = np.roll(self._buffer, -shift, axis=0)
|
100
|
+
self._buffer[-shift:, :] = src[offset:offset + size].copy()
|
101
|
+
|
102
|
+
@classmethod
|
103
|
+
def create_from_array(cls,
|
104
|
+
src: np.ndarray,
|
105
|
+
sample_rate: Optional[float] = None) -> "AudioData":
|
106
|
+
"""Creates an `AudioData` object from a NumPy array.
|
107
|
+
|
108
|
+
Args:
|
109
|
+
src: A NumPy source array contains the input audio.
|
110
|
+
sample_rate: the optional audio sample rate.
|
111
|
+
|
112
|
+
Returns:
|
113
|
+
An `AudioData` object that contains a copy of the NumPy source array as
|
114
|
+
the data.
|
115
|
+
"""
|
116
|
+
obj = cls(
|
117
|
+
buffer_length=src.shape[0],
|
118
|
+
audio_format=AudioDataFormat(
|
119
|
+
num_channels=1 if len(src.shape) == 1 else src.shape[1],
|
120
|
+
sample_rate=sample_rate))
|
121
|
+
obj.load_from_array(src)
|
122
|
+
return obj
|
123
|
+
|
124
|
+
@property
|
125
|
+
def audio_format(self) -> AudioDataFormat:
|
126
|
+
"""Gets the audio format of the audio."""
|
127
|
+
return self._audio_format
|
128
|
+
|
129
|
+
@property
|
130
|
+
def buffer_length(self) -> int:
|
131
|
+
"""Gets the sample count of the audio."""
|
132
|
+
return self._buffer.shape[0]
|
133
|
+
|
134
|
+
@property
|
135
|
+
def buffer(self) -> np.ndarray:
|
136
|
+
"""Gets the internal buffer."""
|
137
|
+
return self._buffer
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright 2022 The MediaPipe Authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Bounding box data class."""
|
15
|
+
|
16
|
+
import dataclasses
|
17
|
+
from typing import Any
|
18
|
+
|
19
|
+
from mediapipe.framework.formats import location_data_pb2
|
20
|
+
from mediapipe.tasks.python.core.optional_dependencies import doc_controls
|
21
|
+
|
22
|
+
_BoundingBoxProto = location_data_pb2.LocationData.BoundingBox
|
23
|
+
|
24
|
+
|
25
|
+
@dataclasses.dataclass
|
26
|
+
class BoundingBox:
|
27
|
+
"""An integer bounding box, axis aligned.
|
28
|
+
|
29
|
+
Attributes:
|
30
|
+
origin_x: The X coordinate of the top-left corner, in pixels.
|
31
|
+
origin_y: The Y coordinate of the top-left corner, in pixels.
|
32
|
+
width: The width of the bounding box, in pixels.
|
33
|
+
height: The height of the bounding box, in pixels.
|
34
|
+
"""
|
35
|
+
|
36
|
+
origin_x: int
|
37
|
+
origin_y: int
|
38
|
+
width: int
|
39
|
+
height: int
|
40
|
+
|
41
|
+
@doc_controls.do_not_generate_docs
|
42
|
+
def to_pb2(self) -> _BoundingBoxProto:
|
43
|
+
"""Generates a BoundingBox protobuf object."""
|
44
|
+
return _BoundingBoxProto(
|
45
|
+
xmin=self.origin_x,
|
46
|
+
ymin=self.origin_y,
|
47
|
+
width=self.width,
|
48
|
+
height=self.height,
|
49
|
+
)
|
50
|
+
|
51
|
+
@classmethod
|
52
|
+
@doc_controls.do_not_generate_docs
|
53
|
+
def create_from_pb2(cls, pb2_obj: _BoundingBoxProto) -> 'BoundingBox':
|
54
|
+
"""Creates a `BoundingBox` object from the given protobuf object."""
|
55
|
+
return BoundingBox(
|
56
|
+
origin_x=pb2_obj.xmin,
|
57
|
+
origin_y=pb2_obj.ymin,
|
58
|
+
width=pb2_obj.width,
|
59
|
+
height=pb2_obj.height)
|
60
|
+
|
61
|
+
def __eq__(self, other: Any) -> bool:
|
62
|
+
"""Checks if this object is equal to the given object.
|
63
|
+
|
64
|
+
Args:
|
65
|
+
other: The object to be compared with.
|
66
|
+
|
67
|
+
Returns:
|
68
|
+
True if the objects are equal.
|
69
|
+
"""
|
70
|
+
if not isinstance(other, BoundingBox):
|
71
|
+
return False
|
72
|
+
|
73
|
+
return self.to_pb2().__eq__(other.to_pb2())
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Copyright 2022 The MediaPipe Authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Category data class."""
|
15
|
+
|
16
|
+
import dataclasses
|
17
|
+
from typing import Any, Optional
|
18
|
+
|
19
|
+
from mediapipe.framework.formats import classification_pb2
|
20
|
+
from mediapipe.tasks.python.core.optional_dependencies import doc_controls
|
21
|
+
|
22
|
+
_ClassificationProto = classification_pb2.Classification
|
23
|
+
|
24
|
+
|
25
|
+
@dataclasses.dataclass
|
26
|
+
class Category:
|
27
|
+
"""A classification category.
|
28
|
+
|
29
|
+
Category is a util class, contains a label, its display name, a float
|
30
|
+
value as score, and the index of the label in the corresponding label file.
|
31
|
+
Typically it's used as the result of classification tasks.
|
32
|
+
|
33
|
+
Attributes:
|
34
|
+
index: The index of the label in the corresponding label file.
|
35
|
+
score: The probability score of this label category.
|
36
|
+
display_name: The display name of the label, which may be translated for
|
37
|
+
different locales. For example, a label, "apple", may be translated into
|
38
|
+
Spanish for display purpose, so that the `display_name` is "manzana".
|
39
|
+
category_name: The label of this category object.
|
40
|
+
"""
|
41
|
+
|
42
|
+
index: Optional[int] = None
|
43
|
+
score: Optional[float] = None
|
44
|
+
display_name: Optional[str] = None
|
45
|
+
category_name: Optional[str] = None
|
46
|
+
|
47
|
+
@doc_controls.do_not_generate_docs
|
48
|
+
def to_pb2(self) -> _ClassificationProto:
|
49
|
+
"""Generates a Category protobuf object."""
|
50
|
+
return _ClassificationProto(
|
51
|
+
index=self.index,
|
52
|
+
score=self.score,
|
53
|
+
label=self.category_name,
|
54
|
+
display_name=self.display_name)
|
55
|
+
|
56
|
+
@classmethod
|
57
|
+
@doc_controls.do_not_generate_docs
|
58
|
+
def create_from_pb2(cls, pb2_obj: _ClassificationProto) -> 'Category':
|
59
|
+
"""Creates a `Category` object from the given protobuf object."""
|
60
|
+
return Category(
|
61
|
+
index=pb2_obj.index,
|
62
|
+
score=pb2_obj.score,
|
63
|
+
display_name=pb2_obj.display_name,
|
64
|
+
category_name=pb2_obj.label)
|
65
|
+
|
66
|
+
def __eq__(self, other: Any) -> bool:
|
67
|
+
"""Checks if this object is equal to the given object.
|
68
|
+
|
69
|
+
Args:
|
70
|
+
other: The object to be compared with.
|
71
|
+
|
72
|
+
Returns:
|
73
|
+
True if the objects are equal.
|
74
|
+
"""
|
75
|
+
if not isinstance(other, Category):
|
76
|
+
return False
|
77
|
+
|
78
|
+
return self.to_pb2().__eq__(other.to_pb2())
|
@@ -0,0 +1,111 @@
|
|
1
|
+
# Copyright 2022 The TensorFlow Authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Classifications data class."""
|
15
|
+
|
16
|
+
import dataclasses
|
17
|
+
from typing import List, Optional
|
18
|
+
|
19
|
+
from mediapipe.framework.formats import classification_pb2
|
20
|
+
from mediapipe.tasks.cc.components.containers.proto import classifications_pb2
|
21
|
+
from mediapipe.tasks.python.components.containers import category as category_module
|
22
|
+
from mediapipe.tasks.python.core.optional_dependencies import doc_controls
|
23
|
+
|
24
|
+
_ClassificationProto = classification_pb2.Classification
|
25
|
+
_ClassificationListProto = classification_pb2.ClassificationList
|
26
|
+
_ClassificationsProto = classifications_pb2.Classifications
|
27
|
+
_ClassificationResultProto = classifications_pb2.ClassificationResult
|
28
|
+
|
29
|
+
|
30
|
+
@dataclasses.dataclass
|
31
|
+
class Classifications:
|
32
|
+
"""Represents the classification results for a given classifier head.
|
33
|
+
|
34
|
+
Attributes:
|
35
|
+
categories: The array of predicted categories, usually sorted by descending
|
36
|
+
scores (e.g. from high to low probability).
|
37
|
+
head_index: The index of the classifier head these categories refer to. This
|
38
|
+
is useful for multi-head models.
|
39
|
+
head_name: The name of the classifier head, which is the corresponding
|
40
|
+
tensor metadata name.
|
41
|
+
"""
|
42
|
+
|
43
|
+
categories: List[category_module.Category]
|
44
|
+
head_index: int
|
45
|
+
head_name: Optional[str] = None
|
46
|
+
|
47
|
+
@doc_controls.do_not_generate_docs
|
48
|
+
def to_pb2(self) -> _ClassificationsProto:
|
49
|
+
"""Generates a Classifications protobuf object."""
|
50
|
+
classification_list_proto = _ClassificationListProto()
|
51
|
+
for category in self.categories:
|
52
|
+
classification_proto = category.to_pb2()
|
53
|
+
classification_list_proto.classification.append(classification_proto)
|
54
|
+
return _ClassificationsProto(
|
55
|
+
classification_list=classification_list_proto,
|
56
|
+
head_index=self.head_index,
|
57
|
+
head_name=self.head_name)
|
58
|
+
|
59
|
+
@classmethod
|
60
|
+
@doc_controls.do_not_generate_docs
|
61
|
+
def create_from_pb2(cls, pb2_obj: _ClassificationsProto) -> 'Classifications':
|
62
|
+
"""Creates a `Classifications` object from the given protobuf object."""
|
63
|
+
categories = []
|
64
|
+
for classification in pb2_obj.classification_list.classification:
|
65
|
+
categories.append(
|
66
|
+
category_module.Category.create_from_pb2(classification))
|
67
|
+
return Classifications(
|
68
|
+
categories=categories,
|
69
|
+
head_index=pb2_obj.head_index,
|
70
|
+
head_name=pb2_obj.head_name)
|
71
|
+
|
72
|
+
|
73
|
+
@dataclasses.dataclass
|
74
|
+
class ClassificationResult:
|
75
|
+
"""Contains the classification results of a model.
|
76
|
+
|
77
|
+
Attributes:
|
78
|
+
classifications: A list of `Classifications` objects, each for a head of the
|
79
|
+
model.
|
80
|
+
timestamp_ms: The optional timestamp (in milliseconds) of the start of the
|
81
|
+
chunk of data corresponding to these results. This is only used for
|
82
|
+
classification on time series (e.g. audio classification). In these use
|
83
|
+
cases, the amount of data to process might exceed the maximum size that
|
84
|
+
the model can process: to solve this, the input data is split into
|
85
|
+
multiple chunks starting at different timestamps.
|
86
|
+
"""
|
87
|
+
|
88
|
+
classifications: List[Classifications]
|
89
|
+
timestamp_ms: Optional[int] = None
|
90
|
+
|
91
|
+
@doc_controls.do_not_generate_docs
|
92
|
+
def to_pb2(self) -> _ClassificationResultProto:
|
93
|
+
"""Generates a ClassificationResult protobuf object."""
|
94
|
+
return _ClassificationResultProto(
|
95
|
+
classifications=[
|
96
|
+
classification.to_pb2() for classification in self.classifications
|
97
|
+
],
|
98
|
+
timestamp_ms=self.timestamp_ms)
|
99
|
+
|
100
|
+
@classmethod
|
101
|
+
@doc_controls.do_not_generate_docs
|
102
|
+
def create_from_pb2(
|
103
|
+
cls, pb2_obj: _ClassificationResultProto) -> 'ClassificationResult':
|
104
|
+
"""Creates a `ClassificationResult` object from the given protobuf object.
|
105
|
+
"""
|
106
|
+
return ClassificationResult(
|
107
|
+
classifications=[
|
108
|
+
Classifications.create_from_pb2(classification)
|
109
|
+
for classification in pb2_obj.classifications
|
110
|
+
],
|
111
|
+
timestamp_ms=pb2_obj.timestamp_ms)
|
@@ -0,0 +1,181 @@
|
|
1
|
+
# Copyright 2022 The MediaPipe Authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Detections data class."""
|
15
|
+
|
16
|
+
import dataclasses
|
17
|
+
from typing import Any, List, Optional
|
18
|
+
|
19
|
+
from mediapipe.framework.formats import detection_pb2
|
20
|
+
from mediapipe.framework.formats import location_data_pb2
|
21
|
+
from mediapipe.tasks.python.components.containers import bounding_box as bounding_box_module
|
22
|
+
from mediapipe.tasks.python.components.containers import category as category_module
|
23
|
+
from mediapipe.tasks.python.components.containers import keypoint as keypoint_module
|
24
|
+
from mediapipe.tasks.python.core.optional_dependencies import doc_controls
|
25
|
+
|
26
|
+
_DetectionListProto = detection_pb2.DetectionList
|
27
|
+
_DetectionProto = detection_pb2.Detection
|
28
|
+
_LocationDataProto = location_data_pb2.LocationData
|
29
|
+
|
30
|
+
|
31
|
+
@dataclasses.dataclass
|
32
|
+
class Detection:
|
33
|
+
"""Represents one detected object in the object detector's results.
|
34
|
+
|
35
|
+
Attributes:
|
36
|
+
bounding_box: A BoundingBox object.
|
37
|
+
categories: A list of Category objects.
|
38
|
+
keypoints: A list of NormalizedKeypoint objects.
|
39
|
+
"""
|
40
|
+
|
41
|
+
bounding_box: bounding_box_module.BoundingBox
|
42
|
+
categories: List[category_module.Category]
|
43
|
+
keypoints: Optional[List[keypoint_module.NormalizedKeypoint]] = None
|
44
|
+
|
45
|
+
@doc_controls.do_not_generate_docs
|
46
|
+
def to_pb2(self) -> _DetectionProto:
|
47
|
+
"""Generates a Detection protobuf object."""
|
48
|
+
labels = []
|
49
|
+
label_ids = []
|
50
|
+
scores = []
|
51
|
+
display_names = []
|
52
|
+
relative_keypoints = []
|
53
|
+
|
54
|
+
for category in self.categories:
|
55
|
+
scores.append(category.score)
|
56
|
+
if category.index:
|
57
|
+
label_ids.append(category.index)
|
58
|
+
if category.category_name:
|
59
|
+
labels.append(category.category_name)
|
60
|
+
if category.display_name:
|
61
|
+
display_names.append(category.display_name)
|
62
|
+
|
63
|
+
if self.keypoints:
|
64
|
+
for keypoint in self.keypoints:
|
65
|
+
relative_keypoint_proto = _LocationDataProto.RelativeKeypoint()
|
66
|
+
if keypoint.x:
|
67
|
+
relative_keypoint_proto.x = keypoint.x
|
68
|
+
if keypoint.y:
|
69
|
+
relative_keypoint_proto.y = keypoint.y
|
70
|
+
if keypoint.label:
|
71
|
+
relative_keypoint_proto.keypoint_label = keypoint.label
|
72
|
+
if keypoint.score:
|
73
|
+
relative_keypoint_proto.score = keypoint.score
|
74
|
+
relative_keypoints.append(relative_keypoint_proto)
|
75
|
+
|
76
|
+
return _DetectionProto(
|
77
|
+
label=labels,
|
78
|
+
label_id=label_ids,
|
79
|
+
score=scores,
|
80
|
+
display_name=display_names,
|
81
|
+
location_data=_LocationDataProto(
|
82
|
+
format=_LocationDataProto.Format.BOUNDING_BOX,
|
83
|
+
bounding_box=self.bounding_box.to_pb2(),
|
84
|
+
relative_keypoints=relative_keypoints,
|
85
|
+
),
|
86
|
+
)
|
87
|
+
|
88
|
+
@classmethod
|
89
|
+
@doc_controls.do_not_generate_docs
|
90
|
+
def create_from_pb2(cls, pb2_obj: _DetectionProto) -> 'Detection':
|
91
|
+
"""Creates a `Detection` object from the given protobuf object."""
|
92
|
+
categories = []
|
93
|
+
keypoints = []
|
94
|
+
|
95
|
+
for idx, score in enumerate(pb2_obj.score):
|
96
|
+
categories.append(
|
97
|
+
category_module.Category(
|
98
|
+
score=score,
|
99
|
+
index=pb2_obj.label_id[idx]
|
100
|
+
if idx < len(pb2_obj.label_id)
|
101
|
+
else None,
|
102
|
+
category_name=pb2_obj.label[idx]
|
103
|
+
if idx < len(pb2_obj.label)
|
104
|
+
else None,
|
105
|
+
display_name=pb2_obj.display_name[idx]
|
106
|
+
if idx < len(pb2_obj.display_name)
|
107
|
+
else None,
|
108
|
+
)
|
109
|
+
)
|
110
|
+
|
111
|
+
if pb2_obj.location_data.relative_keypoints:
|
112
|
+
for idx, elem in enumerate(pb2_obj.location_data.relative_keypoints):
|
113
|
+
keypoints.append(
|
114
|
+
keypoint_module.NormalizedKeypoint(
|
115
|
+
x=elem.x,
|
116
|
+
y=elem.y,
|
117
|
+
label=elem.keypoint_label,
|
118
|
+
score=elem.score,
|
119
|
+
)
|
120
|
+
)
|
121
|
+
|
122
|
+
return Detection(
|
123
|
+
bounding_box=bounding_box_module.BoundingBox.create_from_pb2(
|
124
|
+
pb2_obj.location_data.bounding_box
|
125
|
+
),
|
126
|
+
categories=categories,
|
127
|
+
keypoints=keypoints,
|
128
|
+
)
|
129
|
+
|
130
|
+
def __eq__(self, other: Any) -> bool:
|
131
|
+
"""Checks if this object is equal to the given object.
|
132
|
+
|
133
|
+
Args:
|
134
|
+
other: The object to be compared with.
|
135
|
+
|
136
|
+
Returns:
|
137
|
+
True if the objects are equal.
|
138
|
+
"""
|
139
|
+
if not isinstance(other, Detection):
|
140
|
+
return False
|
141
|
+
|
142
|
+
return self.to_pb2().__eq__(other.to_pb2())
|
143
|
+
|
144
|
+
|
145
|
+
@dataclasses.dataclass
|
146
|
+
class DetectionResult:
|
147
|
+
"""Represents the list of detected objects.
|
148
|
+
|
149
|
+
Attributes:
|
150
|
+
detections: A list of `Detection` objects.
|
151
|
+
"""
|
152
|
+
|
153
|
+
detections: List[Detection]
|
154
|
+
|
155
|
+
@doc_controls.do_not_generate_docs
|
156
|
+
def to_pb2(self) -> _DetectionListProto:
|
157
|
+
"""Generates a DetectionList protobuf object."""
|
158
|
+
return _DetectionListProto(
|
159
|
+
detection=[detection.to_pb2() for detection in self.detections])
|
160
|
+
|
161
|
+
@classmethod
|
162
|
+
@doc_controls.do_not_generate_docs
|
163
|
+
def create_from_pb2(cls, pb2_obj: _DetectionListProto) -> 'DetectionResult':
|
164
|
+
"""Creates a `DetectionResult` object from the given protobuf object."""
|
165
|
+
return DetectionResult(detections=[
|
166
|
+
Detection.create_from_pb2(detection) for detection in pb2_obj.detection
|
167
|
+
])
|
168
|
+
|
169
|
+
def __eq__(self, other: Any) -> bool:
|
170
|
+
"""Checks if this object is equal to the given object.
|
171
|
+
|
172
|
+
Args:
|
173
|
+
other: The object to be compared with.
|
174
|
+
|
175
|
+
Returns:
|
176
|
+
True if the objects are equal.
|
177
|
+
"""
|
178
|
+
if not isinstance(other, DetectionResult):
|
179
|
+
return False
|
180
|
+
|
181
|
+
return self.to_pb2().__eq__(other.to_pb2())
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# Copyright 2022 The MediaPipe Authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
"""Embeddings data class."""
|
15
|
+
|
16
|
+
import dataclasses
|
17
|
+
from typing import Optional, List
|
18
|
+
|
19
|
+
import numpy as np
|
20
|
+
from mediapipe.tasks.cc.components.containers.proto import embeddings_pb2
|
21
|
+
from mediapipe.tasks.python.core.optional_dependencies import doc_controls
|
22
|
+
|
23
|
+
_FloatEmbeddingProto = embeddings_pb2.FloatEmbedding
|
24
|
+
_QuantizedEmbeddingProto = embeddings_pb2.QuantizedEmbedding
|
25
|
+
_EmbeddingProto = embeddings_pb2.Embedding
|
26
|
+
_EmbeddingResultProto = embeddings_pb2.EmbeddingResult
|
27
|
+
|
28
|
+
|
29
|
+
@dataclasses.dataclass
|
30
|
+
class Embedding:
|
31
|
+
"""Embedding result for a given embedder head.
|
32
|
+
|
33
|
+
Attributes:
|
34
|
+
embedding: The actual embedding, either floating-point or scalar-quantized.
|
35
|
+
head_index: The index of the embedder head that produced this embedding.
|
36
|
+
This is useful for multi-head models.
|
37
|
+
head_name: The name of the embedder head, which is the corresponding tensor
|
38
|
+
metadata name (if any). This is useful for multi-head models.
|
39
|
+
"""
|
40
|
+
|
41
|
+
embedding: np.ndarray
|
42
|
+
head_index: Optional[int] = None
|
43
|
+
head_name: Optional[str] = None
|
44
|
+
|
45
|
+
@classmethod
|
46
|
+
@doc_controls.do_not_generate_docs
|
47
|
+
def create_from_pb2(cls, pb2_obj: _EmbeddingProto) -> 'Embedding':
|
48
|
+
"""Creates a `Embedding` object from the given protobuf object."""
|
49
|
+
|
50
|
+
quantized_embedding = np.array(
|
51
|
+
bytearray(pb2_obj.quantized_embedding.values))
|
52
|
+
float_embedding = np.array(pb2_obj.float_embedding.values, dtype=float)
|
53
|
+
|
54
|
+
if not pb2_obj.quantized_embedding.values:
|
55
|
+
return Embedding(
|
56
|
+
embedding=float_embedding,
|
57
|
+
head_index=pb2_obj.head_index,
|
58
|
+
head_name=pb2_obj.head_name)
|
59
|
+
else:
|
60
|
+
return Embedding(
|
61
|
+
embedding=quantized_embedding,
|
62
|
+
head_index=pb2_obj.head_index,
|
63
|
+
head_name=pb2_obj.head_name)
|
64
|
+
|
65
|
+
|
66
|
+
@dataclasses.dataclass
|
67
|
+
class EmbeddingResult:
|
68
|
+
"""Embedding results for a given embedder model.
|
69
|
+
|
70
|
+
Attributes:
|
71
|
+
embeddings: A list of `Embedding` objects.
|
72
|
+
timestamp_ms: The optional timestamp (in milliseconds) of the start of the
|
73
|
+
chunk of data corresponding to these results. This is only used for
|
74
|
+
embedding extraction on time series (e.g. audio embedding). In these use
|
75
|
+
cases, the amount of data to process might exceed the maximum size that
|
76
|
+
the model can process: to solve this, the input data is split into
|
77
|
+
multiple chunks starting at different timestamps.
|
78
|
+
"""
|
79
|
+
|
80
|
+
embeddings: List[Embedding]
|
81
|
+
timestamp_ms: Optional[int] = None
|
82
|
+
|
83
|
+
@classmethod
|
84
|
+
@doc_controls.do_not_generate_docs
|
85
|
+
def create_from_pb2(cls, pb2_obj: _EmbeddingResultProto) -> 'EmbeddingResult':
|
86
|
+
"""Creates a `EmbeddingResult` object from the given protobuf object."""
|
87
|
+
return EmbeddingResult(embeddings=[
|
88
|
+
Embedding.create_from_pb2(embedding) for embedding in pb2_obj.embeddings
|
89
|
+
])
|