def test_custom_normalization_with_std(self):
        normalization = Preprocessor.provide('normalization', {
            'type': 'normalization',
            'std': '(1, 2, 3)'
        })

        source = np.full_like((3, 300, 300), 100)
        input_ref = source.copy() / (1, 2, 3)
        result = normalization(DataRepresentation(source))

        assert normalization.mean is None
        assert normalization.std == (1, 2, 3)
        assert np.all(input_ref == result.data)
        assert result.metadata == {'image_size': (3, )}
    def test_custom_normalization_with_mean_as_scalar(self):
        normalization = Preprocessor.provide('normalization', {
            'type': 'normalization',
            'mean': '1'
        })

        source = np.full_like((3, 300, 300), 100)
        input_ref = source.copy() - 1
        result = normalization(DataRepresentation(source))

        assert normalization.mean == (1.0, )
        assert normalization.std is None
        assert np.all(input_ref == result.data)
        assert result.metadata == {'image_size': (3, )}
    def test_custom_normalization_with_precomputed_mean(self):
        normalization = Preprocessor.provide('normalization', {
            'type': 'normalization',
            'mean': 'cifar10'
        })

        source = np.full_like((3, 300, 300), 100)
        input_ref = source.copy() - normalization.PRECOMPUTED_MEANS['cifar10']
        result = normalization(DataRepresentation(source))

        assert normalization.mean == normalization.PRECOMPUTED_MEANS['cifar10']
        assert normalization.std is None
        assert np.all(input_ref == result.data)
        assert result.metadata == {'image_size': (3, )}
    def test_resize_with_both_provided_size_and_dst_height_dst_width_warn(
            self):
        input_image = np.ones((100, 50, 3))

        with pytest.warns(None) as warnings:
            resize = Preprocessor.provide('resize', {
                'type': 'resize',
                'dst_width': 100,
                'dst_height': 100,
                'size': 200
            })
            assert len(warnings) == 1
            result = resize(DataRepresentation(input_image)).data
            assert result.shape == (200, 200, 3)
    def test_custom_normalization_with_mean_and_std_as_scalars(self):
        normalization = Preprocessor.provide('normalization', {
            'type': 'normalization',
            'mean': '2',
            'std': '5'
        })

        input_ = np.full_like((300, 300, 3), 100)
        input_ref = (input_ - (2, )) / (5, )
        result = normalization(DataRepresentation(input_))

        assert normalization.mean == (2, )
        assert normalization.std == (5, )
        assert np.all(input_ref == result.data)
        assert result.metadata == {'image_size': (3, )}
Esempio n. 6
0
    def test_custom_normalization_with_mean_and_std(self):
        normalization = Preprocessor.provide('normalization', {
            'type': 'normalization',
            'mean': '(1, 2, 3)',
            'std': '(4, 5, 6)'
        })

        input_ = np.full_like((3, 300, 300), 100)
        input_ref = (input_ - (1, 2, 3)) / (4, 5, 6)
        result = normalization(DataRepresentation(input_))

        assert normalization.mean == (1, 2, 3)
        assert normalization.std == (4, 5, 6)
        assert np.all(input_ref == result.data)
        assert result.metadata == {'image_size': (3, )}
    def test_custom_normalization_multi_input(self):
        normalization = Preprocessor.provide('normalization', {
            'type': 'normalization',
            'mean': '2',
            'std': '2'
        })
        source = np.full_like((300, 300, 3), 100)
        input_ref = (source.copy() - 2) / 2
        result = normalization(DataRepresentation([source, source]))

        assert normalization.mean == (2, )
        assert normalization.std == (2, )
        assert len(result.data) == 2
        assert np.all(input_ref == result.data[0])
        assert np.all(input_ref == result.data[1])
        assert result.metadata == {'image_size': (3, )}
Esempio n. 8
0
    def test_custom_normalization_with_mean_and_std(self):
        name = 'mock_preprocessor'
        config = {
            'type': 'normalization',
            'mean': '(1, 2, 3)',
            'std': '(4, 5, 6)'
        }
        normalization = Preprocessor.provide('normalization', config, name)

        input_ = np.full_like((3, 300, 300), 100)
        input_ref = (input_ - (1, 2, 3)) / (4, 5, 6)
        res = normalization(input_)

        assert normalization.mean == (1, 2, 3)
        assert normalization.std == (4, 5, 6)
        assert np.all(input_ref == res)
Esempio n. 9
0
    def test_default_resize(self, mocker):
        cv2_resize_mock = mocker.patch(
            'accuracy_checker.preprocessor.preprocessors.cv2.resize')
        name = 'mock_preprocessor'
        config = {'type': 'resize', 'size': 200}
        resize = Preprocessor.provide('resize', config, name)

        input_mock = mocker.Mock()
        resize(input_mock)

        assert not resize.use_pil
        assert resize.dst_width == 200
        assert resize.dst_height == 200
        cv2_resize_mock.assert_called_once_with(
            input_mock, (200, 200),
            interpolation=Resize.OPENCV_INTERPOLATION['LINEAR'])
Esempio n. 10
0
    def test_default_resize(self, mocker):
        cv2_resize_mock = mocker.patch(
            'accuracy_checker.preprocessor.preprocessors.cv2.resize')
        resize = Preprocessor.provide('resize', {
            'type': 'resize',
            'size': 200
        })

        input_mock = mocker.Mock()
        input_mock.shape = (480, 640, 3)
        resize(DataRepresentation(input_mock))
        assert resize.dst_width == 200
        assert resize.dst_height == 200
        cv2_resize_mock.assert_called_once_with(
            input_mock, (200, 200),
            interpolation=_OpenCVResizer.supported_interpolations['LINEAR'])
    def test_custom_resize(self, mocker):
        cv2_resize_mock = mocker.patch('accuracy_checker.preprocessor.geometric_transformations.cv2.resize')

        resize = Preprocessor.provide(
            'resize', {'type': 'resize', 'dst_width': 126, 'dst_height': 128, 'interpolation': 'CUBIC'}
        )

        input_mock = mocker.Mock()
        input_mock.shape = (480, 640, 3)
        resize(DataRepresentation(input_mock))

        assert resize.dst_width == 126
        assert resize.dst_height == 128
        cv2_resize_mock.assert_called_once_with(
            input_mock, (126, 128),
            interpolation=_OpenCVResizer.supported_interpolations()['CUBIC']
        )
Esempio n. 12
0
    def test_custom_resize(self, mocker):
        cv2_resize_mock = mocker.patch('accuracy_checker.preprocessor.preprocessors.cv2.resize')
        name = 'mock_preprocessor'
        config = {
            'type': 'resize',
            'dst_width': 126,
            'dst_height': 128,
            'interpolation': 'CUBIC'
        }

        resize = Preprocessor.provide('resize', config, name)

        input_mock = mocker.Mock()
        resize(DataRepresentation(input_mock))

        assert not resize.use_pil
        assert resize.dst_width == 126
        assert resize.dst_height == 128
        cv2_resize_mock.assert_called_once_with(input_mock, (126, 128),
                                                interpolation=Resize.OPENCV_INTERPOLATION['CUBIC'])
Esempio n. 13
0
    def test_resize_save_aspect_ratio_frcnn_keep_aspect_ratio(self):
        input_image = np.ones((480, 640, 3))
        resize = Preprocessor.provide(
            'resize', {
                'type': 'resize',
                'dst_width': 100,
                'dst_height': 150,
                'aspect_ratio_scale': 'frcnn_keep_aspect_ratio'
            })
        result = resize(DataRepresentation(input_image))

        assert result.data.shape == (100, 133, 3)
        assert result.metadata == {
            'geometric_operations': [
                GeometricOperationMetadata(type='resize',
                                           parameters={
                                               'scale_x': 0.2078125,
                                               'scale_y': 0.20833333333333334,
                                               'image_info': [100, 133, 1],
                                               'original_width': 640,
                                               'original_height': 480,
                                               'preferable_width': 133,
                                               'preferable_height': 150
                                           })
            ],
            'image_info': [100, 133, 1],
            'image_size': (480, 640, 3),
            'original_height':
            480,
            'original_width':
            640,
            'preferable_height':
            150,
            'preferable_width':
            133,
            'scale_x':
            0.2078125,
            'scale_y':
            0.20833333333333334
        }
    def test_default_auto_resize(self, mocker):
        cv2_resize_mock = mocker.patch('accuracy_checker.preprocessor.geometric_transformations.cv2.resize')
        resize = Preprocessor.provide('auto_resize', {'type': 'auto_resize'})
        resize.set_input_shape({'data': (1, 3, 200, 200)})

        input_data = np.zeros((100, 100, 3))
        input_rep = DataRepresentation(input_data)
        expected_meta = {
                    'preferable_width': 200,
                    'preferable_height':200,
                    'image_info': [200, 200, 1],
                    'scale_x': 2.0,
                    'scale_y': 2.0,
                    'original_width': 100,
                    'original_height': 100,
                }
        resize(input_rep)

        assert resize.dst_width == 200
        assert resize.dst_height == 200
        cv2_resize_mock.assert_called_once_with(input_data, (200, 200))
        for key, value in expected_meta.items():
            assert key in input_rep.metadata
            assert input_rep.metadata[key] == value
Esempio n. 15
0
 def test_auto_resize_input_shape_not_provided_raise_config_error(
         self, mocker):
     input_mock = mocker.Mock()
     with pytest.raises(ConfigError):
         Preprocessor.provide('auto_resize', {'type': 'auto_resize'})(
             DataRepresentation(input_mock))
Esempio n. 16
0
 def test_resize_provided_only_dst_width_raise_config_error(self):
     with pytest.raises(ValueError):
         Preprocessor.provide('resize', {
             'type': 'resize',
             'dst_width': 100
         })
Esempio n. 17
0
 def test_resize_to_negative_size_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('resize', {'type': 'resize', 'size': -100})
Esempio n. 18
0
 def test_point_alignment_raise_config_error_on_extra_args(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('point_alignment', {
             'type': 'point_alignment',
             'something_extra': 'extra'
         })
Esempio n. 19
0
 def test_auto_resize_input_shape_not_provided_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('auto_resize', {'type': 'auto_resize'})
Esempio n. 20
0
 def test_normalization_without_mean_and_std_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('normalization', {'type': 'normalization'})
Esempio n. 21
0
 def test_normalization_raise_config_error_on_extra_args(self):
     preprocessor_config = {'type': 'normalization', 'mean': 0, 'something_extra': 'extra'}
     with pytest.raises(ConfigError):
         Preprocessor.provide('normalization', preprocessor_config)
Esempio n. 22
0
 def test_resize_raise_config_error_on_extra_args(self):
     preprocessor_config = {'type': 'resize', 'size': 1, 'something_extra': 'extra'}
     with pytest.raises(ConfigError):
         Preprocessor.provide('resize', preprocessor_config)
Esempio n. 23
0
 def test_auto_resize_with_non_image_input_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('auto_resize', {
             'type': 'auto_resize'
         }).set_input_shape({'im_info': [200, 200, 1]})
Esempio n. 24
0
 def test_flip_raise_config_error_on_extra_args(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('flip', {
             'type': 'flip',
             'something_extra': 'extra'
         })
Esempio n. 25
0
 def test_auto_resize_empty_input_shapes_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('auto_resize', {
             'type': 'auto_resize'
         }).set_input_shape({})
Esempio n. 26
0
 def test_extend_around_rect_raise_config_error_on_extra_args(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('extend_around_rect', {
             'type': 'extend_around_rect',
             'something_extra': 'extra'
         })
Esempio n. 27
0
 def test_bgr_to_rgb_raise_config_error_on_extra_args(self):
     preprocessor_config = {'type': 'bgr_to_rgb', 'something_extra': 'extra'}
     with pytest.raises(ConfigError):
         Preprocessor.provide('bgr_to_rgb',  preprocessor_config, None)
 def test_resize_save_aspect_ratio_unknown_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide(
             'resize', {'type': 'resize', 'dst_width': 100, 'dst_height': 150, 'aspect_ratio_scale': 'unknown'}
         )
Esempio n. 29
0
 def test_normalization_with_zero_as_std_value_raise_config_error(self):
     with pytest.raises(ConfigError):
         Preprocessor.provide('normalization', {
             'type': 'normalization',
             'std': '0'
         })
Esempio n. 30
0
 def test_crop_accuracy_raise_config_error_on_extra_args(self):
     preprocessor_config = {'type': 'crop', 'size': 1, 'something_extra': 'extra'}
     with pytest.raises(ConfigError):
         Preprocessor.provide('crop', preprocessor_config, None)