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.
class_docstr_tok: ["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: int = 21,
      backbone_indices: Tuple[int] = (2, 3),
      align_corners: bool = False,
      pretrained: str = None,
  ):
      super(DANet, self).__init__()
  
      self.backbone = ResNet50_vd()
      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.transforms = T.Compose([T.Normalize()])
  
      if pretrained is not None:
          model_dict = paddle.load(pretrained)
          self.set_dict(model_dict)
          print("load custom parameters success")
  
      else:
          checkpoint = os.path.join(self.directory, "model.pdparams")
          model_dict = paddle.load(checkpoint)
          self.set_dict(model_dict)
          print("load pretrained parameters success")
  
imports: import os
  from typing import Union, List, Tuple
  import paddle
  from paddle import nn
  import paddle.nn.functional
  import numpy
  from paddlehub.module.module import moduleinfo
  import paddlehub.vision.segmentation_transforms
  from paddlehub.module.cv_module import ImageSegmentationModule
  from danet_resnet50_voc.resnet import ResNet50_vd
  import danet_resnet50_voc.layers
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_indices, align_corners, pretrained)