code: def main():
      args = parse_args()
  
      # register all modules in mmtrack into the registries
      # do not init the default scope here because it will be init in the runner
      register_all_modules(init_default_scope=False)
  
      # load config
      cfg = Config.fromfile(args.config)
      cfg.launcher = args.launcher
      if args.cfg_options is not None:
          cfg.merge_from_dict(args.cfg_options)
  
      # work_dir is determined in this priority: CLI > segment in file > filename
      if args.work_dir is not None:
          # update configs according to CLI args if args.work_dir is not None
          cfg.work_dir = args.work_dir
      elif cfg.get("work_dir", None) is None:
          # use config filename as default work_dir if cfg.work_dir is None
          cfg.work_dir = osp.join(
              "./work_dirs", osp.splitext(osp.basename(args.config))[0]
          )
  
      cfg.load_from = args.checkpoint
  
      # build the runner from config
      if "runner_type" not in cfg:
          # build the default runner
          runner = Runner.from_cfg(cfg)
      else:
          # build customized runner from the registry
          # if 'runner_type' is set in the cfg
          runner = RUNNERS.build(cfg)
  
      if is_model_wrapper(runner.model):
          model = runner.model.module
      else:
          model = runner.model
  
      if args.detector:
          assert not (
              args.checkpoint and args.detector
          ), "Error: checkpoint and detector checkpoint cannot both exist"
          load_checkpoint(model.detector, args.detector)
  
      if args.reid:
          assert not (
              args.checkpoint and args.reid
          ), "Error: checkpoint and reid checkpoint cannot both exist"
          load_checkpoint(model.reid, args.reid)
  
      # start testing
      runner.test()
  
file_path: mmdetection/tools/test_tracking.py
imports: import argparse
  import os
  import os.path
  from mmengine.config import Config, DictAction
  from mmengine.model import is_model_wrapper
  from mmengine.registry import RUNNERS
  from mmengine.runner import Runner
  from mmengine.runner.checkpoint import load_checkpoint
  from mmdet.utils import register_all_modules
label_desc: Use image node_id 2 for calling a global function with example usage: main() without return types