Пример #1
0
    def test_shape(self):
        paddle_model = mobilenet_v2(pretrained=True)
        img_path = 'imgs/catdog.jpg'
        algo = it.GradShapCVInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, resize_to=256, crop_to=224, visual=False)
        result = np.array([*exp.shape])

        assert_arrays_almost_equal(self, result, np.array([1, 3, 224, 224]))    
Пример #2
0
    def test_cv_multiple_inputs(self):
        np.random.seed(42)
        paddle_model = mobilenet_v2(pretrained=True)

        img_path = ['imgs/catdog.jpg', 'imgs/catdog.jpg']
        algo = it.GradShapCVInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, resize_to=256, crop_to=224, visual=False, n_samples=1)
        result = np.array([*exp.shape])

        assert_arrays_almost_equal(self, result, np.array([2, 3, 224, 224]))
Пример #3
0
    def test_algo(self):
        np.random.seed(42)
        paddle_model = mobilenet_v2(pretrained=True)

        np.random.seed(42)
        img_path = np.random.randint(0, 255, size=(1, 64, 64, 3), dtype=np.uint8)
        algo = it.GradShapCVInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, visual=False)
        result = np.array([exp.mean(), exp.std(), exp.min(), exp.max()])
        desired = np.array([ 3.4148130e-07,  2.6306865e-05, -2.3330076e-04,  3.4065323e-04])

        assert_arrays_almost_equal(self, result, desired)
Пример #4
0
 def test_case2(self):
     paddle.disable_static()
     model = mobilenet_v2()
     predictor = TableLatencyPredictor(table_file='SD710')
     model_file, param_file = save_cls_model(model,
                                             input_shape=[1, 3, 224, 224],
                                             save_dir="./inference_model",
                                             data_type='fp32')
     latency = predictor.predict(model_file=model_file,
                                 param_file=param_file,
                                 data_type='fp32')
     assert latency > 0
Пример #5
0
    def test_algo_layer(self):
        paddle_model = mobilenet_v2(pretrained=True)
        np.random.seed(42)
        img_path = np.random.randint(0,
                                     255,
                                     size=(1, 64, 64, 3),
                                     dtype=np.uint8)
        algo = it.GradCAMInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, 'features.16.conv.3', visual=False)
        result = np.array([exp.mean(), exp.std(), exp.min(), exp.max()])
        desired = np.array(
            [1.07594451e-03, 4.04298247e-04, 5.23229188e-04, 1.60590897e-03])

        assert_arrays_almost_equal(self, result, desired)
Пример #6
0
    def test_cv_multiple_inputs(self):
        paddle_model = mobilenet_v2(pretrained=True)

        img_path = ['imgs/catdog.jpg', 'imgs/catdog.jpg']
        algo = it.GradCAMInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path,
                             'features.18.2',
                             resize_to=256,
                             crop_to=224,
                             visual=False)
        result = np.array([*exp.shape])
        desired = np.array([2, 7, 7])

        assert_arrays_almost_equal(self, result, desired)
Пример #7
0
    def test_algo(self):
        paddle_model = mobilenet_v2(pretrained=True)

        np.random.seed(42)
        img_path = np.random.randint(0,
                                     255,
                                     size=(1, 64, 64, 3),
                                     dtype=np.uint8)
        algo = it.SmoothGradInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, n_samples=5, visual=False)
        result = np.array([exp.mean(), exp.std(), exp.min(), exp.max()])
        desired = np.array(
            [5.1930110e-06, 4.0496187e-03, -2.3638349e-02, 3.2775488e-02])

        assert_arrays_almost_equal(self, result, desired)
Пример #8
0
    def test_save(self):
        import matplotlib
        matplotlib.use('agg')  # non-GUI, for skipping.

        paddle_model = mobilenet_v2(pretrained=True)

        np.random.seed(42)
        img_path = np.random.randint(0, 255, size=(1, 64, 64, 3), dtype=np.uint8)
        algo = it.GradShapCVInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, visual=True, save_path='tmp.jpg')
        result = np.array([exp.mean(), exp.std(), exp.min(), exp.max()])
        desired = np.array([ 3.4148130e-07,  2.6306865e-05, -2.3330076e-04,  3.4065323e-04])

        assert_arrays_almost_equal(self, result, desired)
        os.remove('tmp.jpg')
Пример #9
0
    def test_shape(self):
        paddle_model = mobilenet_v2(pretrained=True)

        img_path = 'imgs/catdog.jpg'
        algo = it.ScoreCAMInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path,
                             'features.18.2',
                             resize_to=64,
                             crop_to=64,
                             visual=False)

        result = np.array([*exp.shape])
        desired = np.array([1., 64., 64.])

        assert_arrays_almost_equal(self, result, desired)
Пример #10
0
    def test_algo(self):
        paddle_model = mobilenet_v2(pretrained=True)

        np.random.seed(42)
        img_path = np.random.randint(0,
                                     255,
                                     size=(1, 64, 64, 3),
                                     dtype=np.uint8)
        algo = it.GradCAMInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path, 'features.18.2', visual=False)
        result = np.array([exp.mean(), exp.std(), exp.min(), exp.max()])
        desired = np.array(
            [2.4055550e-04, 9.1252205e-06, 2.2793890e-04, 2.5061620e-04],
            dtype=np.float32)

        assert_arrays_almost_equal(self, result, desired)
Пример #11
0
    def test_visual(self):
        import matplotlib
        matplotlib.use('agg')  # non-GUI, for skipping.

        paddle_model = mobilenet_v2(pretrained=True)
        img_path = 'imgs/catdog.jpg'
        algo = it.SmoothGradInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path,
                             n_samples=1,
                             resize_to=256,
                             crop_to=224,
                             visual=True,
                             save_path='tmp.jpg')
        result = np.array([*exp.shape])

        assert_arrays_almost_equal(self, result, np.array([1, 3, 224, 224]))
        os.remove('tmp.jpg')
Пример #12
0
    def test_case3(self):
        paddle.disable_static()
        model = mobilenet_v2()
        model_file, param_file = save_cls_model(model,
                                                input_shape=[1, 3, 224, 224],
                                                save_dir="./inference_model",
                                                data_type='fp32')
        pbmodel_file = opt_model(model_file=model_file,
                                 param_file=param_file,
                                 optimize_out_type='protobuf')

        pred = LatencyPredictor()
        paddle.enable_static()
        with open(pbmodel_file, "rb") as f:
            fluid_program = paddle.fluid.framework.Program.parse_from_string(
                f.read())
            graph = paddleslim.core.GraphWrapper(fluid_program)
            graph_keys = pred._get_key_info_from_graph(graph=graph)
            assert len(graph_keys) > 0
Пример #13
0
    def test_algo(self):
        paddle_model = mobilenet_v2(pretrained=True)

        np.random.seed(42)
        img_path = np.random.randint(0,
                                     255,
                                     size=(1, 64, 64, 3),
                                     dtype=np.uint8)
        algo = it.ScoreCAMInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path,
                             'features.16.conv.3',
                             resize_to=64,
                             crop_to=64,
                             visual=False)

        result = np.array([exp.mean(), exp.std(), exp.min(), exp.max()])
        desired = np.array([2.3779001, 1.80234987, -0.33591489, 5.09665543])

        assert_arrays_almost_equal(self, result, desired)
Пример #14
0
    def test_save(self):
        import matplotlib
        matplotlib.use('agg')  # non-GUI, for skipping.

        paddle_model = mobilenet_v2(pretrained=True)
        np.random.seed(42)
        img_path = np.random.randint(0,
                                     255,
                                     size=(1, 64, 64, 3),
                                     dtype=np.uint8)
        algo = it.LIMECVInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path,
                             num_samples=42,
                             batch_size=20,
                             resize_to=64,
                             crop_to=64,
                             visual=True,
                             save_path='tmp.jpg')
        os.remove('tmp.jpg')
Пример #15
0
    def test_case10(self):
        paddle.disable_static()
        model = mobilenet_v2()
        model2 = ModelCase6()
        model3 = ModelCase7()
        predictor = TableLatencyPredictor(table_file='SD710')
        model_file, param_file = save_cls_model(model,
                                                input_shape=[1, 3, 250, 250],
                                                save_dir="./inference_model",
                                                data_type='fp32')
        latency = predictor.predict(model_file=model_file,
                                    param_file=param_file,
                                    data_type='fp32')
        assert latency > 0

        model_file, param_file = save_cls_model(model,
                                                input_shape=[1, 3, 250, 250],
                                                save_dir="./inference_model",
                                                data_type='int8')
        latency = predictor.predict(model_file=model_file,
                                    param_file=param_file,
                                    data_type='int8')
        assert latency > 0

        model_file, param_file = save_cls_model(model2,
                                                input_shape=[1, 3, 16, 16],
                                                save_dir="./inference_model",
                                                data_type='fp32')
        latency = predictor.predict(model_file=model_file,
                                    param_file=param_file,
                                    data_type='fp32')
        assert latency > 0

        model_file, param_file = save_det_model(model3,
                                                input_shape=[1, 255, 14, 14],
                                                save_dir="./inference_model",
                                                data_type='fp32')
        latency = predictor.predict(model_file=model_file,
                                    param_file=param_file,
                                    data_type='fp32')
        assert latency > 0
Пример #16
0
    def test_shape_and_algo(self):
        paddle_model = mobilenet_v2(pretrained=True)
        np.random.seed(42)
        img_path = np.random.randint(0,
                                     255,
                                     size=(1, 64, 64, 3),
                                     dtype=np.uint8)
        algo = it.LIMECVInterpreter(paddle_model, device='cpu')
        exp = algo.interpret(img_path,
                             num_samples=100,
                             batch_size=50,
                             resize_to=64,
                             crop_to=64,
                             visual=False)
        k = list(exp.keys())[0]
        result = np.zeros(len(exp[k]))
        for sp_id, v in exp[k]:
            result[sp_id] = v

        result = np.array([k, *result])
        desired = np.array([
            4.90000000e+02, 1.86663490e-03, -6.07835046e-02, 3.15221286e-02,
            -4.33815891e-02, 5.98708568e-02, -4.03566565e-02, 2.32181935e-04,
            -1.88198336e-02, -5.48955918e-04, -3.05450687e-02, 6.40058578e-02,
            6.46084885e-02, -1.35210916e-03, -3.33294607e-02, -3.67286859e-02,
            3.36535163e-02, -8.59251274e-03, 4.58715622e-02, 4.07490782e-02,
            1.16548644e-01, 8.28152785e-02, 6.30378504e-02, -9.37234923e-03,
            5.44956613e-03, 2.78750946e-03, -5.23468125e-02, 2.56323242e-03,
            9.42740024e-02, 7.96398789e-02, 6.01124075e-02, -5.76994244e-02,
            7.03640418e-02, 3.61672162e-02, 4.97282116e-02, 5.11243389e-02,
            1.89338674e-01, 1.21587496e-02, 4.50969712e-02, 4.63132584e-02,
            -4.05242203e-03, 5.21016618e-02, 7.57953552e-02, 2.91536810e-02,
            1.51803549e-02, 6.08129130e-02, 5.33129929e-02, -2.09711908e-02,
            -4.93060550e-03, -1.41900513e-02, 7.03506893e-02, 5.65046961e-02,
            -2.94891549e-02, -3.20462166e-02, 2.93698146e-02, -1.15419265e-01,
            -8.70454571e-03, -3.36799397e-02, 2.18574095e-02, 1.36021779e-02,
            4.22237924e-02, -7.91892625e-02, 1.59767297e-02, 2.24134222e-02
        ])

        assert_arrays_almost_equal(self, result, desired)