class_docstr: Class that performs embedding extraction on images.
  
  The API expects a TFLite model with optional, but strongly recommended,
  TFLite Model Metadata.
  
  Input tensor:
    (kTfLiteUInt8/kTfLiteFloat32)
    - image input of size `[batch x height x width x channels]`.
    - batch inference is not supported (`batch` is required to be 1).
    - only RGB inputs are supported (`channels` is required to be 3).
    - if type is kTfLiteFloat32, NormalizationOptions are required to be
      attached to the metadata for input normalization.
  At least one output tensor with:
    (kTfLiteUInt8/kTfLiteFloat32)
    - `N` components corresponding to the `N` dimensions of the returned
      feature vector for this output layer.
    - Either 2 or 4 dimensions, i.e. `[1 x N]` or `[1 x 1 x 1 x N]`.
class_docstr_tok: ["Class","that","performs","embedding","extraction","on","images",".","The","API","expects","a","TFLite","model","with","optional",",","but","strongly","recommended",",","TFLite","Model","Metadata",".","Input","tensor",":","(","kTfLiteUInt8\/kTfLiteFloat32",")","-","image","input","of","size","`","[","batch","x","height","x","width","x","channels","]","`",".","-","batch","inference","is","not","supported","(","`","batch","`","is","required","to","be","1",")",".","-","only","RGB","inputs","are","supported","(","`","channels","`","is","required","to","be","3",")",".","-","if","type","is","kTfLiteFloat32",",","NormalizationOptions","are","required","to","be","attached","to","the","metadata","for","input","normalization",".","At","least","one","output","tensor","with",":","(","kTfLiteUInt8\/kTfLiteFloat32",")","-","`","N","`","components","corresponding","to","the","`","N","`","dimensions","of","the","returned","feature","vector","for","this","output","layer",".","-","Either","2","or","4","dimensions",",","i.e",".","`","[","1","x","N","]","`","or","`","[","1","x","1","x","1","x","N","]","`","."]
docstr: Creates the `ImageEmbedder` object from image embedder options.
  
  Args:
    options: Options for the image embedder task.
  
  Returns:
    `ImageEmbedder` object that's created from `options`.
  
  Raises:
    ValueError: If failed to create `ImageEmbedder` object from
      `ImageEmbedderOptions` such as missing the model.
    RuntimeError: If other types of error occurred.
docstr_tok: ["Creates","the","`","ImageEmbedder","`","object","from","image","embedder","options",".","Args",":","options",":","Options","for","the","image","embedder","task",".","Returns",":","`","ImageEmbedder","`","object","that","'s","created","from","`","options","`",".","Raises",":","ValueError",":","If","failed","to","create","`","ImageEmbedder","`","object","from","`","ImageEmbedderOptions","`","such","as","missing","the","model",".","RuntimeError",":","If","other","types","of","error","occurred","."]
code: def create_from_options(
      cls, options: ImageEmbedderOptions
  ) -> "ImageEmbedder":
      """Creates the `ImageEmbedder` object from image embedder options.
  
      Args:
        options: Options for the image embedder task.
  
      Returns:
        `ImageEmbedder` object that's created from `options`.
  
      Raises:
        ValueError: If failed to create `ImageEmbedder` object from
          `ImageEmbedderOptions` such as missing the model.
        RuntimeError: If other types of error occurred.
      """
  
      def packets_callback(
          output_packets: Mapping[str, packet_module.Packet]
      ):
          if output_packets[_IMAGE_OUT_STREAM_NAME].is_empty():
              return
  
          embedding_result_proto = embeddings_pb2.EmbeddingResult()
          embedding_result_proto.CopyFrom(
              packet_getter.get_proto(
                  output_packets[_EMBEDDINGS_OUT_STREAM_NAME]
              )
          )
  
          image = packet_getter.get_image(
              output_packets[_IMAGE_OUT_STREAM_NAME]
          )
          timestamp = output_packets[_IMAGE_OUT_STREAM_NAME].timestamp
          options.result_callback(
              ImageEmbedderResult.create_from_pb2(
                  embedding_result_proto
              ),
              image,
              timestamp.value // _MICRO_SECONDS_PER_MILLISECOND,
          )
  
      task_info = _TaskInfo(
          task_graph=_TASK_GRAPH_NAME,
          input_streams=[
              ":".join([_IMAGE_TAG, _IMAGE_IN_STREAM_NAME]),
              ":".join([_NORM_RECT_TAG, _NORM_RECT_STREAM_NAME]),
          ],
          output_streams=[
              ":".join([_EMBEDDINGS_TAG, _EMBEDDINGS_OUT_STREAM_NAME]),
              ":".join([_IMAGE_TAG, _IMAGE_OUT_STREAM_NAME]),
          ],
          task_options=options,
      )
      return cls(
          task_info.generate_graph_config(
              enable_flow_limiting=options.running_mode
              == _RunningMode.LIVE_STREAM
          ),
          options.running_mode,
          packets_callback if options.result_callback else None,
      )
  
imports: import dataclasses
  from typing import Callable, Mapping, Optional
  from mediapipe.python import packet_creator
  from mediapipe.python import packet_getter
  from mediapipe.python._framework_bindings import image
  from mediapipe.python._framework_bindings import packet
  from mediapipe.tasks.cc.components.containers.proto import embeddings_pb2
  from mediapipe.tasks.cc.components.processors.proto import embedder_options_pb2
  from mediapipe.tasks.cc.vision.image_embedder.proto import image_embedder_graph_options_pb2
  from mediapipe.tasks.python.components.containers import embedding_result
  from mediapipe.tasks.python.components.utils import cosine_similarity
  from mediapipe.tasks.python.core import base_options
  from mediapipe.tasks.python.core import task_info
  from mediapipe.tasks.python.core.optional_dependencies import doc_controls
  from mediapipe.tasks.python.vision.core import base_vision_task_api
  from mediapipe.tasks.python.vision.core import image_processing_options
  from mediapipe.tasks.python.vision.core import vision_task_running_mode
label_desc: Use image node_id 2 for calling the ImageEmbedder obj's underlying member method code with example usage: obj.create_from_options(cls, options) and returns: cls