class_docstr: Multi-level fused semantic segmentation head.
  
  .. code-block:: none
  
      in_1 -> 1x1 conv ---
                          |
      in_2 -> 1x1 conv -- |
                         ||
      in_3 -> 1x1 conv - ||
                        |||                  /-> 1x1 conv (mask prediction)
      in_4 -> 1x1 conv -----> 3x3 convs (*4)
                          |                  \-> 1x1 conv (feature)
      in_5 -> 1x1 conv ---
class_docstr_tok: ["Multi-level","fused","semantic","segmentation","head",".","..","code-block",":",":","none","in_1","-",">","1x1","conv","--","-","|","in_2","-",">","1x1","conv","--","|","||","in_3","-",">","1x1","conv","-","||","|||","\/-",">","1x1","conv","(","mask","prediction",")","in_4","-",">","1x1","conv","--","--","-",">","3x3","convs","(","*","4",")","|","\\-",">","1x1","conv","(","feature",")","in_5","-",">","1x1","conv","--","-"]
docstr: Forward function.
  
  Args:
      feats (tuple[Tensor]): Multi scale feature maps.
  
  Returns:
      tuple[Tensor]:
  
          - mask_preds (Tensor): Predicted mask logits.
          - x (Tensor): Fused feature.
docstr_tok: ["Forward","function",".","Args",":","feats","(","tuple","[","Tensor","]",")",":","Multi","scale","feature","maps",".","Returns",":","tuple","[","Tensor","]",":","-","mask_preds","(","Tensor",")",":","Predicted","mask","logits",".","-","x","(","Tensor",")",":","Fused","feature","."]
code: def forward(self, feats: Tuple[Tensor]) -> Tuple[Tensor]:
      """Forward function.
  
      Args:
          feats (tuple[Tensor]): Multi scale feature maps.
  
      Returns:
          tuple[Tensor]:
  
              - mask_preds (Tensor): Predicted mask logits.
              - x (Tensor): Fused feature.
      """
      x = self.lateral_convs[self.fusion_level](
          feats[self.fusion_level]
      )
      fused_size = tuple(x.shape[-2:])
      for i, feat in enumerate(feats):
          if i != self.fusion_level:
              feat = F.interpolate(
                  feat,
                  size=fused_size,
                  mode="bilinear",
                  align_corners=True,
              )
              # fix runtime error of "+=" inplace operation in PyTorch 1.10
              x = x + self.lateral_convs[i](feat)
  
      for i in range(self.num_convs):
          x = self.convs[i](x)
  
      mask_preds = self.conv_logits(x)
      x = self.conv_embedding(x)
      return mask_preds, x
  
file_path: mmdetection/mmdet/models/roi_heads/mask_heads/fused_semantic_head.py
imports: import warnings
  from typing import Tuple
  import torch.nn
  import torch.nn.functional
  from mmcv.cnn import ConvModule
  from mmengine.config import ConfigDict
  from mmengine.model import BaseModule
  from torch import Tensor
  from mmdet.registry import MODELS
  from mmdet.utils import MultiConfig, OptConfigType
label_desc: Use image node_id 2 for calling the FusedSemanticHead obj's underlying member method code with example usage: obj.forward(feats) and returns: mask_preds,  x