class_docstr: Display and save evaluation results.
  
  Args:
      show (bool): Whether to show the image. Default: True.
      wait_time (float): Value of waitKey param. Default: 0.
      score_thr (float): Minimum score of bboxes to be shown.
         Default: 0.
      runner (:obj:`Runner`): The runner of the visualization process.
class_docstr_tok: ["Display","and","save","evaluation","results",".","Args",":","show","(","bool",")",":","Whether","to","show","the","image",".","Default",":","True",".","wait_time","(","float",")",":","Value","of","waitKey","param",".","Default",":","0.","score_thr","(","float",")",":","Minimum","score","of","bboxes","to","be","shown",".","Default",":","0.","runner","(",":","obj",":","`","Runner","`",")",":","The","runner","of","the","visualization","process","."]
docstr: Evaluation for panoptic segmentation.
  
  Args:
      dataset (Dataset): A PyTorch dataset.
      results (list): Panoptic segmentation results from test
          results pkl file.
      topk (int): Number of the highest topk and
          lowest topk after evaluation index sorting. Default: 20.
  
  Returns:
      tuple: A tuple contains good samples and bad samples.
          good_pqs (dict[int, float]): A dict contains good
              samples's indices in dataset and model's
              performance on them.
          bad_pqs (dict[int, float]): A dict contains bad
              samples's indices in dataset and model's
              performance on them.
docstr_tok: ["Evaluation","for","panoptic","segmentation",".","Args",":","dataset","(","Dataset",")",":","A","PyTorch","dataset",".","results","(","list",")",":","Panoptic","segmentation","results","from","test","results","pkl","file",".","topk","(","int",")",":","Number","of","the","highest","topk","and","lowest","topk","after","evaluation","index","sorting",".","Default",":","20",".","Returns",":","tuple",":","A","tuple","contains","good","samples","and","bad","samples",".","good_pqs","(","dict","[","int",",","float","]",")",":","A","dict","contains","good","samples","'s","indices","in","dataset","and","model's","performance","on","them",".","bad_pqs","(","dict","[","int",",","float","]",")",":","A","dict","contains","bad","samples","'s","indices","in","dataset","and","model's","performance","on","them","."]
code: def panoptic_evaluate(self, dataset, results, topk=20):
      """Evaluation for panoptic segmentation.
  
      Args:
          dataset (Dataset): A PyTorch dataset.
          results (list): Panoptic segmentation results from test
              results pkl file.
          topk (int): Number of the highest topk and
              lowest topk after evaluation index sorting. Default: 20.
  
      Returns:
          tuple: A tuple contains good samples and bad samples.
              good_pqs (dict[int, float]): A dict contains good
                  samples's indices in dataset and model's
                  performance on them.
              bad_pqs (dict[int, float]): A dict contains bad
                  samples's indices in dataset and model's
                  performance on them.
      """
      pqs = {}
      prog_bar = ProgressBar(len(results))
  
      for i in range(len(results)):
          data_sample = {}
          for k in dataset[i].keys():
              data_sample[k] = dataset[i][k]
  
          for k in results[i].keys():
              data_sample[k] = results[i][k]
  
          self.evaluator.process([data_sample])
          metrics = self.evaluator.evaluate(1)
  
          pqs[i] = metrics["coco_panoptic/PQ"]
          prog_bar.update()
  
      # descending select topk image
      pqs = list(sorted(pqs.items(), key=lambda kv: kv[1]))
      good_pqs = pqs[-topk:]
      bad_pqs = pqs[:topk]
  
      return good_pqs, bad_pqs
  
imports: import argparse
  import os.path
  from multiprocessing import Pool
  import mmcv
  import numpy
  from mmengine.config import Config, DictAction
  from mmengine.fileio import load
  from mmengine.registry import init_default_scope
  from mmengine.runner import Runner
  from mmengine.structures import InstanceData, PixelData
  from mmengine.utils import ProgressBar, check_file_exist, mkdir_or_exist
  from mmdet.datasets import get_loading_pipeline
  from mmdet.evaluation import eval_map
  from mmdet.registry import DATASETS, RUNNERS
  from mmdet.structures import DetDataSample
  from mmdet.utils import replace_cfg_vals, update_data_root
  from mmdet.visualization import DetLocalVisualizer
label_desc: Use image node_id 5 for calling the ResultVisualizer obj's underlying member method code with example usage: obj.panoptic_evaluate(dataset, results, topk) and returns: good_pqs,  bad_pqs