def evaluation_all(path, target_key): records = misc_utils.load_json_lines(path) for i in range(10): score_thr = 1e-1 * i total = len(records) stride = math.ceil(total / nr_procs) result_queue = Queue(10000) results, procs = [], [] for i in range(nr_procs): start = i * stride end = np.min([start + stride, total]) sample_data = records[start:end] p = Process(target=compute_JI_with_ignore, args=(result_queue, sample_data, score_thr, target_key)) p.start() procs.append(p) tqdm.monitor_interval = 0 pbar = tqdm(total=total, leave=False, ascii=True) for i in range(total): t = result_queue.get() results.append(t) pbar.update(1) for p in procs: p.join() pbar.close() line, mean_ratio = gather(results) line = 'score_thr:{:.1f}, {}'.format(score_thr, line) print(line)
def __init__(self, config, if_train): if if_train: self.training = True source = config.train_source self.short_size = config.train_image_short_size self.max_size = config.train_image_max_size else: self.training = False source = config.eval_source self.short_size = config.eval_image_short_size self.max_size = config.eval_image_max_size self.records = misc_utils.load_json_lines(source) self.config = config
def eval_all(args): # json file assert os.path.exists(args.json_file), "Wrong json path!" misc_utils.ensure_dir('outputs') records = misc_utils.load_json_lines(args.json_file)[:args.number] for record in records: dtboxes = misc_utils.load_bboxes( record, key_name='dtboxes', key_box='box', key_score='score', key_tag='tag') gtboxes = misc_utils.load_bboxes(record, 'gtboxes', 'box') dtboxes = misc_utils.xywh_to_xyxy(dtboxes) gtboxes = misc_utils.xywh_to_xyxy(gtboxes) keep = dtboxes[:, -2] > args.visual_thresh dtboxes = dtboxes[keep] len_dt = len(dtboxes) len_gt = len(gtboxes) line = "{}: dt:{}, gt:{}.".format(record['ID'], len_dt, len_gt) print(line) img_path = img_root + record['ID'] + '.png' img = misc_utils.load_img(img_path) visual_utils.draw_boxes(img, dtboxes, line_thick=1, line_color='blue') visual_utils.draw_boxes(img, gtboxes, line_thick=1, line_color='white') fpath = 'outputs/{}.png'.format(record['ID']) cv2.imwrite(fpath, img)