code: def get_seg_res(
      masks, bboxes, mask_nums, image_id, label_to_cat_id_map
  ):
      import pycocotools.mask as mask_util
  
      seg_res = []
      k = 0
      for i in range(len(mask_nums)):
          cur_image_id = int(image_id[i][0])
          det_nums = mask_nums[i]
          mask_i = masks[k : k + det_nums]
          mask_i = strip_mask(mask_i)
          for j in range(det_nums):
              mask = mask_i[j].astype(np.uint8)
              score = float(bboxes[k][1])
              label = int(bboxes[k][0])
              k = k + 1
              if label == -1:
                  continue
              cat_id = label_to_cat_id_map[label]
              rle = mask_util.encode(
                  np.array(mask[:, :, None], order="F", dtype="uint8")
              )[0]
              if six.PY3:
                  if "counts" in rle:
                      rle["counts"] = rle["counts"].decode("utf8")
              sg_res = {
                  "image_id": cur_image_id,
                  "category_id": cat_id,
                  "segmentation": rle,
                  "score": score,
              }
              seg_res.append(sg_res)
      return seg_res
  
file_path: PaddleDetection/ppdet/metrics/json_results.py
imports: import six
  import numpy
label_desc: Use image node_id 4 for calling a global function with example usage: get_seg_res(masks, bboxes, mask_nums, image_id, label_to_cat_id_map) and returns: seg_res