From d3b66ba253765074cf7f864e7afdc28b328f3511 Mon Sep 17 00:00:00 2001 From: MediaPipe Team Date: Wed, 5 Oct 2022 14:18:22 -0700 Subject: [PATCH] Update Gesture Recognizer Graph Options protos. PiperOrigin-RevId: 479141569 --- .../hand_gesture_recognizer_graph.cc | 3 +- .../cc/vision/gesture_recognizer/proto/BUILD | 14 +++++++ .../gesture_recognizer_graph_options.proto | 40 +++++++++++++++++++ ...and_gesture_recognizer_graph_options.proto | 21 +++++++--- 4 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc index 05bc607a..e2f7b65b 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/hand_gesture_recognizer_graph.cc @@ -102,8 +102,7 @@ Source> ConvertMatrixToTensor(Source matrix, // // Example: // node { -// calculator: -// "mediapipe.tasks.vision.gesture_recognizer.SingleHandGestureRecognizerGraph" +// calculator: "mediapipe.tasks.vision.SingleHandGestureRecognizerGraph" // input_stream: "HANDEDNESS:handedness" // input_stream: "LANDMARKS:landmarks" // input_stream: "WORLD_LANDMARKS:world_landmarks" diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD index 151aade8..3b73bf2b 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/BUILD @@ -45,9 +45,23 @@ mediapipe_proto_library( name = "hand_gesture_recognizer_graph_options_proto", srcs = ["hand_gesture_recognizer_graph_options.proto"], deps = [ + ":gesture_classifier_graph_options_proto", + ":gesture_embedder_graph_options_proto", "//mediapipe/framework:calculator_options_proto", "//mediapipe/framework:calculator_proto", "//mediapipe/tasks/cc/components/processors/proto:classifier_options_proto", "//mediapipe/tasks/cc/core/proto:base_options_proto", ], ) + +mediapipe_proto_library( + name = "gesture_recognizer_graph_options_proto", + srcs = ["gesture_recognizer_graph_options.proto"], + deps = [ + ":hand_gesture_recognizer_graph_options_proto", + "//mediapipe/framework:calculator_options_proto", + "//mediapipe/framework:calculator_proto", + "//mediapipe/tasks/cc/core/proto:base_options_proto", + "//mediapipe/tasks/cc/vision/hand_landmarker/proto:hand_landmarker_graph_options_proto", + ], +) diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto new file mode 100644 index 00000000..c2b4fed7 --- /dev/null +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_recognizer_graph_options.proto @@ -0,0 +1,40 @@ +/* Copyright 2022 The MediaPipe Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +syntax = "proto2"; + +package mediapipe.tasks.vision.gesture_recognizer.proto; + +import "mediapipe/framework/calculator.proto"; +import "mediapipe/tasks/cc/core/proto/base_options.proto"; +import "mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto"; +import "mediapipe/tasks/cc/vision/hand_landmarker/proto/hand_landmarker_graph_options.proto"; + +message GestureRecognizerGraphOptions { + extend mediapipe.CalculatorOptions { + optional GestureRecognizerGraphOptions ext = 478371831; + } + // Base options for configuring gesture recognizer graph, such as specifying + // the TfLite model file with metadata, accelerator options, etc. + optional core.proto.BaseOptions base_options = 1; + + // Options for configuring hand landmarker subgraph. + optional hand_landmarker.proto.HandLandmarkerGraphOptions + hand_landmarker_graph_options = 2; + + // Options for configuring hand gesture recognizer graph. + optional HandGestureRecognizerGraphOptions + hand_gesture_recognizer_graph_options = 3; +} diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto index ac8cda15..f71a6b22 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/proto/hand_gesture_recognizer_graph_options.proto @@ -20,6 +20,8 @@ package mediapipe.tasks.vision.gesture_recognizer.proto; import "mediapipe/framework/calculator.proto"; import "mediapipe/tasks/cc/components/processors/proto/classifier_options.proto"; import "mediapipe/tasks/cc/core/proto/base_options.proto"; +import "mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_classifier_graph_options.proto"; +import "mediapipe/tasks/cc/vision/gesture_recognizer/proto/gesture_embedder_graph_options.proto"; message HandGestureRecognizerGraphOptions { extend mediapipe.CalculatorOptions { @@ -29,11 +31,18 @@ message HandGestureRecognizerGraphOptions { // specifying the TfLite model file with metadata, accelerator options, etc. optional core.proto.BaseOptions base_options = 1; - // Options for configuring the gesture classifier behavior, such as score - // threshold, number of results, etc. - optional components.processors.proto.ClassifierOptions classifier_options = 2; + // Options for GestureEmbedder. + optional GestureEmbedderGraphOptions gesture_embedder_graph_options = 2; - // Minimum confidence value ([0.0, 1.0]) for the hand landmarks to be - // considered tracked successfully - optional float min_tracking_confidence = 3 [default = 0.0]; + // Options for GestureClassifier of default gestures. + optional GestureClassifierGraphOptions + canned_gesture_classifier_graph_options = 3; + + // Options for GestureClassifier of custom gestures. + optional GestureClassifierGraphOptions + custom_gesture_classifier_graph_options = 4; + + // TODO: remove these. Temporary solutions before bundle asset is + // ready. + optional components.processors.proto.ClassifierOptions classifier_options = 5; }