From 2163920ee84e45d824fdba27edf4a4634d91cc2e Mon Sep 17 00:00:00 2001 From: MediaPipe Team Date: Thu, 9 Feb 2023 17:17:40 -0800 Subject: [PATCH] Minor updates to MediaPipe graph documentation: use Graph/CalculatorGraphConfig instead of GraphConfig and mention that node can be a subgraph. PiperOrigin-RevId: 508517281 --- docs/framework_concepts/graphs.md | 35 +++++++++++++++---------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/docs/framework_concepts/graphs.md b/docs/framework_concepts/graphs.md index b20a87467..8afec488c 100644 --- a/docs/framework_concepts/graphs.md +++ b/docs/framework_concepts/graphs.md @@ -12,26 +12,25 @@ nav_order: 2 {:toc} --- -## GraphConfig +## Graph -A `GraphConfig` is a specification that describes the topology and functionality -of a MediaPipe graph. In the specification, a node in the graph represents an -instance of a particular calculator. All the necessary configurations of the -node, such its type, inputs and outputs must be described in the specification. -Description of the node can also include several optional fields, such as +A `CalculatorGraphConfig` proto specifies the topology and functionality of a +MediaPipe graph. Each `node` in the graph represents a particular calculator or +subgraph, and specifies necessary configurations, such as registered +calculator/subgraph type, inputs, outputs and optional fields, such as node-specific options, input policy and executor, discussed in [Synchronization](synchronization.md). -`GraphConfig` has several other fields to configure the global graph-level -settings, eg, graph executor configs, number of threads, and maximum queue size +`CalculatorGraphConfig` has several other fields to configure global graph-level +settings, e.g. graph executor configs, number of threads, and maximum queue size of input streams. Several graph-level settings are useful for tuning the -performance of the graph on different platforms (eg, desktop v.s. mobile). For +performance of the graph on different platforms (e.g., desktop v.s. mobile). For instance, on mobile, attaching a heavy model-inference calculator to a separate executor can improve the performance of a real-time application since this enables thread locality. -Below is a trivial `GraphConfig` example where we have series of passthrough -calculators : +Below is a trivial `CalculatorGraphConfig` example where we have series of +passthrough calculators : ```proto # This graph named main_pass_throughcals_nosubgraph.pbtxt contains 4 @@ -65,7 +64,7 @@ To modularize a `CalculatorGraphConfig` into sub-modules and assist with re-use of perception solutions, a MediaPipe graph can be defined as a `Subgraph`. The public interface of a subgraph consists of a set of input and output streams similar to a calculator's public interface. The subgraph can then be included in -an `CalculatorGraphConfig` as if it were a calculator. When a MediaPipe graph is +a `CalculatorGraphConfig` as if it were a calculator. When a MediaPipe graph is loaded from a `CalculatorGraphConfig`, each subgraph node is replaced by the corresponding graph of calculators. As a result, the semantics and performance of the subgraph is identical to the corresponding graph of calculators. @@ -151,7 +150,7 @@ protobuf specified for a MediaPipe calculator. These "graph options" can be specified where a graph is invoked, and used to populate calculator options and subgraph options within the graph. -In a CalculatorGraphConfig, graph options can be specified for a subgraph +In a `CalculatorGraphConfig`, graph options can be specified for a subgraph exactly like calculator options, as shown below: ``` @@ -178,7 +177,7 @@ node { } ``` -In a CalculatorGraphConfig, graph options can be accepted and used to populate +In a `CalculatorGraphConfig`, graph options can be accepted and used to populate calculator options, as shown below: ``` @@ -188,7 +187,7 @@ graph_options: { node: { calculator: "ImageToTensorCalculator" - input_stream: "IMAGE:multi_backend_image" + input_stream: "IMAGE:image" node_options: { [type.googleapis.com/mediapipe.ImageToTensorCalculatorOptions] { keep_aspect_ratio: true @@ -247,9 +246,9 @@ NOTE: The current approach is experimental and subject to change. We welcome your feedback. Please use the `CalculatorGraphTest.Cycle` unit test in -`mediapipe/framework/calculator_graph_test.cc` as sample code. Shown -below is the cyclic graph in the test. The `sum` output of the adder is the sum -of the integers generated by the integer source calculator. +`mediapipe/framework/calculator_graph_test.cc` as sample code. Shown below is +the cyclic graph in the test. The `sum` output of the adder is the sum of the +integers generated by the integer source calculator. ![a cyclic graph that adds a stream of integers](https://mediapipe.dev/images/cyclic_integer_sum_graph.svg "A cyclic graph")