4
4
# SPDX-License-Identifier: Apache-2.0
5
5
6
6
import logging
7
- from importlib .util import find_spec
8
7
from pathlib import Path
9
- from typing import TYPE_CHECKING , Any
8
+ from typing import Any
10
9
11
10
import cv2
12
11
import numpy as np
12
+ from lightning_utilities .core .imports import package_available
13
13
from omegaconf import DictConfig
14
14
from PIL import Image
15
15
21
21
22
22
logger = logging .getLogger ("anomalib" )
23
23
24
- if find_spec ("openvino" ) is not None :
25
- import openvino as ov
26
-
27
- if TYPE_CHECKING :
28
- from openvino import CompiledModel
29
- else :
30
- logger .warning ("OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer." )
31
-
32
24
33
25
class OpenVINOInferencer (Inferencer ):
34
26
"""OpenVINO implementation for the inference.
@@ -102,6 +94,10 @@ def __init__(
102
94
task : str | None = None ,
103
95
config : dict | None = None ,
104
96
) -> None :
97
+ if not package_available ("openvino" ):
98
+ msg = "OpenVINO is not installed. Please install OpenVINO to use OpenVINOInferencer."
99
+ raise ImportError (msg )
100
+
105
101
self .device = device
106
102
107
103
self .config = config
@@ -110,7 +106,7 @@ def __init__(
110
106
111
107
self .task = TaskType (task ) if task else TaskType (self .metadata ["task" ])
112
108
113
- def load_model (self , path : str | Path | tuple [bytes , bytes ]) -> tuple [Any , Any , "CompiledModel" ]:
109
+ def load_model (self , path : str | Path | tuple [bytes , bytes ]) -> tuple [Any , Any , Any ]:
114
110
"""Load the OpenVINO model.
115
111
116
112
Args:
@@ -121,6 +117,8 @@ def load_model(self, path: str | Path | tuple[bytes, bytes]) -> tuple[Any, Any,
121
117
[tuple[str, str, ExecutableNetwork]]: Input and Output blob names
122
118
together with the Executable network.
123
119
"""
120
+ import openvino as ov
121
+
124
122
core = ov .Core ()
125
123
# If tuple of bytes is passed
126
124
if isinstance (path , tuple ):
0 commit comments