class_docstr: refer to
  https://github.com/leoxiaobin/deep-high-resolution-net.pytorch
  Copyright (c) Microsoft, under the MIT License.
class_docstr_tok: ["refer","to","https",":","\/\/github.com\/leoxiaobin\/deep-high-resolution-net.pytorch","Copyright","(","c",")","Microsoft",",","under","the","MIT","License","."]
code: def log(self):
      if self.save_prediction_only:
          return
      stats_names = [
          "AP",
          "Ap .5",
          "AP .75",
          "AP (M)",
          "AP (L)",
          "AR",
          "AR .5",
          "AR .75",
          "AR (M)",
          "AR (L)",
      ]
      num_values = len(stats_names)
      print(
          " ".join(["| {}".format(name) for name in stats_names]) + " |"
      )
      print("|---" * (num_values + 1) + "|")
  
      print(
          " ".join(
              [
                  "| {:.3f}".format(value)
                  for value in self.eval_results["keypoint"]
              ]
          )
          + " |"
      )
  
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 8 for calling the KeyPointTopDownCOCOEval obj's underlying member method code with example usage: obj.log() without return types