From 1e514838dfad1d2339f896f850425bc33621d297 Mon Sep 17 00:00:00 2001 From: Yeoh Ee Peng Date: Wed, 4 Dec 2019 11:17:42 +0800 Subject: oeqa/runtime/cases/dldt: Enable inference engine and model optimizer tests Add sanity tests for inference engine: - test inference engine c/cpp shared library - test inference engine python api - test inference engine cpu, gpu, myriad plugin Add sanity tests for model optimizer - test model optmizer can generate ir Licenses: - classification_sample.py license: Apache 2.0 source: /deployment_tools/inference_engine/samples/* Signed-off-by: Yeoh Ee Peng Signed-off-by: Anuj Mittal --- lib/oeqa/runtime/miutils/dldtutils.py | 3 ++ lib/oeqa/runtime/miutils/targets/oeqatarget.py | 11 +++++ .../miutils/tests/dldt_inference_engine_test.py | 48 ++++++++++++++++++++++ .../miutils/tests/dldt_model_optimizer_test.py | 23 +++++++++++ .../tests/squeezenet_model_download_test.py | 25 +++++++++++ 5 files changed, 110 insertions(+) create mode 100644 lib/oeqa/runtime/miutils/dldtutils.py create mode 100644 lib/oeqa/runtime/miutils/targets/oeqatarget.py create mode 100644 lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py create mode 100644 lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py create mode 100644 lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py (limited to 'lib/oeqa/runtime/miutils') diff --git a/lib/oeqa/runtime/miutils/dldtutils.py b/lib/oeqa/runtime/miutils/dldtutils.py new file mode 100644 index 00000000..45bf2e12 --- /dev/null +++ b/lib/oeqa/runtime/miutils/dldtutils.py @@ -0,0 +1,3 @@ + +def get_testdata_config(testdata, config): + return testdata.get(config) diff --git a/lib/oeqa/runtime/miutils/targets/oeqatarget.py b/lib/oeqa/runtime/miutils/targets/oeqatarget.py new file mode 100644 index 00000000..a9f7f1b4 --- /dev/null +++ b/lib/oeqa/runtime/miutils/targets/oeqatarget.py @@ -0,0 +1,11 @@ + +class OEQATarget(object): + + def __init__(self, target): + self.target = target + + def run(self, cmd): + return self.target.run(cmd) + + def copy_to(self, source, destination_dir): + self.target.copyTo(source, destination_dir) diff --git a/lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py b/lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py new file mode 100644 index 00000000..a44f9027 --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py @@ -0,0 +1,48 @@ +import os +script_path = os.path.dirname(os.path.realpath(__file__)) +files_path = os.path.join(script_path, '../../files/') + +class DldtInferenceEngineTest(object): + ie_input_files = {'ie_python_sample': 'classification_sample.py', + 'input': 'chicky_512.png', + 'input_download': 'https://raw.githubusercontent.com/opencv/opencv/master/samples/data/chicky_512.png', + 'model': 'squeezenet_v1.1.xml'} + + def __init__(self, target, work_dir): + self.target = target + self.work_dir = work_dir + + def setup(self): + self.target.run('mkdir -p %s' % self.work_dir) + self.target.copy_to(os.path.join(files_path, 'dldt-inference-engine', self.ie_input_files['ie_python_sample']), + self.work_dir) + + def tear_down(self): + self.target.run('rm -rf %s' % self.work_dir) + + def test_can_download_input_file(self, proxy_port): + return self.target.run('cd %s; wget %s -e https_proxy=%s' % + (self.work_dir, + self.ie_input_files['input_download'], + proxy_port)) + + def test_dldt_ie_classification_with_device(self, device, ir_files_dir): + return self.target.run('classification_sample_async -d %s -i %s -m %s' % + (device, + os.path.join(self.work_dir, self.ie_input_files['input']), + os.path.join(ir_files_dir, self.ie_input_files['model']))) + + def test_dldt_ie_classification_python_api_with_device(self, device, ir_files_dir, extension=''): + if extension: + return self.target.run('python3 %s -d %s -i %s -m %s -l %s' % + (os.path.join(self.work_dir, self.ie_input_files['ie_python_sample']), + device, + os.path.join(self.work_dir, self.ie_input_files['input']), + os.path.join(ir_files_dir, self.ie_input_files['model']), + extension)) + else: + return self.target.run('python3 %s -d %s -i %s -m %s' % + (os.path.join(self.work_dir, self.ie_input_files['ie_python_sample']), + device, + os.path.join(self.work_dir, self.ie_input_files['input']), + os.path.join(ir_files_dir, self.ie_input_files['model']))) diff --git a/lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py b/lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py new file mode 100644 index 00000000..7d3db15b --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py @@ -0,0 +1,23 @@ +import os + +class DldtModelOptimizerTest(object): + mo_input_files = {'model': 'squeezenet_v1.1.caffemodel', + 'prototxt': 'deploy.prototxt'} + mo_exe = 'mo.py' + + def __init__(self, target, work_dir): + self.target = target + self.work_dir = work_dir + + def setup(self): + self.target.run('mkdir -p %s' % self.work_dir) + + def tear_down(self): + self.target.run('rm -rf %s' % self.work_dir) + + def test_dldt_mo_can_create_ir(self, mo_exe_dir, mo_files_dir): + return self.target.run('python3 %s --input_model %s --input_proto %s --output_dir %s --data_type FP16' % + (os.path.join(mo_exe_dir, self.mo_exe), + os.path.join(mo_files_dir, self.mo_input_files['model']), + os.path.join(mo_files_dir, self.mo_input_files['prototxt']), + self.work_dir)) diff --git a/lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py b/lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py new file mode 100644 index 00000000..a3e46a0a --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py @@ -0,0 +1,25 @@ +class SqueezenetModelDownloadTest(object): + download_files = {'squeezenet1.1.prototxt': 'https://raw.githubusercontent.com/DeepScale/SqueezeNet/a47b6f13d30985279789d08053d37013d67d131b/SqueezeNet_v1.1/deploy.prototxt', + 'squeezenet1.1.caffemodel': 'https://github.com/DeepScale/SqueezeNet/raw/a47b6f13d30985279789d08053d37013d67d131b/SqueezeNet_v1.1/squeezenet_v1.1.caffemodel'} + + def __init__(self, target, work_dir): + self.target = target + self.work_dir = work_dir + + def setup(self): + self.target.run('mkdir -p %s' % self.work_dir) + + def tear_down(self): + self.target.run('rm -rf %s' % self.work_dir) + + def test_can_download_squeezenet_model(self, proxy_port): + return self.target.run('cd %s; wget %s -e https_proxy=%s' % + (self.work_dir, + self.download_files['squeezenet1.1.caffemodel'], + proxy_port)) + + def test_can_download_squeezenet_prototxt(self, proxy_port): + return self.target.run('cd %s; wget %s -e https_proxy=%s' % + (self.work_dir, + self.download_files['squeezenet1.1.prototxt'], + proxy_port)) -- cgit v1.2.3-54-g00ecf