code: def __init__(self, anno_file, **kwargs):
      self.anno_file = anno_file
      self.clsid2catid = kwargs.get("clsid2catid", None)
      if self.clsid2catid is None:
          self.clsid2catid, _ = get_categories("COCO", anno_file)
      self.classwise = kwargs.get("classwise", False)
      self.output_eval = kwargs.get("output_eval", None)
      # TODO: bias should be unified
      self.bias = kwargs.get("bias", 0)
      self.save_prediction_only = kwargs.get(
          "save_prediction_only", False
      )
      self.iou_type = kwargs.get("IouType", "bbox")
  
      if not self.save_prediction_only:
          assert os.path.isfile(
              anno_file
          ), "anno_file {} not a file".format(anno_file)
  
      if self.output_eval is not None:
          Path(self.output_eval).mkdir(exist_ok=True)
  
      self.reset()
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  import sys
  import json
  import paddle
  import numpy
  import typing
  from collections import defaultdict
  from pathlib import Path
  from .map_utils import prune_zero_padding, DetectionMAP
  from .coco_utils import get_infer_results, cocoapi_eval
  from .widerface_utils import face_eval_run
  from ppdet.data.source.category import get_categories
  from ppdet.modeling.rbox_utils import poly2rbox_np
  from ppdet.utils.logger import setup_logger
label_desc: Use image node_id 1 to create a new COCOMetric object from inherited base classes: Metric with example: obj = COCOMetric(anno_file)