def extend_with_flipped_entries(roidb, dataset): """Flip each entry in the given roidb and return a new roidb that is the concatenation of the original roidb and the flipped entries. "Flipping" an entry means that that image and associated metadata (e.g., ground truth boxes and object proposals) are horizontally flipped. """ flipped_roidb = [] for entry in roidb: width = entry['width'] boxes_amodal = entry['boxes_amodal'].copy() oldx1_amodal = boxes_amodal[:, 0].copy() oldx2_amodal = boxes_amodal[:, 2].copy() boxes_amodal[:, 0] = width - oldx2_amodal - 1 boxes_amodal[:, 2] = width - oldx1_amodal - 1 boxes_inmodal = entry['boxes_inmodal'].copy() oldx1_inmodal = boxes_inmodal[:, 0].copy() oldx2_inmodal = boxes_inmodal[:, 2].copy() boxes_inmodal[:, 0] = width - oldx2_inmodal - 1 boxes_inmodal[:, 2] = width - oldx1_inmodal - 1 assert (boxes_amodal[:, 2] >= boxes_amodal[:, 0]).all() assert (boxes_inmodal[:, 2] >= boxes_inmodal[:, 0]).all() flipped_entry = {} dont_copy = ('boxes_amodal', 'boxes_inmodal', 'segms_amodal', 'segms_inmodal', 'segms_invisible_full', 'gt_keypoints', 'flipped') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes_amodal'] = boxes_amodal flipped_entry['boxes_inmodal'] = boxes_inmodal flipped_entry['segms_amodal'] = segm_utils.flip_segms( entry['segms_amodal'], entry['height'], entry['width']) flipped_entry['segms_inmodal'] = segm_utils.flip_segms( entry['segms_inmodal'], entry['height'], entry['width']) # pdb.set_trace() flipped_entry['segms_invisible_full'] = segm_utils.flip_segms( entry['segms_invisible_full'], entry['height'], entry['width']) if dataset.keypoints is not None: flipped_entry['gt_keypoints'] = keypoint_utils.flip_keypoints( dataset.keypoints, dataset.keypoint_flip_map, entry['gt_keypoints'], entry['width']) flipped_entry['flipped'] = True flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb)
def extend_with_flipped_entries(roidb): """Flip each entry in the given roidb and return a new roidb that is the concatenation of the original roidb and the flipped entries. "Flipping" an entry means that that image and associated metadata (e.g., ground truth boxes and object proposals) are horizontally flipped. """ flipped_roidb = [] for entry in tqdm(roidb): width = entry['width'] boxes = entry['boxes'].copy() oldx1 = boxes[:, 0].copy() oldx2 = boxes[:, 2].copy() boxes[:, 0] = width - oldx2 - 1 boxes[:, 2] = width - oldx1 - 1 assert (boxes[:, 2] >= boxes[:, 0]).all() flipped_entry = {} dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes'] = boxes flipped_entry['segms'] = segm_utils.flip_segms(entry['segms'], entry['height'], entry['width']) flipped_entry['flipped'] = True flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb) return roidb
def extend_with_flipped_entries(roidb, dataset): """Flip each entry in the given roidb and return a new roidb that is the concatenation of the original roidb and the flipped entries. "Flipping" an entry means that that image and associated metadata (e.g., ground truth boxes and object proposals) are horizontally flipped. """ flipped_roidb = [] for entry in roidb: width = entry['width'] boxes = entry['boxes'].copy() oldx1 = boxes[:, 0].copy() oldx2 = boxes[:, 2].copy() boxes[:, 0] = width - oldx2 - 1 boxes[:, 2] = width - oldx1 - 1 assert (boxes[:, 2] >= boxes[:, 0]).all() flipped_entry = {} dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes'] = boxes flipped_entry['segms'] = segm_utils.flip_segms( entry['segms'], entry['height'], entry['width'] ) if dataset.keypoints is not None: flipped_entry['gt_keypoints'] = keypoint_utils.flip_keypoints( dataset.keypoints, dataset.keypoint_flip_map, entry['gt_keypoints'], entry['width'] ) flipped_entry['flipped'] = True flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb)
def extend_with_flipped_entries(roidb, dataset): flipped_roidb = [] for entry in roidb: width = entry['width'] boxes = entry['boxes'].copy() oldx1 = boxes[:, 0].copy() oldx2 = boxes[:, 2].copy() boxes[:, 0] = width - oldx2 - 1 boxes[:, 2] = width - oldx1 - 1 assert (boxes[:, 2] >= boxes[:, 0]).all() flipped_entry = {} dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes'] = boxes flipped_entry['segms'] = segm_utils.flip_segms( entry['segms'], entry['width']) if dataset.keypoints is not None: flipped_entry['gt_keypoints'] = keypoint_utils.flip_keypoints( dataset.keypoints, dataset.keypoint_flip_map, entry['gt_keypoints'], entry['width']) flipped_entry['flipped'] = True flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb)
def extend_with_flipped_entries(roidb, dataset): flipped_roidb = [] for entry in roidb: width = entry['width'] boxes = entry['boxes'].copy() oldx1 = boxes[:, 0].copy() oldx2 = boxes[:, 2].copy() boxes[:, 0] = width - oldx2 - 1 boxes[:, 2] = width - oldx1 - 1 assert (boxes[:, 2] >= boxes[:, 0]).all() flipped_entry = {} dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes'] = boxes flipped_entry['segms'] = segm_utils.flip_segms(entry['segms'], entry['width']) if dataset.keypoints is not None: flipped_entry['gt_keypoints'] = keypoint_utils.flip_keypoints( dataset.keypoints, dataset.keypoint_flip_map, entry['gt_keypoints'], entry['width']) flipped_entry['flipped'] = True flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb)
def extend_with_flipped_entries(roidb, dataset): """Flip each entry in the given roidb and return a new roidb that is the concatenation of the original roidb and the flipped entries. "Flipping" an entry means that that image and associated metadata (e.g., ground truth boxes and object proposals) are horizontally flipped. """ flipped_roidb = [] for entry in roidb: width = entry['width'] boxes = entry['boxes'].copy() oldx1 = boxes[:, 0].copy() oldx2 = boxes[:, 2].copy() boxes[:, 0] = width - oldx2 - 1 boxes[:, 2] = width - oldx1 - 1 # pdb.set_trace() # LJ add part info part_boxes = entry['part_boxes'].copy() # part_boxes = np.array(part_boxes, dtype=np.float32) part_oldx1 = part_boxes[:, 0].copy() part_oldx2 = part_boxes[:, 2].copy() part_boxes[:, 0] = width - part_oldx2 - 1 part_boxes[:, 2] = width - part_oldx1 - 1 assert (boxes[:, 2] >= boxes[:, 0]).all() # LJ add part info assert (part_boxes[:, 2] >= part_boxes[:, 0]).all() flipped_entry = {} # LJ add parts info dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped', 'part_boxes') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes'] = boxes flipped_entry['segms'] = segm_utils.flip_segms(entry['segms'], entry['height'], entry['width']) # if dataset.keypoints is not None: # flipped_entry['gt_keypoints'] = keypoint_utils.flip_keypoints( # dataset.keypoints, dataset.keypoint_flip_map, # entry['gt_keypoints'], entry['width'] # ) flipped_entry['flipped'] = True # LJ add part info flipped_entry['part_boxes'] = part_boxes flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb)
def extend_with_flipped_entries(roidb, dataset): """Flip each entry in the given roidb and return a new roidb that is the concatenation of the original roidb and the flipped entries. "Flipping" an entry means that that image and associated metadata (e.g., ground truth boxes and object proposals) are horizontally flipped. """ flipped_roidb = [] for entry in roidb: width = entry['width'] boxes = entry['boxes'].copy() oldx1 = boxes[:, 0].copy() oldx2 = boxes[:, 2].copy() boxes[:, 0] = width - oldx2 - 1 boxes[:, 2] = width - oldx1 - 1 assert (boxes[:, 2] >= boxes[:, 0]).all() polygons = entry['polygons'].copy() polygons = flip_polygons(polygons, entry['width']) charboxes = entry['charboxes'].copy() charboxes = flip_polygons(charboxes, entry['width']) words = [flip_word(x) for x in entry['words']] flipped_entry = {} dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped', 'polygons', 'charboxes', 'words') for k, v in entry.items(): if k not in dont_copy: flipped_entry[k] = v flipped_entry['boxes'] = boxes flipped_entry['segms'] = segm_utils.flip_segms(entry['segms'], entry['height'], entry['width']) flipped_entry['polygons'] = polygons flipped_entry['charboxes'] = charboxes flipped_entry['words'] = words if dataset.keypoints is not None: flipped_entry['gt_keypoints'] = keypoint_utils.flip_keypoints( dataset.keypoints, dataset.keypoint_flip_map, entry['gt_keypoints'], entry['width']) flipped_entry['flipped'] = True flipped_roidb.append(flipped_entry) roidb.extend(flipped_roidb)