class_docstr: MultiLevelNeck.
  
  A neck structure connect vit backbone and decoder_heads.
  Args:
      in_channels (List[int]): Number of input channels per scale.
      out_channels (int): Number of output channels (used at each scale).
      scales (List[int]): Scale factors for each input feature map.
      norm_cfg (dict): Config dict for normalization layer. Default: None.
      act_cfg (dict): Config dict for activation layer in ConvModule.
          Default: None.
code: def forward(self, inputs):
      assert len(inputs) == len(self.in_channels)
      print(inputs[0].shape)
      inputs = [
          lateral_conv(inputs[i])
          for i, lateral_conv in enumerate(self.lateral_convs)
      ]
      # for len(inputs) not equal to self.num_outs
      if len(inputs) == 1:
          inputs = [inputs[0] for _ in range(self.num_outs)]
      outs = []
      for i in range(self.num_outs):
          x_resize = F.interpolate(
              inputs[i], scale_factor=self.scales[i], mode="bilinear"
          )
          outs.append(self.convs[i](x_resize))
      return tuple(outs)
  
file_path: lavis/lavis/common/annotator/uniformer/mmseg/models/necks/multilevel_neck.py
imports: import torch.nn
  import torch.nn.functional
  from annotator.uniformer.mmcv.cnn import ConvModule
  from ..builder import NECKS
label_desc: Use image node_id 2 for calling the MultiLevelNeck obj's underlying member method code with example usage: obj.forward(inputs) and returns: tuple