python - 使用 Movidius NCS2 的 OpenCV 在使用暗网神经网络时会出错
问题描述
我正在尝试使用 Intel Movidius 神经计算棒 2 执行 OCR。我使用的 OCR 网络基于 YOLO,因此将图形结构保存为.cfg
文件,将权重保存为.weights
文件。我使用在 Raspberry Pi 3b+ 上随 Openvino 一起安装的 OpenCV。我的代码如下:
import cv2
# load network
ocr_net = cv2.dnn.readNetFromDarknet('ocr-net.cfg', 'ocr-net.weights')
ocr_net.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
ocr_net.setPreferableBackend(cv2.dnn.DNN_BACKEND_INFERENCE_ENGINE)
# perform inference
im = cv2.imread('img_path.jpg')
blob = cv2.dnn.blobFromImage(im, swapRB=False)
ocr_net.setInput(blob)
result = ocr_net.forward()
在运行此代码时,我收到以下错误:
Traceback (most recent call last):
File "test.py", line 12, in <module>
result = ocr_net.forward()
cv2.error: OpenCV(4.1.2-openvino) /home/jenkins/workspace/OpenCV/OpenVINO/build/opencv/modules/dnn/src/op_inf_engine.cpp:704: error: (-215:Assertion failed) Failed to initialize Inference Engine backend: Device with "CPU" name is not registered in the InferenceEngine in function 'initPlugin'
如果我将推理目标更改为cv2.dnn.DNN_TARGET_CPU
并将推理后端更改为cv2.dnn.DNN_BACKEND_OPENCV
,则模型可以正常工作并且能够正确执行 OCR。我的 openvino/openCV 设置也正确安装,因为我可以使用 openCV(使用readNetFromTensorflow()
/ readNetFromCaffe()
)正确运行其他 Tensorflow/Caffe 模型。
我尝试使用的 OCR 网络可以在这里找到:cfg、weights。
任何帮助表示赞赏!
解决方案
根据我对英特尔文档的记忆,opencv.dnn 的 openVINO 发行版无法处理暗网模型。在此页面上,您可以找到我认为可以解释为所有受支持框架的列表。
我目前正在尝试将我的暗网自定义模型转换为 tf.pb 表示,到目前为止还没有运气。
推荐阅读
- javascript - 如何在多边形要素上叠加点要素
- docker - 直接运行时在 docker 容器中编译 cpp 文件失败,但如果使用交互式容器则可以
- c# - 我可以使用反射调用结构属性的“设置”方法吗?
- node.js - 当给定一个空白 index.js 文件时,为什么 ElectronJS 不会简单地退出?
- javascript - 当 img src 没有值时,更新 html 中的默认 img src
- python - pyspark:使用 window() 函数并比较字符串
- scala - 这是使用什么 scala 语言功能?它似乎从 JsObject 中提取值并转换它?
- mysql - 如何在 mysql 图表视图中创建检查约束?
- iis - 无法从在 IIS 服务上运行的应用程序连接到 SQL localDB 实例
- javascript - Vanilla JS Web Components 在第二次调用函数时出现意外的未定义属性