OpenVINO(NCS2):如何使用推理引擎构建 OpenCV

OpenVINO(NCS2): How to build OpenCV with Inference Engine

我有 Intel NCS2,我想要 运行 我的程序,但我有一些问题

代码:

import json
import cv2


def decode_out(out):
    detections = []

    for data in out[0, 0, :, :]:
        if float(data[2]) > 0.3:
            detections.append({
                "bbox": [float(x) for x in data[3:]],
                "score": float(data[2]),
                "class_id": int(data[1])
            })

    return sorted(detections, key=lambda x: x['score'], reverse=True)


image = cv2.imread(r"C:\Users442\PycharmProjects\OpenVino.jpg")
image = cv2.resize(image, (300, 300))
input_blob = cv2.dnn.blobFromImage(image, 1.0 / 127.5, (300, 300), 127.5)

model = r"C:\Users442\PycharmProjects\OpenVino\MobileNetSSD_deploy.caffemodel"
prototxt = r"C:\Users442\PycharmProjects\OpenVino\MobileNetSSD_deploy.prototxt"

net = cv2.dnn.readNetFromCaffe(prototxt, model)

# with CPU
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
net.setInput(input_blob)
out1 = net.forward()
print(json.dumps(decode_out(out1), indent=2))

# with NCS2
net.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_INFERENCE_ENGINE)
net.setInput(input_blob)
out2 = net.forward()
print(json.dumps(decode_out(out2), indent=2))

“out2 = net.forward()”中的错误:

Unknown backend identifier in function

在 CPU 上一切正常,但在 NCS2 上不行。 在我的另一个代码中我有错误:

Build OpenCV with Inference Engine to enable loading models from Model Optimizer

也许有帮助

如错误提示,这可能是由于您的环境中使用的 OpenCV 版本可能没有英特尔的深度学习推理引擎 (DL IE)。

Build OpenCV with Inference Engine to enable loading models from Model Optimizer

假设您在 Windows(基于您程序中使用的路径的假设),您可以选择以下选项之一:

有关此信息和其他信息,请检查 Intel's Deep Learning Inference Engine backend