class_docstr: A simple implementation for FCN based on PaddlePaddle.
  
  The original article refers to
  Evan Shelhamer, et, al. "Fully Convolutional Networks for Semantic Segmentation"
  (https://arxiv.org/abs/1411.4038).
  
  Args:
      num_classes (int): The unique number of target classes.
      backbone (paddle.nn.Layer): Backbone networks.
      backbone_indices (tuple, optional): The values in the tuple indicate the indices of output of backbone.
          Default: (-1, ).
      channels (int, optional): The channels between conv layer and the last layer of FCNHead.
          If None, it will be the number of channels of input features. Default: None.
      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 forward(self, x):
      feat_list = self.backbone(x)
      logit_list = self.head(feat_list)
      return [
          F.interpolate(
              logit,
              paddle.shape(x)[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
          for logit in logit_list
      ]
  
file_path: PaddleSeg/paddleseg/models/fcn.py
imports: import paddle.nn
  import paddle.nn.functional
  import paddle
  from paddleseg import utils
  from paddleseg.cvlibs import manager, param_init
  from paddleseg.models import layers
label_desc: Use image node_id 2 for calling the FCN obj's underlying member method code with example usage: obj.forward(x) and returns: unknown