主要文件:
detectron/datasets/json_dataset.py
detectron/datasets/roidb.py
detectron/roi_data/minibatch.py
数据加载流程如下:
图来自
Detectron 添加垂直翻转
修改如下:
在detectron/datasets/json_dataset.py文件中添加垂直翻转参数:

entry['flipped_v'] = False

在/detectron/datasets/roidb.py中仿照extend_with_flipped_entries函数添加垂直翻转函数:
注意,detectron水平翻转后已经将entry加入到roidb中,此时进行垂直翻转,相当于将水平翻转后的图像同样进行的垂直翻转。所以原本200张图像翻转后变成800张。

if cfg.TRAIN.USE_FLIPPED_V:
    logger.info('Appending vertically-flipped training examples...')
    extend_with_flipped_entries_v(roidb, ds)
def extend_with_flipped_entries_v(roidb, dataset):
    flipped_roidb = []
    for entry in roidb:
        height = entry['height']
        boxes = entry['boxes'].copy()
        oldy1 = boxes[:, 1].copy()
        oldy2 = boxes[:, 3].copy()
        boxes[:, 1] = height - oldy2 - 1
        boxes[:, 3] = height - oldy1 - 1
        assert (boxes[:, 3] >= boxes[:, 1]).all()
        flipped_entry = {}
        # dont_copy = ('boxes', 'segms', 'gt_keypoints', 'flipped_v')
        dont_copy = ('boxes', 'flipped_v')
        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_v'] = True
        flipped_roidb.append(flipped_entry)
    roidb.extend(flipped_roidb)

在detectron/roi_data/minibatch.py文件中添加图像像素的翻转:

if roidb[i]['flipped_v']:
    im = im[::-1, :, :]

最好在配置文件中添加:

USE_FLIPPED_V: True

相关文章:

  • 2021-12-01
  • 2022-12-23
  • 2021-07-05
  • 2021-09-10
  • 2021-06-27
  • 2022-12-23
  • 2021-10-30
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2022-12-23
  • 2021-12-05
  • 2021-11-21
相关资源
相似解决方案