class_docstr: Text-query-based OWL-ViT model.
  
  This module computes joint text and image embeddings which are then
  used for localized prediction of bounding boxes and classes.
  
  Attributes:
    body_configs: Configurations of the image-text module.
    objectness_head_configs: Configurations for the (optional) objectness head.
    mask_head_configs: Configurations for the (optional) mask head.
    normalize: Whether to normalize the output of the model and the
      label_embeddings before computing the class logits.
    box_bias: Type of box bias - one of 'location', 'size' or 'both'.
class_docstr_tok: ["Text-query-based","OWL-ViT","model",".","This","module","computes","joint","text","and","image","embeddings","which","are","then","used","for","localized","prediction","of","bounding","boxes","and","classes",".","Attributes",":","body_configs",":","Configurations","of","the","image-text","module",".","objectness_head_configs",":","Configurations","for","the","(","optional",")","objectness","head",".","mask_head_configs",":","Configurations","for","the","(","optional",")","mask","head",".","normalize",":","Whether","to","normalize","the","output","of","the","model","and","the","label_embeddings","before","computing","the","class","logits",".","box_bias",":","Type","of","box","bias","-","one","of","'location","'",",","'size","'","or","'both","'","."]
code: def setup(self):
      self._embedder = layers.ClipImageTextEmbedder(
          self.body_configs, name="backbone"
      )
  
      if self.objectness_head_configs is not None:
          self._objectness_head = layers.PredictorMLP(
              mlp_dim=None,
              out_dim=1,
              num_layers=3,
              out_activation=None,
              name="objectness_head",
          )
  
      self._class_head = layers.ClassPredictor(
          out_dim=clip_model.CONFIGS[self.body_configs.variant][
              "embed_dim"
          ],
          normalize=self.normalize,
          name="class_head",
      )
  
      self._box_head = layers.PredictorMLP(
          mlp_dim=None,
          out_dim=4,
          num_layers=3,
          out_activation=None,
          name="obj_box_head",
      )
  
      if self.mask_head_configs is not None:
          self._mask_head = layers.BoxMaskHead(
              **self.mask_head_configs,  # pylint: disable=not-a-mapping
              name="obj_mask_head",
          )
  
imports: import copy
  from typing import Any, Dict, List, Mapping, Optional
  import flax.linen
  from flax.training import checkpoints
  import jax
  import jax.numpy
  import ml_collections
  from scenic.projects.owl_vit import layers
  from scenic.projects.owl_vit import matching_base_models
  from scenic.projects.owl_vit import utils
  from scenic.projects.owl_vit.clip import model
  from scenic.projects.owl_vit.clip import tokenizer
label_desc: Use image node_id 3 for calling the TextZeroShotDetectionModule obj's underlying member method code with example usage: obj.setup() without return types