def get_folder_data(train_path, val_path, data_shape, batch_size, num_workers=os.cpu_count()): train_dataset = ImageFolderDataset(train_path) val_dataset = ImageFolderDataset(val_path) train_transformer = gluon.data.vision.transforms.Compose([ transforms.RandomFlipLeftRight(), transforms.RandomResizedCrop(data_shape, scale=(0.5, 1.0)), transforms.RandomBrightness(0.5), transforms.RandomHue(0.1), transforms.Resize(data_shape), transforms.ToTensor() ]) val_transformer = gluon.data.vision.transforms.Compose([ transforms.Resize(data_shape), transforms.ToTensor() ]) train_dataloader = data.DataLoader(train_dataset.transform_first(train_transformer), batch_size=batch_size, shuffle=True, last_batch='rollover', num_workers=num_workers) val_dataloader = data.DataLoader(val_dataset.transform_first(val_transformer), batch_size=batch_size, shuffle=True, last_batch='rollover', num_workers=num_workers) return train_dataloader, val_dataloader
def test_transformer(): from mxnet.gluon.data.vision import transforms transform = transforms.Compose([ transforms.Resize(300), transforms.CenterCrop(256), transforms.RandomResizedCrop(224), transforms.RandomFlipLeftRight(), transforms.RandomColorJitter(0.1, 0.1, 0.1, 0.1), transforms.RandomBrightness(0.1), transforms.RandomContrast(0.1), transforms.RandomSaturation(0.1), transforms.RandomHue(0.1), transforms.RandomLighting(0.1), transforms.ToTensor(), transforms.Normalize([0, 0, 0], [1, 1, 1])]) transform(mx.nd.ones((245, 480, 3), dtype='uint8')).wait_to_read()
max_random_area = 1 min_random_area = 0.08 jitter_param = 0.4 lighting_param = 0.1 transform_train = transforms.Compose([ # transforms.RandomResizedCrop(resize, # scale=(min_random_area, max_random_area), # ratio=(min_aspect_ratio, max_aspect_ratio)), # Randomly flip the image horizontally transforms.RandomFlipLeftRight(), transforms.RandomBrightness(brightness=jitter_param), transforms.RandomSaturation(saturation=jitter_param), transforms.RandomHue(hue=jitter_param), transforms.RandomLighting(lighting_param), # Randomly crop an area and resize it to be 32x32, then pad it to be 40x40 gcv_transforms.RandomCrop(32, pad=4), # Transpose the image from height*width*num_channels to num_channels*height*width # and map values from [0, 255] to [0,1] transforms.ToTensor(), # Normalize the image with mean and standard deviation calculated across all images transforms.Normalize(mean_rgb, std_rgb), ]) transform_test = transforms.Compose([
img = image.imread('G:/gluon/mxnet/img/cat1.jpg') gb.plt.imshow(img.asnumpy()) def apply(img, aug, num_rows=2, num_cols=4, scale=1.5): Y = [aug(img) for _ in range(num_cols * num_rows)] gb.show_images(Y, num_rows, num_cols, scale) apply(img, transforms.RandomFlipLeftRight()) shape_aug = transforms.RandomResizedCrop((200, 200), scale=(.1, 1), ratio=(.5, 2)) apply(img, shape_aug) apply(img, transforms.RandomLighting(.5)) apply(img, transforms.RandomHue(.5)) train_augs = transforms.Compose([ transforms.RandomFlipLeftRight(), transforms.ToTensor(), ]) test_augs = transforms.Compose([ transforms.ToTensor(), ]) def load_cifar10(is_train, augs, batch_size): return gluon.data.DataLoader( gluon.data.vision.CIFAR10(train=is_train).transform_first(augs), batch_size=batch_size, shuffle=is_train,