code: def show_badcase(
      gt_data,
      preds_data,
      overkill_info,
      escape_info_image,
      escape_info_instance,
      image_root="",
      output_dir="",
  ):
      overkill_path = osp.join(output_dir, "overkill")
      escape_image_path = osp.join(output_dir, "escape", "image_level")
      escape_instance_path = osp.join(
          output_dir, "escape", "instance_level"
      )
  
      logger.info("Save overkill images in: " + overkill_path)
      clsid_to_name = gt_data.cats
      for class_id, img_ids in overkill_info.items():
          class_name = clsid_to_name[class_id]["name"]
          for img_id in img_ids:
              im_name = gt_data.loadImgs(img_id)[0]["file_name"]
              im_path = osp.join(image_root, im_name)
              preds_info = preds_data[im_path]
              show_result(
                  {im_path: preds_info},
                  osp.join(overkill_path, class_name),
                  class_name,
              )
  
      logger.info("Save escape images in: " + escape_image_path)
      for img_id in escape_info_image:
          im_name = gt_data.loadImgs(img_id)[0]["file_name"]
          ann_ids = gt_data.getAnnIds(imgIds=img_id, iscrowd=None)
          annos = gt_data.loadAnns(ann_ids)
          im_path = osp.join(image_root, im_name)
          draw_bboxes(im_path, annos, clsid_to_name, escape_image_path)
  
      logger.info(
          "Save instance-level escape images in: "
          + escape_instance_path
      )
      for class_id, img_anno_ids in escape_info_instance.items():
          class_name = clsid_to_name[class_id]["name"]
          img_to_anno_id = defaultdict(list)
          for img_anno_id in img_anno_ids:
              img_id = img_anno_id[0]
              anno_id = img_anno_id[1]
              img_to_anno_id[img_id].append(anno_id)
  
          for img_id, anno_list in img_to_anno_id.items():
              im_name = gt_data.loadImgs(img_id)[0]["file_name"]
              annos = gt_data.loadAnns(anno_list)
              im_path = osp.join(image_root, im_name)
              draw_bboxes(
                  im_path,
                  annos,
                  clsid_to_name,
                  osp.join(escape_instance_path, class_name),
              )
      logger.info("Done!")
  
imports: import argparse
  import json
  import os
  import os.path
  import sys
  from collections import defaultdict
  import prettytable
  from pycocotools.coco import COCO
  from qinspector.cvlib.configs import ConfigParser
  from qinspector.ops.postprocess import PostProcess
  from qinspector.utils.logger import setup_logger
  from qinspector.utils.bbox_utils import iou_one_to_multiple
  from qinspector.utils.visualizer import show_result, draw_bboxes
label_desc: Use image node_id 8 for calling a global function with example usage: show_badcase(gt_data, preds_data, overkill_info, escape_info_image, escape_info_instance, image_root, output_dir) without return types