code: def forward(self, features):
      multi_scale_features = []
      num_cur_levels = 0
  
      # Reverse feature maps into top-down order
      # (from low to high resolution)
      for idx, f in enumerate(self.in_features[::-1]):
          x = features[f]
          lateral_conv = self.lateral_convs[idx]
          output_conv = self.output_convs[idx]
          if lateral_conv is None:
              transformer = self.input_proj(x)
              pos = self.pe_layer(x)
              transformer = self.transformer(transformer, None, pos)
              y = output_conv(transformer)
          else:
              cur_fpn = lateral_conv(x)
              # Following FPN implementation, we use nearest upsampling here
              y = cur_fpn + F.interpolate(
                  y, size=cur_fpn.shape[-2:], mode="nearest"
              )
              y = output_conv(y)
          if num_cur_levels < self.maskformer_num_feature_levels:
              multi_scale_features.append(y)
              num_cur_levels += 1
  
      mask_features = self.mask_features(y)
      return mask_features, multi_scale_features
  
file_path: mmdetection/projects/XDecoder/xdecoder/pixel_decoder.py
imports: from typing import Callable, Optional, Union
  from torch import nn
  from torch.nn import functional
  from mmdet.registry import MODELS
  from .transformer_blocks import Conv2d, PositionEmbeddingSine, TransformerEncoder, TransformerEncoderLayer, get_norm
label_desc: Use image node_id 2 for calling the XTransformerEncoderPixelDecoder obj's underlying member method code with example usage: obj.forward(features) and returns: mask_features,  multi_scale_features