class_docstr: DeepLabV3Plus
  
  Parameters
  ----------
  nclass : int
      Number of categories for the training dataset.
  backbone : string
      Pre-trained dilated backbone network type (default:'xception').
  norm_layer : object
      Normalization layer used in backbone network (default: :class:`mxnet.gluon.nn.BatchNorm`;
      for Synchronized Cross-GPU BachNormalization).
  aux : bool
      Auxiliary loss.
  
  
  Reference:
  
      Chen, Liang-Chieh, et al. "Encoder-Decoder with Atrous Separable Convolution for Semantic
      Image Segmentation."
class_docstr_tok: ["DeepLabV3Plus","Parameters","--","--","--","--","--","nclass",":","int","Number","of","categories","for","the","training","dataset",".","backbone",":","string","Pre-trained","dilated","backbone","network","type","(","default",":","'xception","'",")",".","norm_layer",":","object","Normalization","layer","used","in","backbone","network","(","default",":",":","class",":","`","mxnet.gluon.nn.BatchNorm","`",";","for","Synchronized","Cross-GPU","BachNormalization",")",".","aux",":","bool","Auxiliary","loss",".","Reference",":","Chen",",","Liang-Chieh",",","et","al",".","``","Encoder-Decoder","with","Atrous","Separable","Convolution","for","Semantic","Image","Segmentation",".","''"]
code: def __init__(
      self,
      nclass,
      backbone="xception",
      aux=True,
      ctx=cpu(),
      pretrained_base=True,
      height=None,
      width=None,
      base_size=576,
      crop_size=512,
      dilated=True,
      **kwargs,
  ):
      super(DeepLabV3Plus, self).__init__()
      self.aux = aux
      height = height if height is not None else crop_size
      width = width if width is not None else crop_size
      output_stride = 8 if dilated else 32
      with self.name_scope():
          pretrained = get_xcetption(
              pretrained=pretrained_base,
              output_stride=output_stride,
              ctx=ctx,
              **kwargs,
          )
          kwargs.pop("root", None)
          # base network
          self.conv1 = pretrained.conv1
          self.bn1 = pretrained.bn1
          self.relu = pretrained.relu
          self.conv2 = pretrained.conv2
          self.bn2 = pretrained.bn2
          self.block1 = pretrained.block1
          self.block2 = pretrained.block2
          self.block3 = pretrained.block3
          # Middle flow
          self.midflow = pretrained.midflow
          # Exit flow
          self.block20 = pretrained.block20
          self.conv3 = pretrained.conv3
          self.bn3 = pretrained.bn3
          self.conv4 = pretrained.conv4
          self.bn4 = pretrained.bn4
          self.conv5 = pretrained.conv5
          self.bn5 = pretrained.bn5
  
          # deeplabv3 plus
          self.head = _DeepLabHead(
              nclass, height=height // 4, width=width // 4, **kwargs
          )
          self.head.initialize(ctx=ctx)
          self.head.collect_params().setattr("lr_mult", 10)
          if self.aux:
              self.auxlayer = _FCNHead(728, nclass, **kwargs)
              self.auxlayer.initialize(ctx=ctx)
              self.auxlayer.collect_params().setattr("lr_mult", 10)
      self._up_kwargs = {"height": height, "width": width}
      self.base_size = base_size
      self.crop_size = crop_size
  
imports: from mxnet.gluon import nn
  from mxnet.context import cpu
  from mxnet.gluon.nn import HybridBlock
  from mxnet import gluon
  from .fcn import _FCNHead
  from .xception import get_xcetption
label_desc: Use image node_id 1 to create a new DeepLabV3Plus object from inherited base classes: HybridBlock with example: obj = DeepLabV3Plus(nclass, backbone, aux, ctx, pretrained_base, height, width, base_size, crop_size, dilated)