class_docstr: The DANet implementation based on PaddlePaddle.
  
  The original article refers to
  Fu, jun, et al. "Dual Attention Network for Scene Segmentation"
  (https://arxiv.org/pdf/1809.02983.pdf)
  
  Args:
      num_classes (int): The unique number of target classes.
      backbone (Paddle.nn.Layer): A backbone network.
      backbone_indices (tuple): The values in the tuple indicate the indices of
          output of backbone.
      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.
      pretrained (str, optional): The path or url of pretrained model. Default: None.
code: def __init__(
      self,
      num_classes,
      backbone,
      backbone_indices,
      align_corners=False,
      pretrained=None,
  ):
      super().__init__()
  
      self.backbone = backbone
      self.backbone_indices = backbone_indices
      in_channels = [
          self.backbone.feat_channels[i] for i in backbone_indices
      ]
  
      self.head = DAHead(
          num_classes=num_classes, in_channels=in_channels
      )
  
      self.align_corners = align_corners
      self.pretrained = pretrained
      self.init_weight()
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.utils import utils
label_desc: Use image node_id 1 to create a new DANet object from inherited base classes: nn with example: obj = DANet(num_classes, backbone, backbone_indices, align_corners, pretrained)