示例#1
0
 def __init__(self, batch_size, num_threads, device_id, data_dir, crop, dali_cpu=False):
     super(HybridTrainPipe, self).__init__(batch_size, num_threads, device_id, seed=12 + device_id)
     self.input = ops.FileReader(file_root=data_dir, shard_id=args.local_rank, num_shards=args.world_size, random_shuffle=True)
     #let user decide which pipeline works him bets for RN version he runs
     if dali_cpu:
         dali_device = "cpu"
         self.decode = ops.HostDecoderRandomCrop(device=dali_device, output_type=types.RGB,
                                                 random_aspect_ratio=[0.8, 1.25],
                                                 random_area=[0.1, 1.0],
                                                 num_attempts=100)
     else:
         dali_device = "gpu"
         # This padding sets the size of the internal nvJPEG buffers to be able to handle all images from full-sized ImageNet
         # without additional reallocations
         self.decode = ops.nvJPEGDecoderRandomCrop(device="mixed", output_type=types.RGB, device_memory_padding=211025920, host_memory_padding=140544512,
                                                   random_aspect_ratio=[0.8, 1.25],
                                                   random_area=[0.1, 1.0],
                                                   num_attempts=100)
     self.res = ops.Resize("gpu", resize_x=crop, resize_y=crop, interp_type=types.INTERP_TRIANGULAR)
     self.cmnp = ops.CropMirrorNormalize(device="gpu",
                                         output_dtype=types.FLOAT,
                                         output_layout=types.NCHW,
                                         crop=(crop, crop),
                                         image_type=types.RGB,
                                         mean=[0.485 * 255,0.456 * 255,0.406 * 255],
                                         std=[0.229 * 255,0.224 * 255,0.225 * 255])
     self.coin = ops.CoinFlip(probability=0.5)
     print('DALI "{0}" variant'.format(dali_device))
示例#2
0
 def __init__(self, rec_path, index_path, batch_size, input_size, num_gpus,
              num_threads, device_id):
     super(HybridTrainPipe, self).__init__(batch_size,
                                           num_threads,
                                           device_id,
                                           seed=12 + device_id)
     self.input = ops.MXNetReader(path=[rec_path],
                                  index_path=[index_path],
                                  random_shuffle=True,
                                  shard_id=device_id,
                                  num_shards=num_gpus)
     # self.decode = ops.nvJPEGDecoderRandomCrop(device="mixed",
     self.decode = ops.HostDecoderRandomCrop(
         device="cpu",
         output_type=types.RGB,
         random_aspect_ratio=[0.75, 1.25],
         random_area=[0.08, 1.0],
         num_attempts=100)
     self.resize = ops.Resize(device="gpu",
                              resize_x=input_size,
                              resize_y=input_size)
     self.cmnp = ops.CropMirrorNormalize(
         device="gpu",
         output_dtype=types.FLOAT,
         output_layout=types.NCHW,
         crop=(input_size, input_size),
         image_type=types.RGB,
         mean=[0.485 * 255, 0.456 * 255, 0.406 * 255],
         std=[0.229 * 255, 0.224 * 255, 0.225 * 255])
     self.coin = ops.CoinFlip(probability=0.5)
示例#3
0
    def __init__(self,
                 batch_size,
                 num_threads,
                 device_id,
                 data_dir,
                 crop,
                 dali_cpu=False):
        super(HybridTrainPipe, self).__init__(batch_size,
                                              num_threads,
                                              device_id,
                                              seed=12 + device_id)
        if torch.distributed.is_initialized():
            local_rank = torch.distributed.get_rank()
            world_size = torch.distributed.get_world_size()
        else:
            local_rank = 0
            world_size = 1

        self.input = ops.FileReader(file_root=data_dir,
                                    shard_id=local_rank,
                                    num_shards=world_size,
                                    random_shuffle=True)

        if dali_cpu:
            dali_device = "cpu"
            self.decode = ops.HostDecoderRandomCrop(
                device=dali_device,
                output_type=types.RGB,
                random_aspect_ratio=[0.75, 4. / 3.],
                random_area=[0.08, 1.0],
                num_attempts=100)
        else:
            dali_device = "gpu"
            # This padding sets the size of the internal nvJPEG buffers to be able to handle all images from full-sized ImageNet
            # without additional reallocations
            self.decode = ops.nvJPEGDecoderRandomCrop(
                device="mixed",
                output_type=types.RGB,
                device_memory_padding=211025920,
                host_memory_padding=140544512,
                random_aspect_ratio=[0.75, 4. / 3.],
                random_area=[0.08, 1.0],
                num_attempts=100)

        self.res = ops.Resize(device=dali_device,
                              resize_x=crop,
                              resize_y=crop,
                              interp_type=types.INTERP_TRIANGULAR)
        self.cmnp = ops.CropMirrorNormalize(
            device="gpu",
            output_dtype=types.FLOAT,
            output_layout=types.NCHW,
            crop=(crop, crop),
            image_type=types.RGB,
            mean=[0.485 * 255, 0.456 * 255, 0.406 * 255],
            std=[0.229 * 255, 0.224 * 255, 0.225 * 255])
        self.coin = ops.CoinFlip(probability=0.5)
    def __init__(self,
                 batch_size,
                 num_threads,
                 device_id,
                 crop,
                 colorjitter=None,
                 dali_cpu=False):
        super(ImageNetTrainPipe, self).__init__(batch_size,
                                                num_threads,
                                                device_id,
                                                seed=12 + device_id)
        self.data_input = ops.ExternalSource()
        self.label_input = ops.ExternalSource()
        self.colorjitter = colorjitter
        # let user decide which pipeline works him bets for RN version he runs
        if dali_cpu:
            dali_device = "cpu"
            self.decode = ops.HostDecoderRandomCrop(device=dali_device,
                                                    output_type=types.RGB)
            self.res = ops.Resize(resize_x=crop, resize_y=crop)
        else:
            dali_device = "gpu"
            # This padding sets the size of the internal nvJPEG buffers to be able to
            # handle all images from full-sized ImageNet without additional reallocations
            self.decode = ops.nvJPEGDecoder(device="mixed",
                                            output_type=types.RGB,
                                            device_memory_padding=211025920,
                                            host_memory_padding=140544512)
            self.res = ops.RandomResizedCrop(device=dali_device,
                                             size=(crop, crop))

        self.cmnp = ops.CropMirrorNormalize(
            device="gpu",
            output_dtype=types.FLOAT,
            output_layout=types.NCHW,
            crop=(crop, crop),
            image_type=types.RGB,
            mean=[0.485 * 255, 0.456 * 255, 0.406 * 255],
            std=[0.229 * 255, 0.224 * 255, 0.225 * 255])
        self.coin = ops.CoinFlip(probability=0.5)

        if self.colorjitter is not None:
            self.colorjit = ops.ColorTwist(device="gpu")
            self.rng_brightness = ops.Uniform(range=(1.0 - self.colorjitter[0],
                                                     1.0 +
                                                     self.colorjitter[0]))
            self.rng_contrast = ops.Uniform(range=(1.0 - self.colorjitter[1],
                                                   1.0 + self.colorjitter[1]))
            self.rng_saturation = ops.Uniform(range=(1.0 - self.colorjitter[2],
                                                     1.0 +
                                                     self.colorjitter[2]))
            self.rng_hue = ops.Uniform(range=(-self.colorjitter[3],
                                              self.colorjitter[3]))
示例#5
0
 def __init__(self, batch_size, num_threads, device_id, data_dir, crop,
              dali_cpu, file_list):
     super(HybridTrainPipe, self).__init__(batch_size,
                                           num_threads,
                                           device_id,
                                           seed=12 + device_id)
     self.input = ops.FileReader(file_root=data_dir,
                                 shard_id=args.local_rank,
                                 num_shards=args.world_size,
                                 random_shuffle=True,
                                 file_list=file_list)
     if dali_cpu:
         dali_device = "cpu"
         self.decode = ops.HostDecoderRandomCrop(
             device=dali_device,
             output_type=types.RGB,
             random_aspect_ratio=[0.8, 1.25],
             random_area=[0.1, 1.0],
             num_attempts=100)
     else:
         dali_device = "gpu"
         self.decode = ops.nvJPEGDecoderRandomCrop(
             device="mixed",
             output_type=types.RGB,
             device_memory_padding=211025920,
             host_memory_padding=140544512,
             random_aspect_ratio=[0.8, 1.25],
             random_area=[0.1, 1.0],
             num_attempts=100)
     self.res = ops.Resize(device=dali_device,
                           resize_x=crop,
                           resize_y=crop,
                           interp_type=types.INTERP_TRIANGULAR)
     self.cmnp = ops.CropMirrorNormalize(device="gpu",
                                         output_dtype=types.FLOAT,
                                         output_layout=types.NCHW,
                                         crop=(crop, crop),
                                         image_type=types.RGB,
                                         mean=mean,
                                         std=std)
     self.coin = ops.CoinFlip(probability=0.5)
     print('DALI "{0}" variant'.format(dali_device))
    def __init__(self, args, batch_size, num_threads, device_id, rec_path, idx_path,
                 shard_id, num_shards, crop_shape, nvjpeg_padding, prefetch_queue=3,
                 output_layout=types.NCHW, pad_output=True, dtype='float16', dali_cpu=False):
        super(HybridTrainPipe, self).__init__(batch_size, num_threads, device_id, seed=12 + device_id, prefetch_queue_depth = prefetch_queue)
        self.input = ops.MXNetReader(path=[rec_path], index_path=[idx_path],
                                     random_shuffle=args.shuffle, shard_id=shard_id, num_shards=num_shards)

        if dali_cpu:
            dali_device = "cpu"
            if args.dali_fuse_decoder:
                self.decode = ops.HostDecoderRandomCrop(device=dali_device, output_type=types.RGB)
            else:
                self.decode = ops.HostDecoder(device=dali_device, output_type=types.RGB)
        else:
            dali_device = "gpu"
            if args.dali_fuse_decoder:
                # self.decode = ops.nvJPEGDecoderRandomCrop(device="mixed", output_type=types.RGB,
                self.decode = ops.ImageDecoderRandomCrop(device="mixed", output_type=types.RGB,
                                                          random_area=args.random_area, random_aspect_ratio=args.random_aspect_ratio,
                                                          device_memory_padding=nvjpeg_padding, host_memory_padding=nvjpeg_padding)
            else:
                # self.decode = ops.nvJPEGDecoder(device="mixed", output_type=types.RGB,
                self.decode = ops.ImageDecoder(device="mixed", output_type=types.RGB,
                                                device_memory_padding=nvjpeg_padding, host_memory_padding=nvjpeg_padding)

        if args.dali_fuse_decoder:
            self.resize = ops.Resize(device=dali_device, resize_x=crop_shape[1], resize_y=crop_shape[0])
        else:
            self.resize = ops.RandomResizedCrop(device=dali_device, size=crop_shape, random_area=args.random_area,
                                                random_aspect_ratio=args.random_aspect_ratio)

        self.cmnp = ops.CropMirrorNormalize(device="gpu",
                                            output_dtype=types.FLOAT16 if dtype == 'float16' else types.FLOAT,
                                            output_layout=output_layout, crop=crop_shape, pad_output=pad_output,
                                            image_type=types.RGB, mean=args.rgb_mean, std=args.rgb_std)
        if args.random_mirror:
            self.coin = ops.CoinFlip(probability=0.5)