def test_ToGray(fp): img = read_img(fp) result = transforms_cls.Compose([transforms_cls.ToGray()])(img) assert result.dtype == img.dtype assert result.ndim == 2 result = transforms_cls.Compose([transforms_cls.ToGray(output_channels=5) ])(img) assert result.shape == (img.shape[0], img.shape[1], 5) assert result.dtype == img.dtype
def test_RandomBrightness(fp): img = read_img(fp) result = transforms_cls.Compose([transforms_cls.RandomBrightness()])(img) assert result.shape == img.shape assert result.dtype == img.dtype result = transforms_cls.Compose( [transforms_cls.RandomBrightness(max_value=10)])(img) assert result.shape == img.shape assert result.dtype == img.dtype if result.ndim == 2: assert abs(float(result[0, 0]) - float(img[0, 0])) <= 10 else: assert abs(float(result[0, 0, 0]) - float(img[0, 0, 0])) <= 10
def test_RandomContrast(fp): img = read_img(fp) result = transforms_cls.Compose([transforms_cls.RandomContrast()])(img) assert result.shape == img.shape assert result.dtype == img.dtype result = transforms_cls.Compose( [transforms_cls.RandomContrast(max_factor=1.2)])(img) assert result.shape == img.shape assert result.dtype == img.dtype if result.ndim == 2: assert abs(float(result[0, 0]) / float(img[0, 0])) <= 1.2 else: assert abs(float(result[0, 0, 0]) / float(img[0, 0, 0])) <= 1.2
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_GaussianBlur(fp): img = read_img(fp) result = transforms_cls.Compose([ transforms_cls.GaussianBlur(kernel_size=5) ])(img) assert result.shape == img.shape assert result.dtype == img.dtype
def test_RandomNoise(fp): img = read_img(fp) for item in ['gaussian', 'salt', 'pepper', 's&p']: result = transforms_cls.Compose( [transforms_cls.RandomNoise(mode=item)])(img) assert result.shape == img.shape assert result.dtype == img.dtype
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_CenterCrop(fp): img = read_img(fp) result = transforms_cls.Compose([ transforms_cls.CenterCrop(300), ])(img) assert result.shape[0:2] == (300,300) assert result.dtype == img.dtype result = transforms_cls.Compose([ transforms_cls.CenterCrop((500,300)), ])(img) assert result.shape[0:2] == (500,300) assert result.dtype == img.dtype with pytest.raises(ValueError) as excinfo: transforms_cls.CenterCrop(1000)(img) assert 'the output_size should' in str(excinfo.value)
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_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_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