code: def update(self, inputs, outputs):
      kpts, _ = outputs["keypoint"][0]
  
      num_images = inputs["image"].shape[0]
      results = {}
      results["preds"] = kpts[:, :, 0:3]
      results["boxes"] = np.zeros((num_images, 6))
      results["boxes"][:, 0:2] = inputs["center"].numpy()[:, 0:2]
      results["boxes"][:, 2:4] = inputs["scale"].numpy()[:, 0:2]
      results["boxes"][:, 4] = np.prod(inputs["scale"].numpy() * 200, 1)
      results["boxes"][:, 5] = np.squeeze(inputs["score"].numpy())
      results["image_path"] = inputs["image_file"]
  
      self.results.append(results)
  
imports: import os
  import json
  from collections import defaultdict, OrderedDict
  import numpy
  import paddle
  from pycocotools.coco import COCO
  from pycocotools.cocoeval import COCOeval
  from ..modeling.keypoint_utils import oks_nms, keypoint_pck_accuracy, keypoint_auc, keypoint_epe
  from scipy.io import loadmat, savemat
  from ppdet.utils.logger import setup_logger
label_desc: Use image node_id 3 for calling the KeyPointTopDownMPIIEval obj's underlying member method code with example usage: obj.update(inputs, outputs) without return types