def load_data(traindir, valdir): train_transform = T_cls.Compose([ T_cls.RandomHorizontalFlip(), T_cls.RandomVerticalFlip(), T_cls.ToTensor(), T_cls.Normalize(), ]) val_transform = T_cls.Compose([ T_cls.ToTensor(), T_cls.Normalize(), ]) dataset_train = ImageFolder(traindir, train_transform) dataset_val = ImageFolder(valdir, val_transform) return dataset_train, dataset_val
def test_ToTensor(fp): img = read_img(fp) result = transforms_cls.Compose([ transforms_cls.ToTensor() ])(img) assert type(result) == torch.Tensor assert len(result.shape) == 3 assert result.shape[1:3] == img.shape[0:2]
def test_Normalize(fp): img = read_img(fp) channels = 1 if img.ndim==2 else img.shape[2] mean = [img.mean()] if channels==1 else np.array(img.mean(axis=(0, 1))).tolist() std = [img.std()] if channels==1 else np.array(img.std(axis=(0, 1))).tolist() result = transforms_cls.Compose([ transforms_cls.ToTensor(), transforms_cls.Normalize(mean, std) ])(img) assert type(result) == torch.Tensor assert len(result.shape) == 3 assert result.shape[1:3] == img.shape[0:2]
def _get_simclr_pipeline_transform(self): gray = transforms_cls.ToGray() # Mising Color Jitter (and others check paper, probably need to be handcrafted). data_transforms = transforms_cls.Compose([ transforms_cls.RandomResizedCrop(crop_size=int( self.input_shape[0] * .8), target_size=self.input_shape[0]), transforms_cls.RandomHorizontalFlip(), # Missing Color Jitter #RandomApply([gray], p=0.8), #Should be random w some probability transforms_cls.GaussianBlur(kernel_size=13), transforms_cls.ToTensor() ]) return data_transforms
def test_Flip(fp): img = read_img(fp) result = transforms_cls.RandomFlip(p=0)(img) assert result.dtype == img.dtype assert result.shape[0:2] == img.shape[0:2] if result.ndim == 2: height, width = img.shape assert result[0, 0] == img[0, 0] else: height, width, depth = img.shape assert (result[0, 0, :] == img[0, 0, :]).any() == True # tensor result = transforms_cls.Compose( [transforms_cls.RandomFlip(p=0.1), transforms_cls.ToTensor()])(img) assert type(result) == torch.Tensor assert result.shape[1:3] == img.shape[0:2]
def test_Resize(fp): img = read_img(fp) result = transforms_cls.Compose([ transforms_cls.Resize(300), transforms_cls.ToTensor(), ])(img) assert result.shape[1:3] == torch.Size([300, 300]) assert type(result) == torch.Tensor result = transforms_cls.Compose([ transforms_cls.Resize(833), ])(img) assert result.shape[0:2] == (833, 833) assert result.dtype == img.dtype result = transforms_cls.Compose([ transforms_cls.Resize((500,300)), ])(img) assert result.shape[0:2] == (500, 300) assert result.dtype == img.dtype
def test_Pad(fp): img = read_img(fp) # constant value result = transforms_cls.Pad(10, fill=1)(img) if result.ndim == 2: assert result[0, 0] == 1 else: assert result[0, 0, 0] == 1 # reflect value result = transforms_cls.Pad(20, padding_mode='reflect')(img) assert result.shape[0:2] == (img.shape[0] + 40, img.shape[1] + 40) if result.ndim == 2: assert result[0, 0] == img[20, 20] else: assert result[0, 0, 0] == img[20, 20, 0] assert result.dtype == img.dtype # all padding mode methods for item in [ 'reflect', 'edge', 'linear_ramp', 'maximum', 'mean', 'median', 'minimum', 'symmetric', 'wrap' ]: # for item in ['edge']: result = transforms_cls.Pad(10, padding_mode=item)(img) assert result.dtype == img.dtype assert result.shape[0:2] == (img.shape[0] + 20, img.shape[1] + 20) result = transforms_cls.Pad((10, 20), padding_mode=item)(img) assert result.shape[0:2] == (img.shape[0] + 40, img.shape[1] + 20) assert result.dtype == img.dtype result = transforms_cls.Pad((10, 20, 30, 40), padding_mode=item)(img) assert result.shape[0:2] == (img.shape[0] + 60, img.shape[1] + 40) assert result.dtype == img.dtype result = transforms_cls.Compose( [transforms_cls.Pad(10, fill=1), transforms_cls.ToTensor()])(img) assert type(result) == torch.Tensor