Exemple #1
0
def cityPIL_randscalecrop(cached_data_file,
                          data_dir,
                          classes,
                          batch_size,
                          num_work=6,
                          scale=(0.5, 2.0),
                          size=(1024, 512),
                          scale1=1,
                          ignore_idx=255):
    print("This input size is  " + str(size))

    if not os.path.isfile(cached_data_file):
        dataLoad = ld.LoadData(data_dir, classes, cached_data_file)
        data = dataLoad.processData()
        if data is None:
            print('Error while pickling data. Please check.')
            exit(-1)
    else:
        data = pickle.load(open(cached_data_file, "rb"))

    if isinstance(size, tuple):
        size = size
    else:
        size = (size, size)

    if isinstance(scale, tuple):
        scale = scale
    else:
        scale = (scale, scale)

    train_transforms = pilTransforms.Compose([
        pilTransforms.RandomScale(scale=scale),
        pilTransforms.RandomCrop(crop_size=size, ignore_idx=ignore_idx),
        pilTransforms.RandomFlip(),
        pilTransforms.Normalize(scaleIn=scale1)
    ])
    val_transforms = pilTransforms.Compose(
        [pilTransforms.Resize(size=size),
         pilTransforms.Normalize(scaleIn=1)])
    trainLoader = torch.utils.data.DataLoader(myDataLoader.PILDataset(
        data['trainIm'],
        data['trainAnnot'],
        Double=False,
        transform=train_transforms),
                                              batch_size=batch_size,
                                              shuffle=True,
                                              num_workers=num_work,
                                              pin_memory=True)

    valLoader = torch.utils.data.DataLoader(myDataLoader.PILDataset(
        data['valIm'],
        data['valAnnot'],
        Double=False,
        transform=val_transforms),
                                            batch_size=batch_size,
                                            shuffle=False,
                                            num_workers=num_work,
                                            pin_memory=True)

    return trainLoader, valLoader, data
Exemple #2
0
def portraitPIL_Doublerandscalecrop(cached_data_file,
                                    data_dir,
                                    classes,
                                    batch_size,
                                    scale=(0.8, 1.0),
                                    size=(1024, 512),
                                    scale1=1,
                                    scale2=2,
                                    ignore_idx=255,
                                    edge=False,
                                    num_work=6,
                                    Augset=True):

    print("This input size is  " + str(size))

    if not os.path.isfile(cached_data_file):
        if Augset:
            additional_data = []

            additional_data.append('/Nukki/baidu_V1/')
            additional_data.append('/Nukki/baidu_V2/')

            dataLoad = ld.LoadData(data_dir,
                                   classes,
                                   cached_data_file,
                                   additional=additional_data)
            data = dataLoad.processDataAug()
        else:
            dataLoad = ld.LoadData(data_dir, classes, cached_data_file)
            data = dataLoad.processData()

        if data is None:
            print('Error while pickling data. Please check.')
            exit(-1)
    else:
        data = pickle.load(open(cached_data_file, "rb"))

    if isinstance(size, tuple):
        size = size
    else:
        size = (size, size)

    if isinstance(scale, tuple):
        scale = scale
    else:
        scale = (scale, scale)

    train_transforms = pilTransforms.Compose([
        # pilTransforms.data_aug_color(),
        pilTransforms.RandomScale(scale=scale),
        pilTransforms.RandomCrop(crop_size=size, ignore_idx=ignore_idx),
        pilTransforms.RandomFlip(),
        pilTransforms.DoubleNormalize(scale1=scale1, scale2=scale2)
    ])
    val_transforms = pilTransforms.Compose([
        pilTransforms.Resize(size=size),
        # pilTransforms.RandomScale(scale=scale),
        # pilTransforms.RandomCrop(crop_size=size, ignore_idx=ignore_idx),
        # pilTransforms.RandomFlip(),
        pilTransforms.DoubleNormalize(scale1=scale2, scale2=1)
    ])
    trainLoader = torch.utils.data.DataLoader(myDataLoader.PILDataset(
        data['trainIm'],
        data['trainAnnot'],
        Double=True,
        ignore_idx=ignore_idx,
        edge=edge,
        transform=train_transforms),
                                              batch_size=batch_size,
                                              shuffle=True,
                                              num_workers=num_work,
                                              pin_memory=True)

    valLoader = torch.utils.data.DataLoader(myDataLoader.PILDataset(
        data['valIm'],
        data['valAnnot'],
        Double=True,
        ignore_idx=ignore_idx,
        edge=True,
        transform=val_transforms),
                                            batch_size=batch_size,
                                            shuffle=False,
                                            num_workers=num_work,
                                            pin_memory=True)

    return trainLoader, valLoader, data