docstr: Predicts masks given an image and prompt embeddings, using a transformer architecture.
  
  Args:
      transformer_dim: the channel dimension of the transformer
      transformer: the transformer used to predict masks
      num_multimask_outputs: the number of masks to predict when disambiguating masks
      activation: the type of activation to use when upscaling masks
      iou_head_depth: the depth of the MLP used to predict mask quality
      iou_head_hidden_dim: the hidden dimension of the MLP used to predict mask quality
docstr_tok: ["Predicts","masks","given","an","image","and","prompt","embeddings",",","using","a","transformer","architecture",".","Args",":","transformer_dim",":","the","channel","dimension","of","the","transformer","transformer",":","the","transformer","used","to","predict","masks","num_multimask_outputs",":","the","number","of","masks","to","predict","when","disambiguating","masks","activation",":","the","type","of","activation","to","use","when","upscaling","masks","iou_head_depth",":","the","depth","of","the","MLP","used","to","predict","mask","quality","iou_head_hidden_dim",":","the","hidden","dimension","of","the","MLP","used","to","predict","mask","quality"]
code: def __init__(
      self,
      *,
      transformer_dim: int,
      transformer: Module,
      num_multimask_outputs: int = 3,
      activation: type[Module] = nn.GELU,
      iou_head_depth: int = 3,
      iou_head_hidden_dim: int = 256,
  ) -> None:
      """Predicts masks given an image and prompt embeddings, using a transformer architecture.
  
      Args:
          transformer_dim: the channel dimension of the transformer
          transformer: the transformer used to predict masks
          num_multimask_outputs: the number of masks to predict when disambiguating masks
          activation: the type of activation to use when upscaling masks
          iou_head_depth: the depth of the MLP used to predict mask quality
          iou_head_hidden_dim: the hidden dimension of the MLP used to predict mask quality
      """
      super().__init__()
      self.transformer_dim = transformer_dim
      self.transformer = transformer
  
      self.num_multimask_outputs = num_multimask_outputs
  
      self.iou_token = nn.Embedding(1, transformer_dim)
      self.num_mask_tokens = num_multimask_outputs + 1
      self.mask_tokens = nn.Embedding(
          self.num_mask_tokens, transformer_dim
      )
  
      self.output_upscaling = nn.Sequential(
          nn.ConvTranspose2d(
              transformer_dim,
              transformer_dim // 4,
              kernel_size=2,
              stride=2,
          ),
          LayerNorm2d(transformer_dim // 4),
          activation(),
          nn.ConvTranspose2d(
              transformer_dim // 4,
              transformer_dim // 8,
              kernel_size=2,
              stride=2,
          ),
          activation(),
      )
      self.output_hypernetworks_mlps = nn.ModuleList(
          [
              MLP(
                  transformer_dim,
                  transformer_dim,
                  transformer_dim // 8,
                  3,
              )
              for i in range(self.num_mask_tokens)
          ]
      )
  
      self.iou_prediction_head = MLP(
          transformer_dim,
          iou_head_hidden_dim,
          self.num_mask_tokens,
          iou_head_depth,
      )
  
file_path: kornia/kornia/contrib/models/sam/architecture/mask_decoder.py
imports: from __future__ import annotations
  import torch
  from torch import nn
  from kornia.contrib.models.common import MLP, LayerNorm2d
  from kornia.core import Module, Tensor, concatenate, stack
label_desc: Use image node_id 1 to create a new MaskDecoder object from inherited base classes: Module with example: obj = MaskDecoder()