code: def evaluate(self):
      """
      Run per image evaluation on given images and store results (a list of dict) in self.evalImgs
      :return: None
      """
      # tic = time.time()
      # print('Running per image evaluation...')
      p = self.params
      # add backward compatibility if useSegm is specified in params
      if p.useSegm is not None:
          p.iouType = "segm" if p.useSegm == 1 else "bbox"
          print(
              "useSegm (deprecated) is not None. Running {} evaluation".format(
                  p.iouType
              )
          )
      # print('Evaluate annotation type *{}*'.format(p.iouType))
      p.imgIds = list(np.unique(p.imgIds))
      if p.useCats:
          p.catIds = list(np.unique(p.catIds))
      p.maxDets = sorted(p.maxDets)
      self.params = p
  
      self._prepare()
      # loop through images, area range, max detection number
      catIds = p.catIds if p.useCats else [-1]
  
      if p.iouType == "segm" or p.iouType == "bbox":
          computeIoU = self.computeIoU
      elif p.iouType == "keypoints":
          computeIoU = self.computeOks
      self.ious = {
          (imgId, catId): computeIoU(imgId, catId)
          for imgId in p.imgIds
          for catId in catIds
      }
  
      evaluateImg = self.evaluateImg
      maxDet = p.maxDets[-1]
      evalImgs = [
          evaluateImg(imgId, catId, areaRng, maxDet)
          for catId in catIds
          for areaRng in p.areaRng
          for imgId in p.imgIds
      ]
      # this is NOT in the pycocotools code, but could be done outside
      evalImgs = np.asarray(evalImgs).reshape(
          len(catIds), len(p.areaRng), len(p.imgIds)
      )
      self._paramsEval = copy.deepcopy(self.params)
      # toc = time.time()
      # print('DONE (t={:0.2f}s).'.format(toc-tic))
      return p.imgIds, evalImgs
  
imports: import json
  from collections import defaultdict
  import numpy
  import copy
  import torch
  import torch._six
  from pycocotools.cocoeval import COCOeval
  from pycocotools.coco import COCO
  import pycocotools.mask
  from train_utils.distributed_utils import all_gather
label_desc: Use image node_id 6 for calling a global function with example usage: evaluate() and returns: p,  evalImgs