class_docstr: This head is the implementation of "Unified Perceptual Parsing for Scene Understanding".
  This is heavily based on https://github.com/czczup/ViT-Adapter
  
  Args:
      num_classes (int): The unique number of target classes.
      in_channels (list[int]): The channels of input features.
      channels (int, optional): The channels of inter layers in upernet head. Default: 512.
      pool_scales (list, optional): The scales in PPM. Default: [1, 2, 3, 6].
      dropout_ratio (float, optional): The dropout ratio for upernet head. Default: 0.1.
      aux_loss (bool, optional): A bool value indicates whether adding auxiliary loss. Default: True.
      aux_channels (int, optional): The channels of inter layers in auxiliary head. Default: 256.
      align_corners (bool, optional): An argument of F.interpolate. It should be set to False when the feature size is even,
          e.g. 1024x512, otherwise it is True, e.g. 769x769. Default: False.
class_docstr_tok: ["This","head","is","the","implementation","of","``","Unified","Perceptual","Parsing","for","Scene","Understanding","''",".","This","is","heavily","based","on","https",":","\/\/github.com\/czczup\/ViT-Adapter","Args",":","num_classes","(","int",")",":","The","unique","number","of","target","classes",".","in_channels","(","list","[","int","]",")",":","The","channels","of","input","features",".","channels","(","int",",","optional",")",":","The","channels","of","inter","layers","in","upernet","head",".","Default",":","512.","pool_scales","(","list",",","optional",")",":","The","scales","in","PPM",".","Default",":","[","1",",","2",",","3",",","6","]",".","dropout_ratio","(","float",",","optional",")",":","The","dropout","ratio","for","upernet","head",".","Default",":","0.1.","aux_loss","(","bool",",","optional",")",":","A","bool","value","indicates","whether","adding","auxiliary","loss",".","Default",":","True",".","aux_channels","(","int",",","optional",")",":","The","channels","of","inter","layers","in","auxiliary","head",".","Default",":","256.","align_corners","(","bool",",","optional",")",":","An","argument","of","F.interpolate",".","It","should","be","set","to","False","when","the","feature","size","is","even",",","e.g",".","1024x512",",","otherwise","it","is","True",",","e.g",".","769x769",".","Default",":","False","."]
code: def psp_forward(self, inputs):
      x = inputs[-1]
      psp_outs = [x]
      psp_outs.extend(self.psp_modules(x))
      psp_outs = paddle.concat(psp_outs, axis=1)
      output = self.bottleneck(psp_outs)
      return output
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg import utils
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
label_desc: Use image node_id 2 for calling the UPerNetHead obj's underlying member method code with example usage: obj.psp_forward(inputs) and returns: output