def eval(num_imgs): # annotation_path = '/home/yjr/DataSet/COCO/2017/test_annotations/image_info_test2017.json' annotation_path = '/home/yjr/DataSet/COCO/2017/test_annotations/image_info_test-dev2017.json' # annotation_path = '/home/yjr/DataSet/COCO/2017/annotations/instances_train2017.json' print("load coco .... it will cost about 17s..") coco = COCO(annotation_path) imgId_list = coco.getImgIds() if num_imgs != np.inf: imgId_list = imgId_list[:num_imgs] faster_rcnn = build_whole_network_batch.DetectionNetwork( base_network_name=cfgs.NET_NAME, is_training=False) save_dir = os.path.join(cfgs.EVALUATE_DIR, cfgs.VERSION) eval_with_plac(det_net=faster_rcnn, coco=coco, imgId_list=imgId_list, out_json_root=save_dir, draw_imgs=True) print("each img over**************") final_detections = [] with open(os.path.join(save_dir, 'coco2017test_results.json'), 'w') as wf: for imgid in imgId_list: f = open(os.path.join(save_dir, 'each_img', str(imgid) + '.json')) tmp_list = json.load(f) # print (type(tmp_list)) final_detections.extend(tmp_list) del tmp_list f.close() json.dump(final_detections, wf)
def cocoval(detected_json, eval_json): eval_gt = COCO(eval_json) eval_dt = eval_gt.loadRes(detected_json) cocoEval = COCOeval(eval_gt, eval_dt, iouType='bbox') # cocoEval.params.imgIds = eval_gt.getImgIds() cocoEval.evaluate() cocoEval.accumulate() cocoEval.summarize()