class_docstr: Pooling Pyramid Module used in PSPNet.
  
  Args:
      pool_scales (tuple[int]): Pooling scales used in Pooling Pyramid
          Module.
      in_channels (int): Input channels.
      channels (int): Channels after modules, before conv_seg.
      conv_cfg (dict|None): Config of conv layers.
      norm_cfg (dict|None): Config of norm layers.
      act_cfg (dict): Config of activation layers.
      align_corners (bool): align_corners argument of F.interpolate.
class_docstr_tok: ["Pooling","Pyramid","Module","used","in","PSPNet",".","Args",":","pool_scales","(","tuple","[","int","]",")",":","Pooling","scales","used","in","Pooling","Pyramid","Module",".","in_channels","(","int",")",":","Input","channels",".","channels","(","int",")",":","Channels","after","modules",",","before","conv_seg",".","conv_cfg","(","dict|None",")",":","Config","of","conv","layers",".","norm_cfg","(","dict|None",")",":","Config","of","norm","layers",".","act_cfg","(","dict",")",":","Config","of","activation","layers",".","align_corners","(","bool",")",":","align_corners","argument","of","F.interpolate","."]
docstr: Forward function.
docstr_tok: ["Forward","function","."]
code: def forward(self, x):
      """Forward function."""
      ppm_outs = []
      for ppm in self:
          ppm_out = ppm(x)
          upsampled_ppm_out = resize(
              ppm_out,
              size=x.size()[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
          ppm_outs.append(upsampled_ppm_out)
      return ppm_outs
  
file_path: lavis/lavis/common/annotator/uniformer/mmseg/models/decode_heads/psp_head.py
imports: import torch
  import torch.nn
  from annotator.uniformer.mmcv.cnn import ConvModule
  from annotator.uniformer.mmseg.ops import resize
  from ..builder import HEADS
  from .decode_head import BaseDecodeHead
label_desc: Use image node_id 2 for calling the PPM obj's underlying member method code with example usage: obj.forward(x) and returns: ppm_outs