class_docstr: Joint Pyramid Upsampling of FCN.
  The original paper refers to
      Wu, Huikai, et al. "Fastfcn: Rethinking dilated convolution in the backbone for semantic segmentation." arXiv preprint arXiv:1903.11816 (2019).
code: def __init__(self, in_channels, width=512):
      super().__init__()
  
      self.conv5 = ConvBNReLU(
          in_channels[-1], width, 3, padding=1, bias_attr=False
      )
      self.conv4 = ConvBNReLU(
          in_channels[-2], width, 3, padding=1, bias_attr=False
      )
      self.conv3 = ConvBNReLU(
          in_channels[-3], width, 3, padding=1, bias_attr=False
      )
  
      self.dilation1 = SeparableConvBNReLU(
          3 * width,
          width,
          3,
          padding=1,
          pointwise_bias=False,
          dilation=1,
          bias_attr=False,
          stride=1,
      )
      self.dilation2 = SeparableConvBNReLU(
          3 * width,
          width,
          3,
          padding=2,
          pointwise_bias=False,
          dilation=2,
          bias_attr=False,
          stride=1,
      )
      self.dilation3 = SeparableConvBNReLU(
          3 * width,
          width,
          3,
          padding=4,
          pointwise_bias=False,
          dilation=4,
          bias_attr=False,
          stride=1,
      )
      self.dilation4 = SeparableConvBNReLU(
          3 * width,
          width,
          3,
          padding=8,
          pointwise_bias=False,
          dilation=8,
          bias_attr=False,
          stride=1,
      )
  
imports: import os
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.models import layers
label_desc: Use image node_id 1 to create a new JPU object from inherited base classes: nn with example: obj = JPU(in_channels, width)