From 884fc1d01c8c76958c99fbbbf4f61443c6bb04b8 Mon Sep 17 00:00:00 2001 From: Nanohana <56324869+GabrielDornelles@users.noreply.github.com> Date: Mon, 16 May 2022 13:21:32 -0300 Subject: [PATCH 1/6] Uses OpenVINO runtime instead of openvino-dev --- models/common.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/models/common.py b/models/common.py index 00641eaa8d15..2e60d3bfd17a 100644 --- a/models/common.py +++ b/models/common.py @@ -354,13 +354,14 @@ def __init__(self, weights='yolov5s.pt', device=torch.device('cpu'), dnn=False, stride, names = int(meta['stride']), eval(meta['names']) elif xml: # OpenVINO LOGGER.info(f'Loading {w} for OpenVINO inference...') - check_requirements(('openvino-dev',)) # requires openvino-dev: https://pypi.org/project/openvino-dev/ - import openvino.inference_engine as ie - core = ie.IECore() + check_requirements(('openvino')) # requires openvino-dev: https://pypi.org/project/openvino-dev/ + from openvino.runtime import Core + ie = Core() if not Path(w).is_file(): # if not *.xml w = next(Path(w).glob('*.xml')) # get *.xml file from *_openvino_model dir - network = core.read_network(model=w, weights=Path(w).with_suffix('.bin')) # *.xml, *.bin paths - executable_network = core.load_network(network, device_name='CPU', num_requests=1) + network = ie.read_model(model=w, weights=Path(w).with_suffix('.bin')) + executable_network = ie.compile_model(model=network, device_name="CPU") + self.output_layer = next(iter(executable_network.outputs)) elif engine: # TensorRT LOGGER.info(f'Loading {w} for TensorRT inference...') import tensorrt as trt # https://developer.nvidia.com/nvidia-tensorrt-download @@ -444,11 +445,7 @@ def forward(self, im, augment=False, visualize=False, val=False): y = self.session.run([self.session.get_outputs()[0].name], {self.session.get_inputs()[0].name: im})[0] elif self.xml: # OpenVINO im = im.cpu().numpy() # FP32 - desc = self.ie.TensorDesc(precision='FP32', dims=im.shape, layout='NCHW') # Tensor Description - request = self.executable_network.requests[0] # inference request - request.set_blob(blob_name='images', blob=self.ie.Blob(desc, im)) # name=next(iter(request.input_blobs)) - request.infer() - y = request.output_blobs['output'].buffer # name=next(iter(request.output_blobs)) + y = self.executable_network([im])[self.output_layer] elif self.engine: # TensorRT assert im.shape == self.bindings['images'].shape, (im.shape, self.bindings['images'].shape) self.binding_addrs['images'] = int(im.data_ptr()) From c04deddd42acd448ddcec7ccac7a3fe238bac7b4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 16:32:49 +0000 Subject: [PATCH 2/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- models/common.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/common.py b/models/common.py index 2e60d3bfd17a..53658435dc83 100644 --- a/models/common.py +++ b/models/common.py @@ -354,8 +354,8 @@ def __init__(self, weights='yolov5s.pt', device=torch.device('cpu'), dnn=False, stride, names = int(meta['stride']), eval(meta['names']) elif xml: # OpenVINO LOGGER.info(f'Loading {w} for OpenVINO inference...') - check_requirements(('openvino')) # requires openvino-dev: https://pypi.org/project/openvino-dev/ - from openvino.runtime import Core + check_requirements('openvino') # requires openvino-dev: https://pypi.org/project/openvino-dev/ + from openvino.runtime import Core ie = Core() if not Path(w).is_file(): # if not *.xml w = next(Path(w).glob('*.xml')) # get *.xml file from *_openvino_model dir From ffd4c0ace10814ac8908c9763ad1da05c46c7074 Mon Sep 17 00:00:00 2001 From: Nanohana <56324869+GabrielDornelles@users.noreply.github.com> Date: Mon, 16 May 2022 15:27:49 -0300 Subject: [PATCH 3/6] export with openvino package --- export.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/export.py b/export.py index 5c1adae14044..79ac47109f1b 100644 --- a/export.py +++ b/export.py @@ -171,10 +171,9 @@ def export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorst def export_openvino(model, im, file, half, prefix=colorstr('OpenVINO:')): # YOLOv5 OpenVINO export try: - check_requirements(('openvino-dev',)) # requires openvino-dev: https://pypi.org/project/openvino-dev/ - import openvino.inference_engine as ie - - LOGGER.info(f'\n{prefix} starting export with openvino {ie.__version__}...') + check_requirements(('openvino')) + import openvino.runtime + LOGGER.info(f'\n{prefix} starting export with openvino {openvino.runtime.get_version()}...') f = str(file).replace('.pt', f'_openvino_model{os.sep}') cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f} --data_type {'FP16' if half else 'FP32'}" From 5f1000d8d4db8537a7205d64e28557e4de3c9435 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 18:28:16 +0000 Subject: [PATCH 4/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export.py b/export.py index 79ac47109f1b..68f31f02668c 100644 --- a/export.py +++ b/export.py @@ -171,7 +171,7 @@ def export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorst def export_openvino(model, im, file, half, prefix=colorstr('OpenVINO:')): # YOLOv5 OpenVINO export try: - check_requirements(('openvino')) + check_requirements('openvino') import openvino.runtime LOGGER.info(f'\n{prefix} starting export with openvino {openvino.runtime.get_version()}...') f = str(file).replace('.pt', f'_openvino_model{os.sep}') From 6208a740b99eb7e341301e1cbc0c5dab6ad1d159 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 May 2022 20:52:12 +0200 Subject: [PATCH 5/6] Revert export.py --- export.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/export.py b/export.py index 68f31f02668c..5c1adae14044 100644 --- a/export.py +++ b/export.py @@ -171,9 +171,10 @@ def export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorst def export_openvino(model, im, file, half, prefix=colorstr('OpenVINO:')): # YOLOv5 OpenVINO export try: - check_requirements('openvino') - import openvino.runtime - LOGGER.info(f'\n{prefix} starting export with openvino {openvino.runtime.get_version()}...') + check_requirements(('openvino-dev',)) # requires openvino-dev: https://pypi.org/project/openvino-dev/ + import openvino.inference_engine as ie + + LOGGER.info(f'\n{prefix} starting export with openvino {ie.__version__}...') f = str(file).replace('.pt', f'_openvino_model{os.sep}') cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f} --data_type {'FP16' if half else 'FP32'}" From 921882bddda22450afdb1e2fd2c5b64d05c6ec33 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 May 2022 20:54:51 +0200 Subject: [PATCH 6/6] Update common.py --- models/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/common.py b/models/common.py index 53658435dc83..0c028352abac 100644 --- a/models/common.py +++ b/models/common.py @@ -354,7 +354,7 @@ def __init__(self, weights='yolov5s.pt', device=torch.device('cpu'), dnn=False, stride, names = int(meta['stride']), eval(meta['names']) elif xml: # OpenVINO LOGGER.info(f'Loading {w} for OpenVINO inference...') - check_requirements('openvino') # requires openvino-dev: https://pypi.org/project/openvino-dev/ + check_requirements(('openvino',)) # requires openvino-dev: https://pypi.org/project/openvino-dev/ from openvino.runtime import Core ie = Core() if not Path(w).is_file(): # if not *.xml