code: def test_yolox_pafpn():
      s = 64
      in_channels = [8, 16, 32, 64]
      feat_sizes = [s // 2**i for i in range(4)]  # [64, 32, 16, 8]
      out_channels = 24
      feats = [
          torch.rand(1, in_channels[i], feat_sizes[i], feat_sizes[i])
          for i in range(len(in_channels))
      ]
      neck = YOLOXPAFPN(
          in_channels=in_channels, out_channels=out_channels
      )
      outs = neck(feats)
      assert len(outs) == len(feats)
      for i in range(len(feats)):
          assert outs[i].shape[1] == out_channels
          assert outs[i].shape[2] == outs[i].shape[3] == s // (2**i)
  
      # test depth-wise
      neck = YOLOXPAFPN(
          in_channels=in_channels,
          out_channels=out_channels,
          use_depthwise=True,
      )
  
      from mmcv.cnn.bricks import DepthwiseSeparableConvModule
  
      assert isinstance(
          neck.downsamples[0], DepthwiseSeparableConvModule
      )
  
      outs = neck(feats)
      assert len(outs) == len(feats)
      for i in range(len(feats)):
          assert outs[i].shape[1] == out_channels
          assert outs[i].shape[2] == outs[i].shape[3] == s // (2**i)
  
file_path: mmdetection/tests/test_models/test_necks/test_necks.py
imports: import pytest
  import torch
  from torch.nn.modules.batchnorm import _BatchNorm
  from mmdet.models.necks import FPG, FPN, FPN_CARAFE, NASFCOS_FPN, NASFPN, SSH, YOLOXPAFPN, ChannelMapper, DilatedEncoder, DyHead, SSDNeck, YOLOV3Neck
label_desc: Use image node_id 6 for calling a global function with example usage: test_yolox_pafpn() without return types