text: from argparse import ArgumentParser
  
  import mmcv
  
  from mmdet import datasets
  from mmdet.core import eval_map
  
  
  def voc_eval(result_file, dataset, iou_thr=0.5, nproc=4):
      det_results = mmcv.load(result_file)
      annotations = [dataset.get_ann_info(i) for i in range(len(dataset))]
      if hasattr(dataset, 'year') and dataset.year == 2007:
          dataset_name = 'voc07'
      else:
          dataset_name = dataset.CLASSES
      eval_map(
          det_results,
          annotations,
          scale_ranges=None,
          iou_thr=iou_thr,
          dataset=dataset_name,
          logger='print',
          nproc=nproc)
  
  
  def main():
      parser = ArgumentParser(description='VOC Evaluation')
      parser.add_argument('result', help='result file path')
      parser.add_argument('config', help='config file path')
      parser.add_argument(
          '--iou-thr',
          type=float,
          default=0.5,
          help='IoU threshold for evaluation')
      parser.add_argument(
          '--nproc',
          type=int,
          default=4,
          help='Processes to be used for computing mAP')
      args = parser.parse_args()
      cfg = mmcv.Config.fromfile(args.config)
      test_dataset = mmcv.runner.obj_from_dict(cfg.data.test, datasets)
      voc_eval(args.result, test_dataset, args.iou_thr, args.nproc)
  
  
  if __name__ == '__main__':
      main()