OpenCV с использованием Movidius NCS2 выдает ошибку при использовании нейронной сети Darknet
Я пытаюсь выполнить OCR с помощью Intel Movidius Neural Compute Stick 2. Используемая мной сеть OCR основана на YOLO, и поэтому структура графа сохранена как .cfg
файл и веса как .weights
файл. Я использую OpenCV, который был установлен с Openvino на Raspberry Pi 3b+. Мой код приведен ниже:
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
, модель работает нормально и умеет правильно распознавать символы. Моя установка openvino/openCV также правильно установлена, поскольку я могу правильно запускать другие модели Tensorflow/Caffe, используя openCV (используяreadNetFromTensorflow()
/readNetFromCaffe()
).
Сеть OCR, которую я пытаюсь использовать, можно найти здесь: cfg, weights.
Любая помощь приветствуется!
1 ответ
Из того, что я помню из документации Intel, дистрибутив openVINO opencv.dnn не может обрабатывать модели даркнета. На этой странице вы можете найти список того, что, как я полагаю, можно интерпретировать как все поддерживаемые фреймворки.
В настоящее время я пытаюсь преобразовать свои пользовательские модели даркнета в представление tf.pb, пока не повезло.