class_docstr: The OCRNet implementation based on PaddlePaddle.
  The differences from OCRNet at OCRNet at paddleseg/models/ocrnet.py are
  
      1. The convolution bias is set to False
  
      2. droput_ rate in SpatialOCRModule is 0.05
  
      3. OCRHead will return `ocr`.
  
      4. Will not Logit_ List size to the original size, when MS_ attention=True
  
  The original article refers to
      Yuan, Yuhui, et al. "Object-Contextual Representations for Semantic Segmentation"
      (https://arxiv.org/pdf/1909.11065.pdf)
  
  Args:
      num_classes (int): The unique number of target classes.
      backbone (Paddle.nn.Layer): Backbone network.
      backbone_indices (tuple): A tuple indicates the indices of output of backbone.
          It can be either one or two values, if two values, the first index will be taken as
          a deep-supervision feature in auxiliary layer; the second one will be taken as
          input of pixel representation. If one value, it is taken by both above.
      ocr_mid_channels (int, optional): The number of middle channels in OCRHead. Default: 512.
      ocr_key_channels (int, optional): The number of key channels in ObjectAttentionBlock. Default: 256.
      align_corners (bool): An argument of F.interpolate. It should be set to False when the output size of feature
          is even, e.g. 1024x512, otherwise it is True, e.g. 769x769.  Default: False.
code: def __init__(
      self,
      num_classes,
      backbone,
      backbone_indices,
      ocr_mid_channels=512,
      ocr_key_channels=256,
      align_corners=False,
      ms_attention=False,
  ):
      super().__init__()
  
      self.backbone = backbone
      self.backbone_indices = backbone_indices
      in_channels = [
          self.backbone.feat_channels[i] for i in backbone_indices
      ]
  
      self.head = OCRHead(
          num_classes=num_classes,
          in_channels=in_channels,
          ocr_mid_channels=ocr_mid_channels,
          ocr_key_channels=ocr_key_channels,
          ms_attention=ms_attention,
      )
  
      self.align_corners = align_corners
      self.ms_attention = ms_attention
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager, param_init
  from paddleseg.models import layers
label_desc: Use image node_id 1 to create a new OCRNetNV object from inherited base classes: nn with example: obj = OCRNetNV(num_classes, backbone, backbone_indices, ocr_mid_channels, ocr_key_channels, align_corners, ms_attention)