code: def __init__(
      self,
      backbone="resnet50",
      norm_layer=nn.BatchNorm2d,
      backbone_norm_layer=None,
      ch=256,
      project_dropout=0.5,
      inference_mode=False,
      **kwargs,
  ):
      super(DeepLabV3Plus, self).__init__()
      if backbone_norm_layer is None:
          backbone_norm_layer = norm_layer
  
      self.backbone_name = backbone
      self.norm_layer = norm_layer
      self.backbone_norm_layer = backbone_norm_layer
      self.inference_mode = False
      self.ch = ch
      self.aspp_in_channels = 2048
      self.skip_project_in_channels = 256  # layer 1 out_channels
  
      self._kwargs = kwargs
      if backbone == "resnet34":
          self.aspp_in_channels = 512
          self.skip_project_in_channels = 64
  
      self.backbone = ResNetBackbone(
          backbone=self.backbone_name,
          pretrained_base=False,
          norm_layer=self.backbone_norm_layer,
          **kwargs,
      )
  
      self.head = _DeepLabHead(
          in_channels=ch + 32,
          mid_channels=ch,
          out_channels=ch,
          norm_layer=self.norm_layer,
      )
      self.skip_project = _SkipProject(
          self.skip_project_in_channels, 32, norm_layer=self.norm_layer
      )
      self.aspp = _ASPP(
          in_channels=self.aspp_in_channels,
          atrous_rates=[12, 24, 36],
          out_channels=ch,
          project_dropout=project_dropout,
          norm_layer=self.norm_layer,
      )
  
      if inference_mode:
          self.set_prediction_mode()
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from contextlib import ExitStack
  from .resnet import ResNetBackbone
  from .basic_blocks import select_activation_function
  from .basic_blocks import SeparableConv2d
label_desc: Use image node_id 1 to create a new DeepLabV3Plus object from inherited base classes: nn with example: obj = DeepLabV3Plus(backbone, norm_layer, backbone_norm_layer, ch, project_dropout, inference_mode)