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® OpenVINO™ toolkit - 包括准备使用的 OpenCV 构建
- OpenCV+DLDT Windows package(社区版)
- 从 Microsoft Windows
的源代码构建 OpenCV
有关此信息和其他信息,请检查 Intel's Deep Learning Inference Engine backend
我有 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® OpenVINO™ toolkit - 包括准备使用的 OpenCV 构建
- OpenCV+DLDT Windows package(社区版)
- 从 Microsoft Windows 的源代码构建 OpenCV
有关此信息和其他信息,请检查 Intel's Deep Learning Inference Engine backend