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
예제 #3
0
파일: roidb.py 프로젝트: chenyilun95/PANet
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)