Exemplo n.º 1
0
 def __init__(self,
              dataset=CocoDataSet().__dict__,
              fields=['image', 'gt_box', 'gt_label', 'gt_score'],
              image_shape=[3, 608, 608],
              sample_transforms=[
                  DecodeImage(to_rgb=True, with_mixup=True),
                  MixupImage(alpha=1.5, beta=1.5),
                  NormalizeBox(),
                  RandomDistort(),
                  ExpandImage(max_ratio=4., prob=.5,
                              mean=[123.675, 116.28, 103.53]),
                  CropImage([[1, 1, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.1, 1.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.3, 1.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.5, 1.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.7, 1.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.9, 1.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.0, 1.0]]),
                  RandomInterpImage(target_size=608),
                  RandomFlipImage(is_normalized=True),
                  NormalizeImage(
                      mean=[0.485, 0.456, 0.406],
                      std=[0.229, 0.224, 0.225],
                      is_scale=True,
                      is_channel_first=False),
                  Permute(to_bgr=False),
              ],
              batch_transforms=[
                  RandomShape(sizes=[
                      320, 352, 384, 416, 448, 480, 512, 544, 576, 608
                  ])
              ],
              batch_size=8,
              shuffle=True,
              samples=-1,
              drop_last=True,
              with_background=False,
              num_workers=8,
              bufsize=128,
              use_process=True,
              num_max_boxes=50,
              mixup_epoch=250):
     sample_transforms.append(ArrangeYOLO())
     super(YoloTrainFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         with_background=with_background,
         num_workers=num_workers,
         bufsize=bufsize,
         use_process=use_process)
     self.num_max_boxes = num_max_boxes
     self.mixup_epoch = mixup_epoch
     self.mode = 'TRAIN'
Exemplo n.º 2
0
 def __init__(self,
              dataset=CocoDataSet(COCO_VAL_ANNOTATION,
                                  COCO_VAL_IMAGE_DIR).__dict__,
              fields=['image', 'im_info', 'im_id', 'im_shape'],
              image_shape=[3, 800, 1333],
              sample_transforms=[
                  DecodeImage(to_rgb=True),
                  NormalizeImage(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225],
                                 is_scale=True,
                                 is_channel_first=False),
                  ResizeImage(target_size=800, max_size=1333, interp=1),
                  Permute(to_bgr=False)
              ],
              batch_transforms=[PadBatch()],
              batch_size=1,
              shuffle=False,
              samples=-1,
              drop_last=False,
              num_workers=2,
              use_padded_im_info=True):
     sample_transforms.append(ArrangeTestRCNN())
     super(FasterRCNNEvalFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         num_workers=num_workers,
         use_padded_im_info=use_padded_im_info)
     self.mode = 'VAL'
Exemplo n.º 3
0
 def __init__(self,
              dataset=SimpleDataSet(VOC_TEST_ANNOTATION).__dict__,
              fields=['image', 'im_id'],
              image_shape=[3, 300, 300],
              sample_transforms=[
                  DecodeImage(to_rgb=True),
                  ResizeImage(target_size=300, use_cv2=False, interp=1),
                  Permute(),
                  NormalizeImage(mean=[127.5, 127.5, 127.5],
                                 std=[127.502231, 127.502231, 127.502231],
                                 is_scale=False)
              ],
              batch_transforms=[],
              batch_size=1,
              shuffle=False,
              samples=-1,
              drop_last=False,
              num_workers=8,
              bufsize=10,
              use_process=False):
     sample_transforms.append(ArrangeTestSSD())
     if isinstance(dataset, dict):
         dataset = SimpleDataSet(**dataset)
     super(SSDTestFeed, self).__init__(dataset,
                                       fields,
                                       image_shape,
                                       sample_transforms,
                                       batch_transforms,
                                       batch_size=batch_size,
                                       shuffle=shuffle,
                                       samples=samples,
                                       drop_last=drop_last,
                                       num_workers=num_workers)
     self.mode = 'TEST'
Exemplo n.º 4
0
    def test_loader(self):
        coco_loader = VOCDataSet(
            dataset_dir=self.image_dir,
            image_dir=self.root_path,
            anno_path=self.anno_path,
            sample_num=240,
            use_default_label=False,
            label_list='/path/to/your/fl_fruit/label_list.txt')
        sample_trans = [
            DecodeImage(to_rgb=True),
            RandomFlipImage(),
            NormalizeImage(mean=[0.485, 0.456, 0.406],
                           std=[0.229, 0.224, 0.225],
                           is_scale=True,
                           is_channel_first=False),
            ResizeImage(target_size=800, max_size=1333, interp=1),
            Permute(to_bgr=False)
        ]
        batch_trans = [
            PadBatch(pad_to_stride=32, use_padded_im_info=True),
        ]

        inputs_def = {
            'fields':
            ['image', 'im_info', 'im_id', 'gt_bbox', 'gt_class', 'is_crowd'],
        }
        data_loader = Reader(coco_loader,
                             sample_transforms=sample_trans,
                             batch_transforms=batch_trans,
                             batch_size=1,
                             shuffle=True,
                             drop_empty=True,
                             inputs_def=inputs_def)()

        return data_loader
    def test_loader_multi_threads(self):
        coco_loader = COCODataSet(dataset_dir=self.root_path,
                                  image_dir=self.image_dir,
                                  anno_path=self.anno_path,
                                  sample_num=10)
        sample_trans = [
            DecodeImage(to_rgb=True),
            ResizeImage(target_size=800, max_size=1333, interp=1),
            Permute(to_bgr=False)
        ]
        batch_trans = [
            PadBatch(pad_to_stride=32, use_padded_im_info=True),
        ]

        inputs_def = {
            'fields': [
                'image', 'im_info', 'im_id', 'gt_bbox', 'gt_class', 'is_crowd',
                'gt_mask'
            ],
        }
        data_loader = Reader(coco_loader,
                             sample_transforms=sample_trans,
                             batch_transforms=batch_trans,
                             batch_size=2,
                             shuffle=True,
                             drop_empty=True,
                             worker_num=2,
                             use_process=False,
                             bufsize=8,
                             inputs_def=inputs_def)()
        for i in range(2):
            for samples in data_loader:
                for sample in samples:
                    im_shape = sample[0].shape
                    self.assertEqual(im_shape[0], 3)
                    self.assertEqual(im_shape[1] % 32, 0)
                    self.assertEqual(im_shape[2] % 32, 0)

                    im_info_shape = sample[1].shape
                    self.assertEqual(im_info_shape[-1], 3)

                    im_id_shape = sample[2].shape
                    self.assertEqual(im_id_shape[-1], 1)

                    gt_bbox_shape = sample[3].shape
                    self.assertEqual(gt_bbox_shape[-1], 4)

                    gt_class_shape = sample[4].shape
                    self.assertEqual(gt_class_shape[-1], 1)
                    self.assertEqual(gt_class_shape[0], gt_bbox_shape[0])

                    is_crowd_shape = sample[5].shape
                    self.assertEqual(is_crowd_shape[-1], 1)
                    self.assertEqual(is_crowd_shape[0], gt_bbox_shape[0])

                    mask = sample[6]
                    self.assertEqual(len(mask), gt_bbox_shape[0])
                    self.assertEqual(mask[0][0].shape[-1], 2)
            data_loader.reset()
Exemplo n.º 6
0
    def __init__(self,
                 dataset=CocoDataSet(COCO_VAL_ANNOTATION,
                                     COCO_VAL_IMAGE_DIR).__dict__,
                 fields=['image', 'im_size', 'im_id', 'gt_box',
                         'gt_label', 'is_difficult'],
                 image_shape=[3, 608, 608],
                 sample_transforms=[
                     DecodeImage(to_rgb=True),
                     ResizeImage(target_size=608, interp=2),
                     NormalizeImage(
                         mean=[0.485, 0.456, 0.406],
                         std=[0.229, 0.224, 0.225],
                         is_scale=True,
                         is_channel_first=False),
                     Permute(to_bgr=False),
                 ],
                 batch_transforms=[],
                 batch_size=8,
                 shuffle=False,
                 samples=-1,
                 drop_last=False,
                 with_background=False,
                 num_workers=8,
                 num_max_boxes=50,
                 use_process=False,
                 memsize=None):
        sample_transforms.append(ArrangeEvalYOLO())
        super(YoloEvalFeed, self).__init__(
            dataset,
            fields,
            image_shape,
            sample_transforms,
            batch_transforms,
            batch_size=batch_size,
            shuffle=shuffle,
            samples=samples,
            drop_last=drop_last,
            with_background=with_background,
            num_workers=num_workers,
            use_process=use_process,
            memsize=memsize)
        self.num_max_boxes = num_max_boxes
        self.mode = 'VAL'
        self.bufsize = 128

        # support image shape config, resize image with image_shape
        for i, trans in enumerate(sample_transforms):
            if isinstance(trans, ResizeImage):
                sample_transforms[i] = ResizeImage(
                        target_size=self.image_shape[-1],
                        interp=trans.interp)
            if isinstance(trans, Resize):
                sample_transforms[i].target_dim = self.image_shape[-1]
Exemplo n.º 7
0
 def __init__(self,
              dataset=VocDataSet().__dict__,
              fields=['image', 'gt_box', 'gt_label'],
              image_shape=[3, 300, 300],
              sample_transforms=[
                  DecodeImage(to_rgb=True, with_mixup=False),
                  NormalizeBox(),
                  RandomDistort(brightness_lower=0.875,
                                brightness_upper=1.125,
                                is_order=True),
                  ExpandImage(max_ratio=4, prob=0.5),
                  CropImage(batch_sampler=[[1, 1, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.1, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.3, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.5, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.7, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.9, 0.0],
                             [1, 50, 0.3, 1.0, 0.5, 2.0, 0.0, 1.0]],
                            satisfy_all=False, avoid_no_bbox=False),
                  ResizeImage(target_size=300, use_cv2=False, interp=1),
                  RandomFlipImage(is_normalized=True),
                  Permute(),
                  NormalizeImage(mean=[127.5, 127.5, 127.5],
                                 std=[127.502231, 127.502231, 127.502231],
                                 is_scale=False)
              ],
              batch_transforms=[],
              batch_size=32,
              shuffle=True,
              samples=-1,
              drop_last=True,
              num_workers=8,
              bufsize=10,
              use_process=True,
              memsize=None):
     sample_transforms.append(ArrangeSSD())
     super(SSDTrainFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         num_workers=num_workers,
         bufsize=bufsize,
         use_process=use_process,
         memsize=None)
     self.mode = 'TRAIN'
Exemplo n.º 8
0
 def __init__(self,
              dataset=CocoDataSet().__dict__,
              fields=[
                  'image', 'im_info', 'im_id', 'gt_box', 'gt_label',
                  'is_crowd'
              ],
              image_shape=[None, 3, None, None],
              sample_transforms=[
                  DecodeImage(to_rgb=True),
                  RandomFlipImage(prob=0.5),
                  NormalizeImage(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225],
                                 is_scale=True,
                                 is_channel_first=False),
                  ResizeImage(target_size=800, max_size=1333, interp=1),
                  Permute(to_bgr=False)
              ],
              batch_transforms=[PadBatch()],
              batch_size=1,
              shuffle=True,
              samples=-1,
              drop_last=False,
              bufsize=10,
              num_workers=2,
              use_process=False,
              memsize=None,
              class_aware_sampling=False):
     # XXX this should be handled by the data loader, since `fields` is
     # given, just collect them
     sample_transforms.append(ArrangeRCNN())
     super(FasterRCNNTrainFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         bufsize=bufsize,
         num_workers=num_workers,
         use_process=use_process,
         memsize=memsize,
         class_aware_sampling=class_aware_sampling)
     # XXX these modes should be unified
     self.mode = 'TRAIN'
Exemplo n.º 9
0
 def __init__(self,
              dataset=CocoDataSet().__dict__,
              fields=[
                  'image', 'im_info', 'im_id', 'gt_box', 'gt_label',
                  'is_crowd', 'gt_mask'
              ],
              image_shape=[None, 3, None, None],
              sample_transforms=[
                  DecodeImage(to_rgb=True),
                  RandomFlipImage(prob=0.5, is_mask_flip=True),
                  NormalizeImage(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225],
                                 is_scale=True,
                                 is_channel_first=False),
                  ResizeImage(target_size=800,
                              max_size=1333,
                              interp=1,
                              use_cv2=True),
                  Permute(to_bgr=False, channel_first=True)
              ],
              batch_transforms=[PadBatch()],
              batch_size=1,
              shuffle=True,
              samples=-1,
              drop_last=False,
              num_workers=2,
              use_process=False,
              use_padded_im_info=False):
     sample_transforms.append(ArrangeRCNN(is_mask=True))
     super(MaskRCNNTrainFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         num_workers=num_workers,
         use_process=use_process)
     self.mode = 'TRAIN'
Exemplo n.º 10
0
 def __init__(
         self,
         dataset=VocDataSet(VOC_VAL_ANNOTATION).__dict__,
         fields=['image', 'im_shape', 'im_id', 'gt_box',
                      'gt_label', 'is_difficult'],
         image_shape=[3, 300, 300],
         sample_transforms=[
             DecodeImage(to_rgb=True, with_mixup=False),
             NormalizeBox(),
             ResizeImage(target_size=300, use_cv2=False, interp=1),
             Permute(),
             NormalizeImage(
                 mean=[127.5, 127.5, 127.5],
                 std=[127.502231, 127.502231, 127.502231],
                 is_scale=False)
         ],
         batch_transforms=[],
         batch_size=64,
         shuffle=False,
         samples=-1,
         drop_last=True,
         num_workers=8,
         bufsize=10,
         use_process=False,
         memsize=None):
     sample_transforms.append(ArrangeEvalSSD(fields))
     super(SSDEvalFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         num_workers=num_workers,
         bufsize=bufsize,
         use_process=use_process,
         memsize=memsize)
     self.mode = 'VAL'
Exemplo n.º 11
0
 def __init__(self,
              dataset=SimpleDataSet(COCO_VAL_ANNOTATION,
                                    COCO_VAL_IMAGE_DIR).__dict__,
              fields=['image', 'im_size', 'im_id'],
              image_shape=[3, 608, 608],
              sample_transforms=[
                  DecodeImage(to_rgb=True),
                  ResizeImage(target_size=608, interp=2),
                  NormalizeImage(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225],
                                 is_scale=True,
                                 is_channel_first=False),
                  Permute(to_bgr=False),
              ],
              batch_transforms=[],
              batch_size=1,
              shuffle=False,
              samples=-1,
              drop_last=False,
              with_background=False,
              num_workers=8,
              num_max_boxes=50,
              use_process=False):
     sample_transforms.append(ArrangeTestYOLO())
     if isinstance(dataset, dict):
         dataset = SimpleDataSet(**dataset)
     super(YoloTestFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         with_background=with_background,
         num_workers=num_workers,
         use_process=use_process)
     self.mode = 'TEST'
     self.bufsize = 128
Exemplo n.º 12
0
 def __init__(self,
              dataset=SimpleDataSet(COCO_VAL_ANNOTATION,
                                    COCO_VAL_IMAGE_DIR).__dict__,
              fields=['image', 'im_info', 'im_id', 'im_shape'],
              image_shape=[3, 800, 1333],
              sample_transforms=[
                  DecodeImage(to_rgb=True),
                  NormalizeImage(
                      mean=[0.485, 0.456, 0.406],
                      std=[0.229, 0.224, 0.225],
                      is_scale=True,
                      is_channel_first=False),
                  Permute(to_bgr=False, channel_first=True)
              ],
              batch_transforms=[PadBatch()],
              batch_size=1,
              shuffle=False,
              samples=-1,
              drop_last=False,
              num_workers=2,
              use_process=False,
              use_padded_im_info=True):
     sample_transforms.append(ArrangeTestRCNN())
     if isinstance(dataset, dict):
         dataset = SimpleDataSet(**dataset)
     super(MaskRCNNTestFeed, self).__init__(
         dataset,
         fields,
         image_shape,
         sample_transforms,
         batch_transforms,
         batch_size=batch_size,
         shuffle=shuffle,
         samples=samples,
         drop_last=drop_last,
         num_workers=num_workers,
         use_process=use_process,
         use_padded_im_info=use_padded_im_info)
     self.mode = 'TEST'