in evaluation/tiny_benchmark/MyPackage/tools/pub/split_and_merge_image.py [0:0]
def __call__(self, corner_gt_file_path, src_det_file_path, dst_det_file_path=None):
det_data = json.load(open(src_det_file_path))
corner_gts = json.load(
open(corner_gt_file_path))
# create data map
merge_image_ids, image_id_to_image_info, merge_image_id_to_image_ids = self.__load_coco_data_map(corner_gts)
image_id_to_det_boxes = {image_id: [] for image_id in image_id_to_image_info}
image_id_to_det_boxes.update(self.__load_det_data_map(det_data))
merge_image_id_to_det_results = {id: [] for id in merge_image_ids}
merge_image_id_to_corners = {id: [] for id in merge_image_ids}
for merge_image_id, image_ids in merge_image_id_to_image_ids.items():
for image_id in image_ids:
merge_image_id_to_det_results[merge_image_id].append(image_id_to_det_boxes[image_id])
merge_image_id_to_corners[merge_image_id].append(image_id_to_image_info[image_id]['corner'])
# merge all det result
all_merge_det_results = []
for merge_image_id in tqdm(merge_image_id_to_det_results):
corners = merge_image_id_to_corners[merge_image_id]
det_results_list = merge_image_id_to_det_results[merge_image_id]
# merge all boxes to origin image
old_det_results, det_bboxes = [], []
for det_results in det_results_list:
old_det_results.extend(det_results)
det_bboxes.append(np.array([xywh2xyxy(np.array(det_result['bbox']))
for det_result in det_results]))
merge_boxes = self.translate_bboxes(corners, det_bboxes)
# nms
if self.use_nms:
scores = [det_result['score'] for det_result in old_det_results]
merge_boxes, keeps = self.nms(merge_boxes, scores)
old_det_results = [old_det_results[keep] for keep in keeps]
# turn bbox to det_result
merge_results = []
for bbox, old_det_result in zip(merge_boxes, old_det_results):
det_result = self.__turn_det_result(bbox, merge_image_id, old_det_result)
merge_results.append(det_result)
all_merge_det_results.extend(merge_results)
save_pth = None
if dst_det_file_path is not None:
save_pth = self.__save_file(all_merge_det_results, src_det_file_path, dst_det_file_path)
return all_merge_det_results, save_pth