Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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]
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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]
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
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]
Ejemplo n.º 13
0
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