使用 NCS2 加速推断识别图片

Posted ʚVVcatɞ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 NCS2 加速推断识别图片相关的知识,希望对你有一定的参考价值。

初始化IE(inference Engine)插件,查询设备支持的代码如下:

ie = IECore()
for device in ie.available_devices:  # 查看有哪些设备支持 OpenVino
    print(device)  # CPU GNA GPU MYRIAD

创建可执行的网络的代码如下:

exec_net = ie.load_network(network=net, device_name="MYRIAD")  #使用神经棒加速推断

目录文件如下

  • imagenet_classes.txt:类别文件
  • resnet18.bin:权重文件
  • resnet18.xml:模型文件

下面是完整代码:

from openvino.inference_engine import IECore
import numpy as np
import cv2 as cv

ie = IECore()
for device in ie.available_devices:  # 查看有哪些设备支持 OpenVino
    print(device)  # CPU GNA GPU MYRIAD

with open('imagenet_classes.txt') as f:
    labels = [line.strip() for line in f.readlines()]

model_xml = "resnet18.xml"
model_bin = "resnet18.bin"

net = ie.read_network(model=model_xml, weights=model_bin)
input_blob = next(iter(net.inputs))
out_blob = next(iter(net.outputs))

n, c, h, w = net.inputs[input_blob].shape
print(n, c, h, w)

src = cv.imread("./messi5.jpg")
image = cv.resize(src, (w, h))
image = np.float32(image) / 255.0  # 归一化
image[:, :, ] -= (np.float32(0.485), np.float32(0.456), np.float32(0.406))
image[:, :, ] /= (np.float32(0.229), np.float32(0.224), np.float32(0.225))
image = image.transpose(2, 0, 1) # 矩阵转置

exec_net = ie.load_network(network=net, device_name="MYRIAD")  #使用神经棒加速推断
res = exec_net.infer(inputs={input_blob: [image]})

res = res[out_blob]
print(res.shape)
label_index = np.argmax(res, 1)[0]
print(labels[label_index])
cv.putText(src, labels[label_index], (50, 50), cv.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2, 8)  # 在图片上写入文本
cv.imshow("image classification", src)
cv.waitKey(0)

原图:

检测结果:

原图:

检测结果:

以上是关于使用 NCS2 加速推断识别图片的主要内容,如果未能解决你的问题,请参考以下文章

全流程从头在树莓派4B上部署自己训练的yolov5模型(配合NCS2加速)

发布 | OpenCV 4.1.0来啦!

深度学习之intel NCS2算力棒开发笔记

Typescript编译器无法从Promise resolve调用中推断类型

图片识别加速,从 10 秒变为 1 秒,是怎么做到的呢? | 小程序云开发

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题