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

2024-06-17 13:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有英特尔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:\Users\06442\PycharmProjects\OpenVino\33.jpg")
image = cv2.resize(image, (300, 300))
input_blob = cv2.dnn.blobFromImage(image, 1.0 / 127.5, (300, 300), 127.5)

model = r"C:\Users\06442\PycharmProjects\OpenVino\MobileNetSSD_deploy.caffemodel"
prototxt = r"C:\Users\06442\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

也许是有帮助的


Tags: inimagejsondatanetfloatoutcv2
1条回答
网友
1楼 · 发布于 2024-06-17 13:00:39

错误表明,这可能是由于您环境中使用的OpenCV版本,该版本可能没有Intel的深度学习推理引擎(DL IE)

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

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

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

相关问题 更多 >