Esempio n. 1
0
    def test_color_jitter(self):

        jitter_param = {
            'brightness_factor': torch.tensor(1.),
            'contrast_factor': torch.tensor(1.),
            'saturation_factor': torch.tensor(1.),
            'hue_factor': torch.tensor(0.),
            'order': torch.tensor([2, 3, 0, 1])
        }

        input = torch.rand(3, 5, 5)  # 3 x 5 x 5

        expected = input

        expected_transform = torch.eye(3).unsqueeze(0)  # 3 x 3

        assert_allclose(F.apply_color_jitter(input, jitter_param),
                        expected,
                        atol=1e-4,
                        rtol=1e-5)
        assert_allclose(F.apply_color_jitter(input,
                                             jitter_param,
                                             return_transform=True)[0],
                        expected,
                        atol=1e-4,
                        rtol=1e-5)
        assert_allclose(
            F.apply_color_jitter(input, jitter_param,
                                 return_transform=True)[1], expected_transform)
Esempio n. 2
0
    def test_color_jitter_batch(self):
        batch_size = 2
        jitter_param = {
            'brightness_factor': torch.tensor([1.] * batch_size),
            'contrast_factor': torch.tensor([1.] * batch_size),
            'saturation_factor': torch.tensor([1.] * batch_size),
            'hue_factor': torch.tensor([0.] * batch_size),
            'order': torch.tensor([2, 3, 0, 1])
        }

        input = torch.rand(batch_size, 3, 5, 5)  # 2 x 3 x 5 x 5
        expected = input

        expected_transform = torch.eye(3).unsqueeze(0).expand(
            (batch_size, 3, 3))  # 2 x 3 x 3

        assert_allclose(F.apply_color_jitter(input, jitter_param),
                        expected,
                        atol=1e-4,
                        rtol=1e-5)
        assert_allclose(F.apply_color_jitter(input,
                                             jitter_param,
                                             return_transform=True)[0],
                        expected,
                        atol=1e-4,
                        rtol=1e-5)
        assert_allclose(
            F.apply_color_jitter(input, jitter_param,
                                 return_transform=True)[1], expected_transform)
Esempio n. 3
0
    def test_random_brightness(self):
        torch.manual_seed(42)
        jitter_param = {
            'brightness_factor': torch.tensor([1.1529, 1.1660]),
            'contrast_factor': torch.tensor([1., 1.]),
            'hue_factor': torch.tensor([0., 0.]),
            'saturation_factor': torch.tensor([1., 1.]),
            'order': torch.tensor([2, 3, 0, 1])
        }

        input = torch.tensor([[[[0.1, 0.2, 0.3], [0.6, 0.5, 0.4],
                                [0.7, 0.8, 1.]]]])  # 1 x 1 x 3 x 3
        input = input.repeat(2, 3, 1, 1)  # 2 x 3 x 3

        expected = torch.tensor([[[[0.2529, 0.3529, 0.4529],
                                   [0.7529, 0.6529, 0.5529],
                                   [0.8529, 0.9529, 1.0000]],
                                  [[0.2529, 0.3529, 0.4529],
                                   [0.7529, 0.6529, 0.5529],
                                   [0.8529, 0.9529, 1.0000]],
                                  [[0.2529, 0.3529, 0.4529],
                                   [0.7529, 0.6529, 0.5529],
                                   [0.8529, 0.9529, 1.0000]]],
                                 [[[0.2660, 0.3660, 0.4660],
                                   [0.7660, 0.6660, 0.5660],
                                   [0.8660, 0.9660, 1.0000]],
                                  [[0.2660, 0.3660, 0.4660],
                                   [0.7660, 0.6660, 0.5660],
                                   [0.8660, 0.9660, 1.0000]],
                                  [[0.2660, 0.3660, 0.4660],
                                   [0.7660, 0.6660, 0.5660],
                                   [0.8660, 0.9660,
                                    1.0000]]]])  # 1 x 1 x 3 x 3

        assert_allclose(F.apply_color_jitter(input, jitter_param), expected)
Esempio n. 4
0
    def test_random_contrast(self):
        torch.manual_seed(42)
        jitter_param = {
            'brightness_factor': torch.tensor([1.0, 1.0]),
            'contrast_factor': torch.tensor([0.9531, 1.1837]),
            'hue_factor': torch.tensor([0.0, 0.0]),
            'saturation_factor': torch.tensor([1.0, 1.0]),
            'order': torch.tensor([2, 3, 0, 1]),
        }

        input = torch.tensor([[[[0.1, 0.2, 0.3], [0.6, 0.5, 0.4], [0.7, 0.8, 1.0]]]])  # 1 x 1 x 3 x 3
        input = input.repeat(2, 3, 1, 1)  # 2 x 3 x 3

        expected = torch.tensor(
            [
                [
                    [[0.0953, 0.1906, 0.2859], [0.5719, 0.4766, 0.3813], [0.6672, 0.7625, 0.9531]],
                    [[0.0953, 0.1906, 0.2859], [0.5719, 0.4766, 0.3813], [0.6672, 0.7625, 0.9531]],
                    [[0.0953, 0.1906, 0.2859], [0.5719, 0.4766, 0.3813], [0.6672, 0.7625, 0.9531]],
                ],
                [
                    [[0.1184, 0.2367, 0.3551], [0.7102, 0.5919, 0.4735], [0.8286, 0.9470, 1.0000]],
                    [[0.1184, 0.2367, 0.3551], [0.7102, 0.5919, 0.4735], [0.8286, 0.9470, 1.0000]],
                    [[0.1184, 0.2367, 0.3551], [0.7102, 0.5919, 0.4735], [0.8286, 0.9470, 1.0000]],
                ],
            ]
        )

        assert_allclose(F.apply_color_jitter(input, jitter_param), expected, atol=1e-4, rtol=1e-5)
Esempio n. 5
0
    def test_color_jitter_batch(self):
        batch_size = 2
        jitter_param = {
            'brightness_factor': torch.tensor([1.0] * batch_size),
            'contrast_factor': torch.tensor([1.0] * batch_size),
            'saturation_factor': torch.tensor([1.0] * batch_size),
            'hue_factor': torch.tensor([0.0] * batch_size),
            'order': torch.tensor([2, 3, 0, 1]),
        }

        input = torch.rand(batch_size, 3, 5, 5)  # 2 x 3 x 5 x 5
        expected = input

        assert_allclose(F.apply_color_jitter(input, jitter_param), expected, atol=1e-4, rtol=1e-5)
Esempio n. 6
0
    def test_random_saturation(self):
        torch.manual_seed(42)
        jitter_param = {
            'brightness_factor': torch.tensor([1., 1.]),
            'contrast_factor': torch.tensor([1., 1.]),
            'hue_factor': torch.tensor([0., 0.]),
            'saturation_factor': torch.tensor([0.9026, 1.1175]),
            'order': torch.tensor([2, 3, 0, 1])
        }

        input = torch.tensor([[[[0.1, 0.2, 0.3],
                                [0.6, 0.5, 0.4],
                                [0.7, 0.8, 1.]],

                               [[1.0, 0.5, 0.6],
                                [0.6, 0.3, 0.2],
                                [0.8, 0.1, 0.2]],

                               [[0.6, 0.8, 0.7],
                                [0.9, 0.3, 0.2],
                                [0.8, 0.4, .5]]]])  # 1 x 1 x 3 x 3
        input = input.repeat(2, 1, 1, 1)  # 2 x 3 x 3

        expected = torch.tensor([[[[1.8763e-01, 2.5842e-01, 3.3895e-01],
                                   [6.2921e-01, 5.0000e-01, 4.0000e-01],
                                   [7.0974e-01, 8.0000e-01, 1.0000e+00]],

                                  [[1.0000e+00, 5.2921e-01, 6.0974e-01],
                                   [6.2921e-01, 3.1947e-01, 2.1947e-01],
                                   [8.0000e-01, 1.6816e-01, 2.7790e-01]],

                                  [[6.3895e-01, 8.0000e-01, 7.0000e-01],
                                   [9.0000e-01, 3.1947e-01, 2.1947e-01],
                                   [8.0000e-01, 4.3895e-01, 5.4869e-01]]],


                                 [[[1.1921e-07, 1.2953e-01, 2.5302e-01],
                                   [5.6476e-01, 5.0000e-01, 4.0000e-01],
                                   [6.8825e-01, 8.0000e-01, 1.0000e+00]],

                                  [[1.0000e+00, 4.6476e-01, 5.8825e-01],
                                   [5.6476e-01, 2.7651e-01, 1.7651e-01],
                                   [8.0000e-01, 1.7781e-02, 1.0603e-01]],

                                  [[5.5556e-01, 8.0000e-01, 7.0000e-01],
                                   [9.0000e-01, 2.7651e-01, 1.7651e-01],
                                   [8.0000e-01, 3.5302e-01, 4.4127e-01]]]])

        assert_allclose(F.apply_color_jitter(input, jitter_param), expected, atol=1e-4, rtol=1e-5)
Esempio n. 7
0
    def test_color_jitter(self):

        jitter_param = {
            'brightness_factor': torch.tensor(1.0),
            'contrast_factor': torch.tensor(1.0),
            'saturation_factor': torch.tensor(1.0),
            'hue_factor': torch.tensor(0.0),
            'order': torch.tensor([2, 3, 0, 1]),
        }

        input = torch.rand(3, 5, 5)  # 3 x 5 x 5

        expected = input

        assert_allclose(F.apply_color_jitter(input[None], jitter_param), expected[None], atol=1e-4, rtol=1e-5)
Esempio n. 8
0
    def test_random_hue(self):
        torch.manual_seed(42)
        jitter_param = {
            'brightness_factor': torch.tensor([1., 1.]),
            'contrast_factor': torch.tensor([1., 1.]),
            'hue_factor': torch.tensor([-0.0438 / 2 / pi, 0.0404 / 2 / pi]),
            'saturation_factor': torch.tensor([1., 1.]),
            'order': torch.tensor([2, 3, 0, 1])
        }
        input = torch.tensor([[[[0.1, 0.2, 0.3],
                                [0.6, 0.5, 0.4],
                                [0.7, 0.8, 1.]],

                               [[1.0, 0.5, 0.6],
                                [0.6, 0.3, 0.2],
                                [0.8, 0.1, 0.2]],

                               [[0.6, 0.8, 0.7],
                                [0.9, 0.3, 0.2],
                                [0.8, 0.4, .5]]]])  # 1 x 1 x 3 x 3
        input = input.repeat(2, 1, 1, 1)  # 2 x 3 x 3

        expected = torch.tensor([[[[0.1000, 0.2000, 0.3000],
                                   [0.6000, 0.5000, 0.4000],
                                   [0.7000, 0.8000, 1.0000]],

                                  [[1.0000, 0.5251, 0.6167],
                                   [0.6126, 0.3000, 0.2000],
                                   [0.8000, 0.1000, 0.2000]],

                                  [[0.5623, 0.8000, 0.7000],
                                   [0.9000, 0.3084, 0.2084],
                                   [0.7958, 0.4293, 0.5335]]],

                                 [[[0.1000, 0.2000, 0.3000],
                                   [0.6116, 0.5000, 0.4000],
                                   [0.7000, 0.8000, 1.0000]],

                                  [[1.0000, 0.4769, 0.5846],
                                   [0.6000, 0.3077, 0.2077],
                                   [0.7961, 0.1000, 0.2000]],

                                  [[0.6347, 0.8000, 0.7000],
                                   [0.9000, 0.3000, 0.2000],
                                   [0.8000, 0.3730, 0.4692]]]])

        assert_allclose(F.apply_color_jitter(input, jitter_param), expected, atol=1e-4, rtol=1e-5)