class_docstr: The DecoupledSegNetHead implementation based on PaddlePaddle.
  
  Args:
      num_classes (int): The unique number of target classes.
      backbone_indices (tuple): Two values in the tuple indicate the indices of output of backbone.
          the first index will be taken as a low-level feature in Edge presevation component;
          the second one will be taken as input of ASPP component.
      backbone_channels (tuple): The channels of output of backbone.
      aspp_ratios (tuple): The dilation rates using in ASSP module.
      aspp_out_channels (int): The output channels of ASPP module.
      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.
code: def forward(self, feat_list):
      fine_fea = feat_list[self.backbone_indices[0]]
      fine_size = paddle.shape(fine_fea)
      x = feat_list[self.backbone_indices[1]]
      aspp = self.aspp(x)
  
      # decoupled
      seg_body, seg_edge = self.squeeze_body_edge(aspp)
      # Edge presevation and edge out
      fine_fea = self.bot_fine(fine_fea)
      seg_edge = F.interpolate(
          seg_edge,
          fine_size[2:],
          mode="bilinear",
          align_corners=self.align_corners,
      )
      seg_edge = self.edge_fusion(
          paddle.concat([seg_edge, fine_fea], axis=1)
      )
      seg_edge_out = self.edge_out(seg_edge)
      seg_edge_out = self.sigmoid_edge(seg_edge_out)  # seg_edge output
      seg_body_out = self.dsn_seg_body(seg_body)  # body out
  
      # seg_final out
      seg_out = seg_edge + F.interpolate(
          seg_body,
          fine_size[2:],
          mode="bilinear",
          align_corners=self.align_corners,
      )
      aspp = F.interpolate(
          aspp,
          fine_size[2:],
          mode="bilinear",
          align_corners=self.align_corners,
      )
      seg_out = paddle.concat([aspp, seg_out], axis=1)
      seg_final_out = self.final_seg(seg_out)
  
      return [seg_final_out, seg_body_out, seg_edge_out]
  
imports: import cv2
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.models.backbones import resnet_vd
  from paddleseg.models import deeplab
  from paddleseg.utils import utils
label_desc: Use image node_id 2 for calling the DecoupledSegNetHead obj's underlying member method code with example usage: obj.forward(feat_list) and returns: list