class_docstr: Pyramid Pooling Module (PPM) 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.
      align_corners (`bool`):
          align_corners argument of F.interpolate.
code: def forward(self, x: torch.Tensor) -> List[torch.Tensor]:
      ppm_outs = []
      for ppm in self.blocks:
          ppm_out = ppm(x)
          upsampled_ppm_out = nn.functional.interpolate(
              ppm_out,
              size=x.size()[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
          ppm_outs.append(upsampled_ppm_out)
      return ppm_outs
  
imports: from typing import List, Optional, Tuple, Union
  import torch
  from torch import nn
  from torch.nn import CrossEntropyLoss
  from ...None import AutoBackbone
  from ...modeling_outputs import SemanticSegmenterOutput
  from ...modeling_utils import PreTrainedModel
  from ...utils import add_start_docstrings, add_start_docstrings_to_model_forward, replace_return_docstrings
  from .configuration_upernet import UperNetConfig
label_desc: Use image node_id 2 for calling the UperNetPyramidPoolingModule obj's underlying member method code with example usage: obj.forward(x) and returns: ppm_outs