Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 1 | # Copyright © 2020 Arm Ltd and Contributors. All rights reserved. |
| 2 | # SPDX-License-Identifier: MIT |
| 3 | |
| 4 | import os |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 5 | import pytest |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 6 | import cv2 |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 7 | import numpy as np |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 8 | |
| 9 | from context import network_executor |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 10 | from context import network_executor_tflite |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 11 | from context import cv_utils |
| 12 | |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 13 | @pytest.mark.parametrize("executor_name", ["armnn", "tflite"]) |
| 14 | def test_execute_network(test_data_folder, executor_name): |
alexander | f42f568 | 2021-07-16 11:30:56 +0100 | [diff] [blame] | 15 | model_path = os.path.join(test_data_folder, "ssd_mobilenet_v1.tflite") |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 16 | backends = ["CpuAcc", "CpuRef"] |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 17 | if executor_name == "armnn": |
| 18 | executor = network_executor.ArmnnNetworkExecutor(model_path, backends) |
| 19 | elif executor_name == "tflite": |
| 20 | delegate_path = os.path.join(test_data_folder, "libarmnnDelegate.so") |
| 21 | executor = network_executor_tflite.TFLiteNetworkExecutor(model_path, backends, delegate_path) |
| 22 | else: |
| 23 | raise f"unsupported executor_name: {executor_name}" |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 24 | |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 25 | img = cv2.imread(os.path.join(test_data_folder, "messi5.jpg")) |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 26 | resized_img = cv_utils.preprocess(img, executor.get_data_type(), executor.get_shape(), True) |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 27 | |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 28 | output_result = executor.run([resized_img]) |
Éanna Ó Catháin | 145c88f | 2020-11-16 14:12:11 +0000 | [diff] [blame] | 29 | |
| 30 | # Ensure it detects a person |
| 31 | classes = output_result[1] |
| 32 | assert classes[0][0] == 0 |
Raviv Shalev | 97ddc06 | 2021-12-07 15:18:09 +0200 | [diff] [blame] | 33 | |
| 34 | # Unit tests for network executor class functions - specifically for ssd_mobilenet_v1.tflite network |
| 35 | assert executor.get_data_type() == np.uint8 |
| 36 | assert executor.get_shape() == (1, 300, 300, 3) |