From f7a853b7d818c2d3e5b9c85a90cd80481663c8ba Mon Sep 17 00:00:00 2001 From: Samet Akcay Date: Tue, 22 Oct 2024 12:05:51 +0100 Subject: [PATCH 1/2] Fix openvino import issue Signed-off-by: Samet Akcay --- .../deploy/inferencers/openvino_inferencer.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/anomalib/deploy/inferencers/openvino_inferencer.py b/src/anomalib/deploy/inferencers/openvino_inferencer.py index bb57a8d65a..be148dabf6 100644 --- a/src/anomalib/deploy/inferencers/openvino_inferencer.py +++ b/src/anomalib/deploy/inferencers/openvino_inferencer.py @@ -21,14 +21,6 @@ logger = logging.getLogger("anomalib") -if find_spec("openvino") is not None: - import openvino as ov - - if TYPE_CHECKING: - from openvino import CompiledModel -else: - logger.warning("OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.") - class OpenVINOInferencer(Inferencer): """OpenVINO implementation for the inference. @@ -102,6 +94,11 @@ def __init__( task: str | None = None, config: dict | None = None, ) -> None: + try: + import openvino as ov + except ImportError: + logger.warning("OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.") + raise self.device = device self.config = config @@ -121,6 +118,8 @@ def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any, [tuple[str, str, ExecutableNetwork]]: Input and Output blob names together with the Executable network. """ + import openvino as ov + core = ov.Core() # If tuple of bytes is passed if isinstance(path, tuple): From b371f288fb0d14e9999b024729e7642ce985f754 Mon Sep 17 00:00:00 2001 From: Samet Akcay Date: Tue, 22 Oct 2024 12:21:27 +0100 Subject: [PATCH 2/2] Fix pre-commit issues Signed-off-by: Samet Akcay --- .../deploy/inferencers/openvino_inferencer.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/anomalib/deploy/inferencers/openvino_inferencer.py b/src/anomalib/deploy/inferencers/openvino_inferencer.py index be148dabf6..8dea77b92e 100644 --- a/src/anomalib/deploy/inferencers/openvino_inferencer.py +++ b/src/anomalib/deploy/inferencers/openvino_inferencer.py @@ -4,12 +4,12 @@ # SPDX-License-Identifier: Apache-2.0 import logging -from importlib.util import find_spec from pathlib import Path -from typing import TYPE_CHECKING, Any +from typing import Any import cv2 import numpy as np +from lightning_utilities.core.imports import package_available from omegaconf import DictConfig from PIL import Image @@ -94,11 +94,10 @@ def __init__( task: str | None = None, config: dict | None = None, ) -> None: - try: - import openvino as ov - except ImportError: - logger.warning("OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer.") - raise + if not package_available("openvino"): + msg = "OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer." + raise ImportError(msg) + self.device = device self.config = config @@ -107,7 +106,7 @@ def __init__( self.task = TaskType(task) if task else TaskType(self.metadata["task"]) - def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any, "CompiledModel"]: + def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any, Any]: """Load the OpenVINO model. Args: