code: def forward(self, fmaps: list[Tensor]) -> list[Tensor]:
      # fmaps is ordered from hi-res to low-res
      fmaps = list(fmaps)  # shallow clone
  
      # new_fmaps is ordered from low-res to hi-res
      new_fmaps = [fmaps.pop()]
      while fmaps:
          new_fmaps[-1] = self.lateral_convs[len(new_fmaps) - 1](
              new_fmaps[-1]
          )
          up_lowres_fmap = F.interpolate(
              new_fmaps[-1], scale_factor=2.0, mode="nearest"
          )
          hires_fmap = fmaps.pop()
  
          concat_fmap = concatenate([up_lowres_fmap, hires_fmap], 1)
          new_fmaps.append(
              self.fpn_blocks[len(new_fmaps) - 1](concat_fmap)
          )
  
      fmaps = [new_fmaps.pop()]
      while new_fmaps:
          down_hires_fmap = self.downsample_convs[len(fmaps) - 1](
              fmaps[-1]
          )
          lowres_fmap = new_fmaps.pop()
  
          concat_fmap = concatenate([down_hires_fmap, lowres_fmap], 1)
          fmaps.append(self.pan_blocks[len(fmaps) - 1](concat_fmap))
  
      return fmaps
  
imports: from __future__ import annotations
  from typing import Optional
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.nn.utils.fusion import fuse_conv_bn_weights
  from kornia.contrib.models.common import ConvNormAct
  from kornia.core import Module, Tensor, concatenate, pad
label_desc: Use image node_id 2 for calling the CCFM obj's underlying member method code with example usage: obj.forward(fmaps) and returns: fmaps