class_docstr: The CPS DeeplabV3P implementation based on PaddlePaddle.
  
  The original article refers to
  Xiaokang Chen, et, al. "Semi-Supervised Semantic Segmentation with Cross Pseudo Supervision"
   (https://arxiv.org/abs/2106.01226)
  
  Args:
      num_classes (int): The unique number of target classes.
      backbone_l (paddle.nn.Layer): Backbone network for branch1, currently support Resnet50/Resnet101.
      backbone_r (paddle.nn.Layer): Backbone network for branch2, currently support Resnet50/Resnet101.
      bn_eps (float): CPS model's batchnorm initialization used.
      bn_monentum (float): CPS model's batchnorm initialization used.
      backbone_indices (tuple, optional): Two values in the tuple indicate the indices of output of backbone.
         Default: (0, 3).
      aspp_ratios (tuple, optional): The dilation rate using in ASSP module.
          If output_stride=16, aspp_ratios should be set as (1, 6, 12, 18).
          If output_stride=8, aspp_ratios is (1, 12, 24, 36).
          Default: (1, 6, 12, 18).
      aspp_out_channels (int, optional): The output channels of ASPP module. Default: 256.
      align_corners (bool, optional): An argument of F.interpolate. It should be set to False when the feature size is even,
          e.g. 1024x512, otherwise it is True, e.g. 769x769. Default: True.
      pretrained (str, optional): The path or url of pretrained model. Default: None.
      data_format(str, optional): Data format that specifies the layout of input. It can be "NCHW" or "NHWC". Default: "NCHW".
code: def __init__(
      self,
      num_classes,
      backbone_l,
      backbone_r,
      bn_eps,
      bn_momentum,
      backbone_indices=(0, 3),
      aspp_ratios=(1, 6, 12, 18),
      aspp_out_channels=256,
      align_corners=True,
      pretrained=None,
      data_format="NCHW",
  ):
      super().__init__()
  
      self.backbone1 = backbone_l
      self.backbone2 = backbone_r
  
      self.branch1 = DeepLabV3P(
          num_classes=num_classes,
          backbone=self.backbone1,
          backbone_indices=backbone_indices,
          aspp_ratios=aspp_ratios,
          aspp_out_channels=aspp_out_channels,
          align_corners=align_corners,
          pretrained=pretrained,
          data_format=data_format,
      )
  
      self.branch2 = DeepLabV3P(
          num_classes=num_classes,
          backbone=self.backbone2,
          backbone_indices=backbone_indices,
          aspp_ratios=aspp_ratios,
          aspp_out_channels=aspp_out_channels,
          align_corners=align_corners,
          pretrained=pretrained,
          data_format=data_format,
      )
  
      self.bn_eps = bn_eps
      self.bn_momentum = bn_momentum
      self.cps_init_weight()
  
file_path: PaddleSeg/contrib/CrossPseudoSupervision/models/cps_deeplabv3p.py
imports: import paddle
  import paddle.nn
  from cvlibs import manager
  import models.initializer
  from paddleseg.models.deeplab import DeepLabV3P
label_desc: Use image node_id 1 to create a new CPSDeeplabV3P object from inherited base classes: nn with example: obj = CPSDeeplabV3P(num_classes, backbone_l, backbone_r, bn_eps, bn_momentum, backbone_indices, aspp_ratios, aspp_out_channels, align_corners, pretrained, data_format)