From b4972ed4ae2f52da33e0ded75a8807293458aced Mon Sep 17 00:00:00 2001 From: MediaPipe Team Date: Thu, 10 Nov 2022 20:23:38 -0800 Subject: [PATCH] Update GestureRecognitionResult to GestureRecognizerResult. PiperOrigin-RevId: 487712873 --- .../tasks/cc/components/containers/BUILD | 9 --- .../tasks/cc/vision/gesture_recognizer/BUILD | 11 ++- .../gesture_recognizer/gesture_recognizer.cc | 6 +- .../gesture_recognizer/gesture_recognizer.h | 21 +++--- .../gesture_recognizer_result.h} | 16 ++--- .../com/google/mediapipe/tasks/vision/BUILD | 2 +- .../gesturerecognizer/GestureRecognizer.java | 30 ++++---- ...sult.java => GestureRecognizerResult.java} | 10 +-- .../vision/handlandmarker/HandLandmarker.java | 6 +- .../GestureRecognizerTest.java | 72 +++++++++---------- .../tasks/python/vision/gesture_recognizer.py | 6 +- .../gesture_recognizer/gesture_recognizer.ts | 4 +- .../gesture_recognizer_result.ts | 2 +- 13 files changed, 95 insertions(+), 100 deletions(-) rename mediapipe/tasks/cc/{components/containers/gesture_recognition_result.h => vision/gesture_recognizer/gesture_recognizer_result.h} (79%) rename mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/{GestureRecognitionResult.java => GestureRecognizerResult.java} (95%) diff --git a/mediapipe/tasks/cc/components/containers/BUILD b/mediapipe/tasks/cc/components/containers/BUILD index 5004383d..bd66a0f2 100644 --- a/mediapipe/tasks/cc/components/containers/BUILD +++ b/mediapipe/tasks/cc/components/containers/BUILD @@ -21,15 +21,6 @@ cc_library( hdrs = ["rect.h"], ) -cc_library( - name = "gesture_recognition_result", - hdrs = ["gesture_recognition_result.h"], - deps = [ - "//mediapipe/framework/formats:classification_cc_proto", - "//mediapipe/framework/formats:landmark_cc_proto", - ], -) - cc_library( name = "category", srcs = ["category.cc"], diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD b/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD index f32d4cc5..75289b1e 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/BUILD @@ -124,12 +124,22 @@ cc_library( alwayslink = 1, ) +cc_library( + name = "gesture_recognizer_result", + hdrs = ["gesture_recognizer_result.h"], + deps = [ + "//mediapipe/framework/formats:classification_cc_proto", + "//mediapipe/framework/formats:landmark_cc_proto", + ], +) + cc_library( name = "gesture_recognizer", srcs = ["gesture_recognizer.cc"], hdrs = ["gesture_recognizer.h"], deps = [ ":gesture_recognizer_graph", + ":gesture_recognizer_result", ":hand_gesture_recognizer_graph", "//mediapipe/framework:packet", "//mediapipe/framework/api2:builder", @@ -140,7 +150,6 @@ cc_library( "//mediapipe/framework/formats:rect_cc_proto", "//mediapipe/tasks/cc:common", "//mediapipe/tasks/cc/components:image_preprocessing", - "//mediapipe/tasks/cc/components/containers:gesture_recognition_result", "//mediapipe/tasks/cc/components/processors:classifier_options", "//mediapipe/tasks/cc/components/processors/proto:classifier_options_cc_proto", "//mediapipe/tasks/cc/core:base_options", diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc index 38cb5169..8d555b12 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.cc @@ -58,8 +58,6 @@ namespace { using GestureRecognizerGraphOptionsProto = ::mediapipe::tasks::vision:: gesture_recognizer::proto::GestureRecognizerGraphOptions; -using ::mediapipe::tasks::components::containers::GestureRecognitionResult; - constexpr char kHandGestureSubgraphTypeName[] = "mediapipe.tasks.vision.gesture_recognizer.GestureRecognizerGraph"; @@ -214,7 +212,7 @@ absl::StatusOr> GestureRecognizer::Create( std::move(packets_callback)); } -absl::StatusOr GestureRecognizer::Recognize( +absl::StatusOr GestureRecognizer::Recognize( mediapipe::Image image, std::optional image_processing_options) { if (image.UsesGpu()) { @@ -250,7 +248,7 @@ absl::StatusOr GestureRecognizer::Recognize( }; } -absl::StatusOr GestureRecognizer::RecognizeForVideo( +absl::StatusOr GestureRecognizer::RecognizeForVideo( mediapipe::Image image, int64 timestamp_ms, std::optional image_processing_options) { if (image.UsesGpu()) { diff --git a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h index 3f3d7acf..392aa586 100644 --- a/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer.h @@ -24,12 +24,12 @@ limitations under the License. #include "mediapipe/framework/formats/classification.pb.h" #include "mediapipe/framework/formats/image.h" #include "mediapipe/framework/formats/landmark.pb.h" -#include "mediapipe/tasks/cc/components/containers/gesture_recognition_result.h" #include "mediapipe/tasks/cc/components/processors/classifier_options.h" #include "mediapipe/tasks/cc/core/base_options.h" #include "mediapipe/tasks/cc/vision/core/base_vision_task_api.h" #include "mediapipe/tasks/cc/vision/core/image_processing_options.h" #include "mediapipe/tasks/cc/vision/core/running_mode.h" +#include "mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h" namespace mediapipe { namespace tasks { @@ -81,9 +81,8 @@ struct GestureRecognizerOptions { // The user-defined result callback for processing live stream data. // The result callback should only be specified when the running mode is set // to RunningMode::LIVE_STREAM. - std::function, - const Image&, int64)> + std::function, const Image&, + int64)> result_callback = nullptr; }; @@ -104,7 +103,7 @@ struct GestureRecognizerOptions { // 'width' and 'height' fields is NOT supported and will result in an // invalid argument error being returned. // Outputs: -// GestureRecognitionResult +// GestureRecognizerResult // - The hand gesture recognition results. class GestureRecognizer : tasks::vision::core::BaseVisionTaskApi { public: @@ -139,7 +138,7 @@ class GestureRecognizer : tasks::vision::core::BaseVisionTaskApi { // The image can be of any size with format RGB or RGBA. // TODO: Describes how the input image will be preprocessed // after the yuv support is implemented. - absl::StatusOr Recognize( + absl::StatusOr Recognize( Image image, std::optional image_processing_options = std::nullopt); @@ -157,10 +156,10 @@ class GestureRecognizer : tasks::vision::core::BaseVisionTaskApi { // The image can be of any size with format RGB or RGBA. It's required to // provide the video frame's timestamp (in milliseconds). The input timestamps // must be monotonically increasing. - absl::StatusOr - RecognizeForVideo(Image image, int64 timestamp_ms, - std::optional - image_processing_options = std::nullopt); + absl::StatusOr RecognizeForVideo( + Image image, int64 timestamp_ms, + std::optional image_processing_options = + std::nullopt); // Sends live image data to perform gesture recognition, and the results will // be available via the "result_callback" provided in the @@ -179,7 +178,7 @@ class GestureRecognizer : tasks::vision::core::BaseVisionTaskApi { // and will result in an invalid argument error being returned. // // The "result_callback" provides - // - A vector of GestureRecognitionResult, each is the recognized results + // - A vector of GestureRecognizerResult, each is the recognized results // for a input frame. // - The const reference to the corresponding input image that the gesture // recognizer runs on. Note that the const reference to the image will no diff --git a/mediapipe/tasks/cc/components/containers/gesture_recognition_result.h b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h similarity index 79% rename from mediapipe/tasks/cc/components/containers/gesture_recognition_result.h rename to mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h index 4e2e8d77..91421780 100644 --- a/mediapipe/tasks/cc/components/containers/gesture_recognition_result.h +++ b/mediapipe/tasks/cc/vision/gesture_recognizer/gesture_recognizer_result.h @@ -13,20 +13,20 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -#ifndef MEDIAPIPE_TASKS_CC_COMPONENTS_CONTAINERS_GESTURE_RECOGNITION_RESULT_H_ -#define MEDIAPIPE_TASKS_CC_COMPONENTS_CONTAINERS_GESTURE_RECOGNITION_RESULT_H_ +#ifndef MEDIAPIPE_TASKS_CC_VISION_GESTURE_RECOGNIZER_GESTURE_RECOGNIZER_RESULT_H_ +#define MEDIAPIPE_TASKS_CC_VISION_GESTURE_RECOGNIZER_GESTURE_RECOGNIZER_RESULT_H_ #include "mediapipe/framework/formats/classification.pb.h" #include "mediapipe/framework/formats/landmark.pb.h" namespace mediapipe { namespace tasks { -namespace components { -namespace containers { +namespace vision { +namespace gesture_recognizer { // The gesture recognition result from GestureRecognizer, where each vector // element represents a single hand detected in the image. -struct GestureRecognitionResult { +struct GestureRecognizerResult { // Recognized hand gestures with sorted order such that the winning label is // the first item in the list. std::vector gestures; @@ -38,9 +38,9 @@ struct GestureRecognitionResult { std::vector hand_world_landmarks; }; -} // namespace containers -} // namespace components +} // namespace gesture_recognizer +} // namespace vision } // namespace tasks } // namespace mediapipe -#endif // MEDIAPIPE_TASKS_CC_COMPONENTS_CONTAINERS_GESTURE_RECOGNITION_RESULT_H_ +#endif // MEDIAPIPE_TASKS_CC_VISION_GESTURE_RECOGNIZER_GESTURE_RECOGNIZER_RESULT_H_ diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD index 2b71dcdd..4dc4a547 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/BUILD @@ -111,8 +111,8 @@ android_library( android_library( name = "gesturerecognizer", srcs = [ - "gesturerecognizer/GestureRecognitionResult.java", "gesturerecognizer/GestureRecognizer.java", + "gesturerecognizer/GestureRecognizerResult.java", ], javacopts = [ "-Xep:AndroidJdkLibsChecker:OFF", diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java index d1ba94a1..7cbedb32 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizer.java @@ -64,9 +64,9 @@ import java.util.Optional; *
    *
  • The image that gesture recognition runs on. *
- *
  • Output GestureRecognitionResult {@link GestureRecognitionResult} + *
  • Output GestureRecognizerResult {@link GestureRecognizerResult} *
      - *
    • A GestureRecognitionResult containing hand landmarks and recognized hand gestures. + *
    • A GestureRecognizerResult containing hand landmarks and recognized hand gestures. *
    * */ @@ -152,21 +152,21 @@ public final class GestureRecognizer extends BaseVisionTaskApi { public static GestureRecognizer createFromOptions( Context context, GestureRecognizerOptions recognizerOptions) { // TODO: Consolidate OutputHandler and TaskRunner. - OutputHandler handler = new OutputHandler<>(); + OutputHandler handler = new OutputHandler<>(); handler.setOutputPacketConverter( - new OutputHandler.OutputPacketConverter() { + new OutputHandler.OutputPacketConverter() { @Override - public GestureRecognitionResult convertToTaskResult(List packets) { + public GestureRecognizerResult convertToTaskResult(List packets) { // If there is no hands detected in the image, just returns empty lists. if (packets.get(HAND_GESTURES_OUT_STREAM_INDEX).isEmpty()) { - return GestureRecognitionResult.create( + return GestureRecognizerResult.create( new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), packets.get(HAND_GESTURES_OUT_STREAM_INDEX).getTimestamp()); } - return GestureRecognitionResult.create( + return GestureRecognizerResult.create( PacketGetter.getProtoVector( packets.get(LANDMARKS_OUT_STREAM_INDEX), NormalizedLandmarkList.parser()), PacketGetter.getProtoVector( @@ -228,7 +228,7 @@ public final class GestureRecognizer extends BaseVisionTaskApi { * @param image a MediaPipe {@link MPImage} object for processing. * @throws MediaPipeException if there is an internal error. */ - public GestureRecognitionResult recognize(MPImage image) { + public GestureRecognizerResult recognize(MPImage image) { return recognize(image, ImageProcessingOptions.builder().build()); } @@ -252,10 +252,10 @@ public final class GestureRecognizer extends BaseVisionTaskApi { * region-of-interest. * @throws MediaPipeException if there is an internal error. */ - public GestureRecognitionResult recognize( + public GestureRecognizerResult recognize( MPImage image, ImageProcessingOptions imageProcessingOptions) { validateImageProcessingOptions(imageProcessingOptions); - return (GestureRecognitionResult) processImageData(image, imageProcessingOptions); + return (GestureRecognizerResult) processImageData(image, imageProcessingOptions); } /** @@ -276,7 +276,7 @@ public final class GestureRecognizer extends BaseVisionTaskApi { * @param timestampMs the input timestamp (in milliseconds). * @throws MediaPipeException if there is an internal error. */ - public GestureRecognitionResult recognizeForVideo(MPImage image, long timestampMs) { + public GestureRecognizerResult recognizeForVideo(MPImage image, long timestampMs) { return recognizeForVideo(image, ImageProcessingOptions.builder().build(), timestampMs); } @@ -303,10 +303,10 @@ public final class GestureRecognizer extends BaseVisionTaskApi { * region-of-interest. * @throws MediaPipeException if there is an internal error. */ - public GestureRecognitionResult recognizeForVideo( + public GestureRecognizerResult recognizeForVideo( MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs) { validateImageProcessingOptions(imageProcessingOptions); - return (GestureRecognitionResult) processVideoData(image, imageProcessingOptions, timestampMs); + return (GestureRecognizerResult) processVideoData(image, imageProcessingOptions, timestampMs); } /** @@ -425,7 +425,7 @@ public final class GestureRecognizer extends BaseVisionTaskApi { * recognizer is in the live stream mode. */ public abstract Builder setResultListener( - ResultListener value); + ResultListener value); /** Sets an optional error listener. */ public abstract Builder setErrorListener(ErrorListener value); @@ -472,7 +472,7 @@ public final class GestureRecognizer extends BaseVisionTaskApi { abstract Optional customGesturesClassifierOptions(); - abstract Optional> resultListener(); + abstract Optional> resultListener(); abstract Optional errorListener(); diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognitionResult.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java similarity index 95% rename from mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognitionResult.java rename to mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java index e9e1ebe8..ef76bf22 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognitionResult.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerResult.java @@ -29,20 +29,20 @@ import java.util.List; /** Represents the gesture recognition results generated by {@link GestureRecognizer}. */ @AutoValue -public abstract class GestureRecognitionResult implements TaskResult { +public abstract class GestureRecognizerResult implements TaskResult { private static final int kGestureDefaultIndex = -1; /** - * Creates a {@link GestureRecognitionResult} instance from the lists of landmarks, handedness, - * and gestures protobuf messages. + * Creates a {@link GestureRecognizerResult} instance from the lists of landmarks, handedness, and + * gestures protobuf messages. * * @param landmarksProto a List of {@link NormalizedLandmarkList} * @param worldLandmarksProto a List of {@link LandmarkList} * @param handednessesProto a List of {@link ClassificationList} * @param gesturesProto a List of {@link ClassificationList} */ - static GestureRecognitionResult create( + static GestureRecognizerResult create( List landmarksProto, List worldLandmarksProto, List handednessesProto, @@ -106,7 +106,7 @@ public abstract class GestureRecognitionResult implements TaskResult { classification.getDisplayName())); } } - return new AutoValue_GestureRecognitionResult( + return new AutoValue_GestureRecognizerResult( timestampMs, Collections.unmodifiableList(multiHandLandmarks), Collections.unmodifiableList(multiHandWorldLandmarks), diff --git a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java index 089e1c6e..9be489bb 100644 --- a/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java +++ b/mediapipe/tasks/java/com/google/mediapipe/tasks/vision/handlandmarker/HandLandmarker.java @@ -242,8 +242,7 @@ public final class HandLandmarker extends BaseVisionTaskApi { * region-of-interest. * @throws MediaPipeException if there is an internal error. */ - public HandLandmarkerResult detect( - MPImage image, ImageProcessingOptions imageProcessingOptions) { + public HandLandmarkerResult detect(MPImage image, ImageProcessingOptions imageProcessingOptions) { validateImageProcessingOptions(imageProcessingOptions); return (HandLandmarkerResult) processImageData(image, imageProcessingOptions); } @@ -296,8 +295,7 @@ public final class HandLandmarker extends BaseVisionTaskApi { public HandLandmarkerResult detectForVideo( MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs) { validateImageProcessingOptions(imageProcessingOptions); - return (HandLandmarkerResult) - processVideoData(image, imageProcessingOptions, timestampMs); + return (HandLandmarkerResult) processVideoData(image, imageProcessingOptions, timestampMs); } /** diff --git a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java index f76c4eaa..c0be4cff 100644 --- a/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java +++ b/mediapipe/tasks/javatests/com/google/mediapipe/tasks/vision/gesturerecognizer/GestureRecognizerTest.java @@ -80,10 +80,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(THUMB_UP_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); } @@ -98,7 +98,7 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(NO_HANDS_IMAGE)); assertThat(actualResult.landmarks()).isEmpty(); assertThat(actualResult.worldLandmarks()).isEmpty(); @@ -119,10 +119,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(THUMB_UP_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); // Only contains one top scoring gesture. assertThat(actualResult.gestures().get(0)).hasSize(1); assertActualGestureEqualExpectedGesture( @@ -141,7 +141,7 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(TWO_HANDS_IMAGE)); assertThat(actualResult.handednesses()).hasSize(2); } @@ -160,7 +160,7 @@ public class GestureRecognizerTest { GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); ImageProcessingOptions imageProcessingOptions = ImageProcessingOptions.builder().setRotationDegrees(-90).build(); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize( getImageFromAsset(POINTING_UP_ROTATED_IMAGE), imageProcessingOptions); assertThat(actualResult.gestures()).hasSize(1); @@ -179,10 +179,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(FIST_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(FIST_LANDMARKS, FIST_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(FIST_LANDMARKS, FIST_LABEL); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); } @@ -199,10 +199,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(FIST_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(FIST_LANDMARKS, ROCK_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(FIST_LANDMARKS, ROCK_LABEL); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); } @@ -223,10 +223,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(FIST_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(FIST_LANDMARKS, FIST_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(FIST_LANDMARKS, FIST_LABEL); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); } @@ -247,7 +247,7 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(FIST_IMAGE)); assertThat(actualResult.landmarks()).isEmpty(); assertThat(actualResult.worldLandmarks()).isEmpty(); @@ -280,7 +280,7 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(FIST_IMAGE)); assertThat(actualResult.landmarks()).isEmpty(); assertThat(actualResult.worldLandmarks()).isEmpty(); @@ -306,10 +306,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(FIST_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(FIST_LANDMARKS, FIST_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(FIST_LANDMARKS, FIST_LABEL); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); } @@ -478,10 +478,10 @@ public class GestureRecognizerTest { GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognize(getImageFromAsset(THUMB_UP_IMAGE)); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); } @@ -497,10 +497,10 @@ public class GestureRecognizerTest { .build(); GestureRecognizer gestureRecognizer = GestureRecognizer.createFromOptions(ApplicationProvider.getApplicationContext(), options); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); for (int i = 0; i < 3; i++) { - GestureRecognitionResult actualResult = + GestureRecognizerResult actualResult = gestureRecognizer.recognizeForVideo( getImageFromAsset(THUMB_UP_IMAGE), /*timestampsMs=*/ i); assertActualResultApproximatelyEqualsToExpectedResult(actualResult, expectedResult); @@ -510,8 +510,8 @@ public class GestureRecognizerTest { @Test public void recognize_failsWithOutOfOrderInputTimestamps() throws Exception { MPImage image = getImageFromAsset(THUMB_UP_IMAGE); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); GestureRecognizerOptions options = GestureRecognizerOptions.builder() .setBaseOptions( @@ -542,8 +542,8 @@ public class GestureRecognizerTest { @Test public void recognize_successWithLiveSteamMode() throws Exception { MPImage image = getImageFromAsset(THUMB_UP_IMAGE); - GestureRecognitionResult expectedResult = - getExpectedGestureRecognitionResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); + GestureRecognizerResult expectedResult = + getExpectedGestureRecognizerResult(THUMB_UP_LANDMARKS, THUMB_UP_LABEL); GestureRecognizerOptions options = GestureRecognizerOptions.builder() .setBaseOptions( @@ -572,7 +572,7 @@ public class GestureRecognizerTest { return new BitmapImageBuilder(BitmapFactory.decodeStream(istr)).build(); } - private static GestureRecognitionResult getExpectedGestureRecognitionResult( + private static GestureRecognizerResult getExpectedGestureRecognizerResult( String filePath, String gestureLabel) throws Exception { AssetManager assetManager = ApplicationProvider.getApplicationContext().getAssets(); InputStream istr = assetManager.open(filePath); @@ -583,7 +583,7 @@ public class GestureRecognizerTest { .addClassification( ClassificationProto.Classification.newBuilder().setLabel(gestureLabel)) .build(); - return GestureRecognitionResult.create( + return GestureRecognizerResult.create( Arrays.asList(landmarksDetectionResultProto.getLandmarks()), Arrays.asList(landmarksDetectionResultProto.getWorldLandmarks()), Arrays.asList(landmarksDetectionResultProto.getClassifications()), @@ -592,7 +592,7 @@ public class GestureRecognizerTest { } private static void assertActualResultApproximatelyEqualsToExpectedResult( - GestureRecognitionResult actualResult, GestureRecognitionResult expectedResult) { + GestureRecognizerResult actualResult, GestureRecognizerResult expectedResult) { // Expects to have the same number of hands detected. assertThat(actualResult.landmarks()).hasSize(expectedResult.landmarks().size()); assertThat(actualResult.worldLandmarks()).hasSize(expectedResult.worldLandmarks().size()); diff --git a/mediapipe/tasks/python/vision/gesture_recognizer.py b/mediapipe/tasks/python/vision/gesture_recognizer.py index d118a315..9b6fd8ca 100644 --- a/mediapipe/tasks/python/vision/gesture_recognizer.py +++ b/mediapipe/tasks/python/vision/gesture_recognizer.py @@ -80,7 +80,7 @@ class GestureRecognizerResult: def _build_recognition_result( output_packets: Mapping[str, packet_module.Packet]) -> GestureRecognizerResult: - """Consturcts a `GestureRecognizerResult` from output packets.""" + """Constructs a `GestureRecognizerResult` from output packets.""" gestures_proto_list = packet_getter.get_proto_list( output_packets[_HAND_GESTURE_STREAM_NAME]) handedness_proto_list = packet_getter.get_proto_list( @@ -270,9 +270,9 @@ class GestureRecognizer(base_vision_task_api.BaseVisionTaskApi): empty_packet.timestamp.value // _MICRO_SECONDS_PER_MILLISECOND) return - gesture_recognition_result = _build_recognition_result(output_packets) + gesture_recognizer_result = _build_recognition_result(output_packets) timestamp = output_packets[_HAND_GESTURE_STREAM_NAME].timestamp - options.result_callback(gesture_recognition_result, image, + options.result_callback(gesture_recognizer_result, image, timestamp.value // _MICRO_SECONDS_PER_MILLISECOND) task_info = _TaskInfo( diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts index 1275ae87..c24d1a7b 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts @@ -35,7 +35,7 @@ import {createMediaPipeLib, FileLocator, ImageSource, WasmModule} from '../../.. // Placeholder for internal dependency on trusted resource url import {GestureRecognizerOptions} from './gesture_recognizer_options'; -import {GestureRecognitionResult} from './gesture_recognizer_result'; +import {GestureRecognizerResult} from './gesture_recognizer_result'; export {ImageSource}; @@ -237,7 +237,7 @@ export class GestureRecognizer extends TaskRunner { * @return The detected gestures. */ recognize(imageSource: ImageSource, timestamp: number = performance.now()): - GestureRecognitionResult { + GestureRecognizerResult { this.gestures = []; this.landmarks = []; this.worldLandmarks = []; diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.ts index 08c8c293..7c295c9e 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.ts @@ -20,7 +20,7 @@ import {Landmark} from '../../../../tasks/web/components/containers/landmark'; /** * Represents the gesture recognition results generated by `GestureRecognizer`. */ -export declare interface GestureRecognitionResult { +export declare interface GestureRecognizerResult { /** Hand landmarks of detected hands. */ landmarks: Landmark[][];