在部署中使用OpenVino时遇到导入错误。尝试在requirements.txt文件中指定先前所有版本的OpenVino,以防问题与版本有关。确切的错误为:
File "/app/.heroku/python/lib/python3.8/site-packages/openvino/inference_engine/__init__.py", line 29, in <module>
2022-01-11T03:31:36.967769+00:00 app[web.1]: from .ie_api import *
2022-01-11T03:31:36.967828+00:00 app[web.1]: ImportError: /app/.heroku/python/lib/python3.8/site-packages/openvino/inference_engine/ie_api.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZTVN15InferenceEngine5TBlobIhSt9enable_ifILb1EvEEE
我不确定这个错误的性质是什么。它可能是依赖项的问题吗?完整的 requirements.txt 文件如下:
anyio
asgiref
astroid
azure-common
azure-core
azure-identity
azure-keyvault-secrets
certifi
cffi
charset-normalizer
click
cryptography
fastapi
h11
idna
isodate
isort
lazy-object-proxy
mccabe
msal
msal-extensions
msrest
oauthlib
opencv-python-inference-engine
openvino
platformdirs
portalocker
pycparser
pydantic
PyJWT
pylint
python-multipart
requests
requests-oauthlib
six
sniffio
starlette
toml
typing-extensions
urllib3
uvicorn
wrapt
还有一个包含以下内容的 Aptfile:
libpython3.8
而 runtime.txt 文件包含:
python-3.8.12
如果有用的话,我也尝试过从依赖项中删除Numpy,因为我听说Numpy和OpenVino相关的错误。
更新*
有趣的是,当在requirements.txt中将opencv-python-inference-engine替换为opencv-python-headless时,错误会改变:
cv2.error: OpenCV(4.5.5) /io/opencv/modules/dnn/src/dnn.cpp:4319: error: (-2:Unspecified error) Build OpenCV with Inference Engine to enable loading models from Model Optimizer. in function 'readFromModelOptimizer'
我认为错误可能与opencv的导入有关,或者可能与构建包有关?
对于推断,我正在使用:
im_cv = cv.imread(tmp_path_str)
frame = cv.cvtColor(im_cv, cv.COLOR_RGB2BGR)
blob = cv.dnn.blobFromImage(frame, size=(180,180), ddepth=cv.CV_8U)
net.setInput(blob)
out = net.forward()