From 60e72bf1655689a67a2cc6ef0aa2a008f8401be1 Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Wed, 25 Jan 2023 20:19:27 +0530 Subject: [PATCH] Added MPPTextEmbedderOptions --- mediapipe/tasks/ios/text/text_embedder/BUILD | 27 +++++++++++ .../sources/MPPTextEmbedderOptions.h | 47 +++++++++++++++++++ .../sources/MPPTextEmbedderOptions.m | 28 +++++++++++ 3 files changed, 102 insertions(+) create mode 100644 mediapipe/tasks/ios/text/text_embedder/BUILD create mode 100644 mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.h create mode 100644 mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.m diff --git a/mediapipe/tasks/ios/text/text_embedder/BUILD b/mediapipe/tasks/ios/text/text_embedder/BUILD new file mode 100644 index 000000000..65cbde093 --- /dev/null +++ b/mediapipe/tasks/ios/text/text_embedder/BUILD @@ -0,0 +1,27 @@ +# Copyright 2023 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. + +package(default_visibility = ["//mediapipe/tasks:internal"]) + +licenses(["notice"]) + +objc_library( + name = "MPPTextEmbedderOptions", + srcs = ["sources/MPPTextEmbedderOptions.m"], + hdrs = ["sources/MPPTextEmbedderOptions.h"], + deps = ["//mediapipe/tasks/ios/core:MPPTaskOptions"], +) + + ], +) diff --git a/mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.h b/mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.h new file mode 100644 index 000000000..ce9fc8b20 --- /dev/null +++ b/mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.h @@ -0,0 +1,47 @@ +// Copyright 2023 The MediaPipe Authors. +// +// 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. + +#import + +#import "mediapipe/tasks/ios/core/sources/MPPTaskOptions.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Options for setting up a `MPPTextEmbedder`. + */ +NS_SWIFT_NAME(TextEmbedderptions) +@interface MPPTextEmbedderOptions : MPPTaskOptions + +/** + * @brief Sets whether L2 normalization should be performed on the returned embeddings. + * Use this option only if the model does not already contain a native L2_NORMALIZATION TF Lite Op. + * In most cases, this is already the case and L2 norm is thus achieved through TF Lite inference. + * + * NO by default. + */ +@property(nonatomic) BOOL l2Normalize; + +/** + * @brief Sets whether the returned embedding should be quantized to bytes via scalar quantization. + * Embeddings are implicitly assumed to be unit-norm and therefore any dimensions is guaranteed to + * have value in [-1.0, 1.0]. Use the `l2Normalize` property if this is not the case. + * + * NO by default. + */ +@property(nonatomic) BOOL quantize; + +@end + +NS_ASSUME_NONNULL_END diff --git a/mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.m b/mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.m new file mode 100644 index 000000000..6da3659f7 --- /dev/null +++ b/mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.m @@ -0,0 +1,28 @@ +// Copyright 2023 The MediaPipe Authors. +// +// 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. + +#import "mediapipe/tasks/ios/text/text_embedder/sources/MPPTextEmbedderOptions.h" + +@implementation MPPTextEmbedderOptions + +- (id)copyWithZone:(NSZone *)zone { + MPPTextEmbedderOptions *textEmbedderOptions = [super copyWithZone:zone]; + + textEmbedderOptions.l2Normalize = self.l2Normalize; + textEmbedderOptions.quantize = self.quantize; + + return textEmbedderOptions; +} + +@end