Move TextPreprocessing to "processors" folder.
PiperOrigin-RevId: 490532670
This commit is contained in:
parent
54d1744c8f
commit
bfa57310c4
|
@ -1,43 +0,0 @@
|
|||
# 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.
|
||||
|
||||
package(default_visibility = ["//mediapipe/tasks:internal"])
|
||||
|
||||
licenses(["notice"])
|
||||
|
||||
# TODO: Investigate rewriting the build rule to only link
|
||||
# the Bert Preprocessor if it's needed.
|
||||
cc_library(
|
||||
name = "text_preprocessing_graph",
|
||||
srcs = ["text_preprocessing_graph.cc"],
|
||||
hdrs = ["text_preprocessing_graph.h"],
|
||||
deps = [
|
||||
"//mediapipe/calculators/tensor:bert_preprocessor_calculator",
|
||||
"//mediapipe/calculators/tensor:bert_preprocessor_calculator_cc_proto",
|
||||
"//mediapipe/calculators/tensor:regex_preprocessor_calculator",
|
||||
"//mediapipe/calculators/tensor:regex_preprocessor_calculator_cc_proto",
|
||||
"//mediapipe/calculators/tensor:text_to_tensor_calculator",
|
||||
"//mediapipe/framework:subgraph",
|
||||
"//mediapipe/framework/api2:builder",
|
||||
"//mediapipe/framework/api2:port",
|
||||
"//mediapipe/framework/formats:tensor",
|
||||
"//mediapipe/tasks/cc/components/proto:text_preprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/core:model_resources",
|
||||
"//mediapipe/tasks/cc/metadata:metadata_extractor",
|
||||
"@com_google_absl//absl/status",
|
||||
"@com_google_absl//absl/status:statusor",
|
||||
"@com_google_absl//absl/strings",
|
||||
],
|
||||
alwayslink = 1,
|
||||
)
|
|
@ -133,3 +133,29 @@ cc_library(
|
|||
)
|
||||
|
||||
# TODO: Enable this test
|
||||
|
||||
# TODO: Investigate rewriting the build rule to only link
|
||||
# the Bert Preprocessor if it's needed.
|
||||
cc_library(
|
||||
name = "text_preprocessing_graph",
|
||||
srcs = ["text_preprocessing_graph.cc"],
|
||||
hdrs = ["text_preprocessing_graph.h"],
|
||||
deps = [
|
||||
"//mediapipe/calculators/tensor:bert_preprocessor_calculator",
|
||||
"//mediapipe/calculators/tensor:bert_preprocessor_calculator_cc_proto",
|
||||
"//mediapipe/calculators/tensor:regex_preprocessor_calculator",
|
||||
"//mediapipe/calculators/tensor:regex_preprocessor_calculator_cc_proto",
|
||||
"//mediapipe/calculators/tensor:text_to_tensor_calculator",
|
||||
"//mediapipe/framework:subgraph",
|
||||
"//mediapipe/framework/api2:builder",
|
||||
"//mediapipe/framework/api2:port",
|
||||
"//mediapipe/framework/formats:tensor",
|
||||
"//mediapipe/tasks/cc/components/processors/proto:text_preprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/core:model_resources",
|
||||
"//mediapipe/tasks/cc/metadata:metadata_extractor",
|
||||
"@com_google_absl//absl/status",
|
||||
"@com_google_absl//absl/status:statusor",
|
||||
"@com_google_absl//absl/strings",
|
||||
],
|
||||
alwayslink = 1,
|
||||
)
|
||||
|
|
|
@ -59,3 +59,12 @@ mediapipe_proto_library(
|
|||
"//mediapipe/framework:calculator_proto",
|
||||
],
|
||||
)
|
||||
|
||||
mediapipe_proto_library(
|
||||
name = "text_preprocessing_graph_options_proto",
|
||||
srcs = ["text_preprocessing_graph_options.proto"],
|
||||
deps = [
|
||||
"//mediapipe/framework:calculator_options_proto",
|
||||
"//mediapipe/framework:calculator_proto",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
|
||||
syntax = "proto2";
|
||||
|
||||
package mediapipe.tasks.components.proto;
|
||||
package mediapipe.tasks.components.processors.proto;
|
||||
|
||||
import "mediapipe/framework/calculator.proto";
|
||||
|
|
@ -12,7 +12,7 @@ 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.
|
||||
==============================================================================*/
|
||||
#include "mediapipe/tasks/cc/components/text_preprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
@ -25,13 +25,14 @@ limitations under the License.
|
|||
#include "mediapipe/framework/api2/port.h"
|
||||
#include "mediapipe/framework/formats/tensor.h"
|
||||
#include "mediapipe/framework/subgraph.h"
|
||||
#include "mediapipe/tasks/cc/components/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/core/model_resources.h"
|
||||
#include "mediapipe/tasks/cc/metadata/metadata_extractor.h"
|
||||
|
||||
namespace mediapipe {
|
||||
namespace tasks {
|
||||
namespace components {
|
||||
namespace processors {
|
||||
|
||||
namespace {
|
||||
|
||||
|
@ -41,7 +42,8 @@ using ::mediapipe::api2::SideInput;
|
|||
using ::mediapipe::api2::builder::Graph;
|
||||
using ::mediapipe::api2::builder::SideSource;
|
||||
using ::mediapipe::api2::builder::Source;
|
||||
using ::mediapipe::tasks::components::proto::TextPreprocessingGraphOptions;
|
||||
using ::mediapipe::tasks::components::processors::proto::
|
||||
TextPreprocessingGraphOptions;
|
||||
using ::mediapipe::tasks::core::ModelResources;
|
||||
using ::mediapipe::tasks::metadata::ModelMetadataExtractor;
|
||||
|
||||
|
@ -169,7 +171,7 @@ absl::StatusOr<int> GetMaxSeqLen(const tflite::SubGraph& model_graph) {
|
|||
}
|
||||
} // namespace
|
||||
|
||||
absl::Status ConfigureTextPreprocessingSubgraph(
|
||||
absl::Status ConfigureTextPreprocessingGraph(
|
||||
const ModelResources& model_resources,
|
||||
TextPreprocessingGraphOptions& options) {
|
||||
if (model_resources.GetTfLiteModel()->subgraphs()->size() != 1) {
|
||||
|
@ -200,8 +202,7 @@ absl::Status ConfigureTextPreprocessingSubgraph(
|
|||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
// A "mediapipe.tasks.components.TextPreprocessingSubgraph" performs text
|
||||
// preprocessing.
|
||||
// A TextPreprocessingGraph performs text preprocessing.
|
||||
// - Accepts a std::string input and outputs CPU tensors.
|
||||
//
|
||||
// Inputs:
|
||||
|
@ -216,9 +217,9 @@ absl::Status ConfigureTextPreprocessingSubgraph(
|
|||
// Vector containing the preprocessed input tensors for the TFLite model.
|
||||
//
|
||||
// The recommended way of using this subgraph is through the GraphBuilder API
|
||||
// using the 'ConfigureTextPreprocessing()' function. See header file for more
|
||||
// details.
|
||||
class TextPreprocessingSubgraph : public mediapipe::Subgraph {
|
||||
// using the 'ConfigureTextPreprocessingGraph()' function. See header file for
|
||||
// more details.
|
||||
class TextPreprocessingGraph : public mediapipe::Subgraph {
|
||||
public:
|
||||
absl::StatusOr<mediapipe::CalculatorGraphConfig> GetConfig(
|
||||
mediapipe::SubgraphContext* sc) override {
|
||||
|
@ -267,8 +268,9 @@ class TextPreprocessingSubgraph : public mediapipe::Subgraph {
|
|||
}
|
||||
};
|
||||
REGISTER_MEDIAPIPE_GRAPH(
|
||||
::mediapipe::tasks::components::TextPreprocessingSubgraph);
|
||||
::mediapipe::tasks::components::processors::TextPreprocessingGraph);
|
||||
|
||||
} // namespace processors
|
||||
} // namespace components
|
||||
} // namespace tasks
|
||||
} // namespace mediapipe
|
|
@ -13,26 +13,31 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
==============================================================================*/
|
||||
|
||||
#ifndef MEDIAPIPE_TASKS_CC_COMPONENTS_TEXT_PREPROCESSING_H_
|
||||
#define MEDIAPIPE_TASKS_CC_COMPONENTS_TEXT_PREPROCESSING_H_
|
||||
#ifndef MEDIAPIPE_TASKS_CC_COMPONENTS_PROCESSORS_TEXT_PREPROCESSING_GRAPH_H_
|
||||
#define MEDIAPIPE_TASKS_CC_COMPONENTS_PROCESSORS_TEXT_PREPROCESSING_GRAPH_H_
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "mediapipe/tasks/cc/components/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/core/model_resources.h"
|
||||
|
||||
// Configures a TextPreprocessing subgraph using the provided `model_resources`
|
||||
namespace mediapipe {
|
||||
namespace tasks {
|
||||
namespace components {
|
||||
namespace processors {
|
||||
|
||||
// Configures a TextPreprocessingGraph using the provided `model_resources`
|
||||
// and TextPreprocessingGraphOptions.
|
||||
// - Accepts a std::string input and outputs CPU tensors.
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// auto& preprocessing =
|
||||
// graph.AddNode("mediapipe.tasks.components.TextPreprocessingSubgraph");
|
||||
// graph.AddNode("mediapipe.tasks.components.processors.TextPreprocessingSubgraph");
|
||||
// MP_RETURN_IF_ERROR(ConfigureTextPreprocessingSubgraph(
|
||||
// model_resources,
|
||||
// &preprocessing.GetOptions<TextPreprocessingGraphOptions>()));
|
||||
//
|
||||
// The resulting TextPreprocessing subgraph has the following I/O:
|
||||
// The resulting TextPreprocessingGraph has the following I/O:
|
||||
// Inputs:
|
||||
// TEXT - std::string
|
||||
// The text to preprocess.
|
||||
|
@ -43,16 +48,13 @@ limitations under the License.
|
|||
// Outputs:
|
||||
// TENSORS - std::vector<Tensor>
|
||||
// Vector containing the preprocessed input tensors for the TFLite model.
|
||||
namespace mediapipe {
|
||||
namespace tasks {
|
||||
namespace components {
|
||||
|
||||
absl::Status ConfigureTextPreprocessingSubgraph(
|
||||
const tasks::core::ModelResources& model_resources,
|
||||
tasks::components::proto::TextPreprocessingGraphOptions& options);
|
||||
absl::Status ConfigureTextPreprocessingGraph(
|
||||
const core::ModelResources& model_resources,
|
||||
proto::TextPreprocessingGraphOptions& options);
|
||||
|
||||
} // namespace processors
|
||||
} // namespace components
|
||||
} // namespace tasks
|
||||
} // namespace mediapipe
|
||||
|
||||
#endif // MEDIAPIPE_TASKS_CC_COMPONENTS_TEXT_PREPROCESSING_H_
|
||||
#endif // MEDIAPIPE_TASKS_CC_COMPONENTS_PROCESSORS_TEXT_PREPROCESSING_GRAPH_H_
|
|
@ -22,12 +22,3 @@ mediapipe_proto_library(
|
|||
name = "segmenter_options_proto",
|
||||
srcs = ["segmenter_options.proto"],
|
||||
)
|
||||
|
||||
mediapipe_proto_library(
|
||||
name = "text_preprocessing_graph_options_proto",
|
||||
srcs = ["text_preprocessing_graph_options.proto"],
|
||||
deps = [
|
||||
"//mediapipe/framework:calculator_options_proto",
|
||||
"//mediapipe/framework:calculator_proto",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -52,11 +52,11 @@ cc_library(
|
|||
"//mediapipe/framework:calculator_framework",
|
||||
"//mediapipe/framework/api2:builder",
|
||||
"//mediapipe/framework/api2:port",
|
||||
"//mediapipe/tasks/cc/components:text_preprocessing_graph",
|
||||
"//mediapipe/tasks/cc/components/containers/proto:classifications_cc_proto",
|
||||
"//mediapipe/tasks/cc/components/processors:classification_postprocessing_graph",
|
||||
"//mediapipe/tasks/cc/components/processors:text_preprocessing_graph",
|
||||
"//mediapipe/tasks/cc/components/processors/proto:classification_postprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/components/proto:text_preprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/components/processors/proto:text_preprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/core:model_resources",
|
||||
"//mediapipe/tasks/cc/core:model_resources_calculator",
|
||||
"//mediapipe/tasks/cc/core:model_task_graph",
|
||||
|
|
|
@ -25,8 +25,8 @@ limitations under the License.
|
|||
#include "mediapipe/tasks/cc/components/containers/proto/classifications.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/classification_postprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/proto/classification_postprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/text_preprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/core/model_resources.h"
|
||||
#include "mediapipe/tasks/cc/core/model_task_graph.h"
|
||||
#include "mediapipe/tasks/cc/core/proto/model_resources_calculator.pb.h"
|
||||
|
@ -115,12 +115,12 @@ class TextClassifierGraph : public core::ModelTaskGraph {
|
|||
Graph& graph) {
|
||||
// Adds preprocessing calculators and connects them to the text input
|
||||
// stream.
|
||||
auto& preprocessing =
|
||||
graph.AddNode("mediapipe.tasks.components.TextPreprocessingSubgraph");
|
||||
MP_RETURN_IF_ERROR(components::ConfigureTextPreprocessingSubgraph(
|
||||
auto& preprocessing = graph.AddNode(
|
||||
"mediapipe.tasks.components.processors.TextPreprocessingGraph");
|
||||
MP_RETURN_IF_ERROR(components::processors::ConfigureTextPreprocessingGraph(
|
||||
model_resources,
|
||||
preprocessing.GetOptions<
|
||||
tasks::components::proto::TextPreprocessingGraphOptions>()));
|
||||
components::processors::proto::TextPreprocessingGraphOptions>()));
|
||||
text_in >> preprocessing.In(kTextTag);
|
||||
|
||||
// Adds both InferenceCalculator and ModelResourcesCalculator.
|
||||
|
|
|
@ -54,11 +54,11 @@ cc_library(
|
|||
"//mediapipe/framework:calculator_framework",
|
||||
"//mediapipe/framework/api2:builder",
|
||||
"//mediapipe/framework/api2:port",
|
||||
"//mediapipe/tasks/cc/components:text_preprocessing_graph",
|
||||
"//mediapipe/tasks/cc/components/containers/proto:embeddings_cc_proto",
|
||||
"//mediapipe/tasks/cc/components/processors:embedding_postprocessing_graph",
|
||||
"//mediapipe/tasks/cc/components/processors:text_preprocessing_graph",
|
||||
"//mediapipe/tasks/cc/components/processors/proto:embedding_postprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/components/proto:text_preprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/components/processors/proto:text_preprocessing_graph_options_cc_proto",
|
||||
"//mediapipe/tasks/cc/core:model_resources",
|
||||
"//mediapipe/tasks/cc/core:model_task_graph",
|
||||
"//mediapipe/tasks/cc/core/proto:model_resources_calculator_cc_proto",
|
||||
|
|
|
@ -23,8 +23,8 @@ limitations under the License.
|
|||
#include "mediapipe/tasks/cc/components/containers/proto/embeddings.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/embedding_postprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/proto/embedding_postprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/text_preprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/proto/text_preprocessing_graph_options.pb.h"
|
||||
#include "mediapipe/tasks/cc/components/processors/text_preprocessing_graph.h"
|
||||
#include "mediapipe/tasks/cc/core/model_resources.h"
|
||||
#include "mediapipe/tasks/cc/core/model_task_graph.h"
|
||||
#include "mediapipe/tasks/cc/core/proto/model_resources_calculator.pb.h"
|
||||
|
@ -107,12 +107,12 @@ class TextEmbedderGraph : public core::ModelTaskGraph {
|
|||
Graph& graph) {
|
||||
// Adds preprocessing calculators and connects them to the text input
|
||||
// stream.
|
||||
auto& preprocessing =
|
||||
graph.AddNode("mediapipe.tasks.components.TextPreprocessingSubgraph");
|
||||
MP_RETURN_IF_ERROR(components::ConfigureTextPreprocessingSubgraph(
|
||||
auto& preprocessing = graph.AddNode(
|
||||
"mediapipe.tasks.components.processors.TextPreprocessingGraph");
|
||||
MP_RETURN_IF_ERROR(components::processors::ConfigureTextPreprocessingGraph(
|
||||
model_resources,
|
||||
preprocessing.GetOptions<
|
||||
tasks::components::proto::TextPreprocessingGraphOptions>()));
|
||||
components::processors::proto::TextPreprocessingGraphOptions>()));
|
||||
text_in >> preprocessing.In(kTextTag);
|
||||
|
||||
// Adds both InferenceCalculator and ModelResourcesCalculator.
|
||||
|
|
Loading…
Reference in New Issue
Block a user