def evaluate(self, result_json, cls_ids, image_ids, gt_json=None): if self._split == "testdev": return None coco = self._coco if gt_json is None else COCO(gt_json) eval_ids = [self._coco_eval_ids[image_id] for image_id in image_ids] cat_ids = [self._classes[cls_id] for cls_id in cls_ids] coco_dets = coco.loadRes(result_json) coco_eval = COCOeval(coco, coco_dets, "bbox") coco_eval.params.imgIds = eval_ids coco_eval.params.catIds = cat_ids coco_eval.evaluate() coco_eval.accumulate() coco_eval.summarize() coco_eval.evaluate_fd() coco_eval.accumulate_fd() coco_eval.summarize_fd() return coco_eval.stats[0], coco_eval.stats[12:]