今天我们进行我们的第一个 Hello World 项目--用 OpenVINO 对图像进行分类。
该项目为【OpenVINO™ Notebooks】项目的 001-hello-world 工程。
该工程位于我们之前下载好的项目中
在运行前我们先来介绍一下目录结构
001-hello-world.ipynb: 工程文件
data:用来保存数据的,里面是一只狗狗。
model:保存的是模型文件
utils:保存的是数据集相关的信息。
在运行代码之前,我们需要确认好它用的环境
我这个是一个错误示范,正确的环境应该是:openvino_env。 我们可以通过点击环境的名称然后进行选择
导入库文件
import json
import cv2import matplotlib.pyplot as pltimport numpy as npfrom openvino.inference_engine import IECore
复制代码
选择这个单元格 ctrl + alt + enter 进行代码运行,也可以直接点击左上角的运行按钮。
运行后如果看到如下图所示错误
我们可以将代码修改如下
import jsonimport os
os.environ['Path'] += 'C:\\Program Files (x86)\\Intel\openvino_2021.4.689\\deployment_tools\\inference_engine\\external\\hddl\\bin;' \'C:\\Program Files (x86)\\Intel\openvino_2021.4.689\\deployment_tools\\inference_engine\\external\\tbb\\bin;'\'C:\\Program Files (x86)\\Intel\openvino_2021.4.689\\deployment_tools\\inference_engine\\bin\\intel64\\Debug;'\'C:\\Program Files (x86)\\Intel\openvino_2021.4.689\\deployment_tools\\inference_engine\\bin\\intel64\\Release;'\'C:\\Program Files (x86)\\Intel\openvino_2021.4.689\\deployment_tools\\ngraph\\lib;'\'C:\\Program Files (x86)\\Intel\openvino_2021.4.689\\deployment_tools\\model_optimizer;'
import cv2import matplotlib.pyplot as pltimport numpy as npfrom openvino.inference_engine import IECore
复制代码
C:\\Program Files (x86)\\Intel\openvino_2021.4.689 是我的 OpenVINO 安装目录,这个你要换成你自己的路径才行。
再次运行,报错消失
加载模型
ie = IECore()net = ie.read_network( model="model/v3-small_224_1.0_float.xml", weights="model/v3-small_224_1.0_float.bin")exec_net = ie.load_network(network=net, device_name="CPU")
input_key = next(iter(exec_net.input_info))output_key = next(iter(exec_net.outputs.keys()))
复制代码
我们这里使用的是 Intel 的 CPU,如果你的是 AMD 的我不确定是否会出问题,因为我们有 AMD 的 CPU,欢迎你在评论区告诉我运行结果。
加载图片
# The MobileNet network expects images in RGB formatimage = cv2.cvtColor(cv2.imread(filename="data/coco.jpg"), code=cv2.COLOR_BGR2RGB)
# resize to MobileNet image shapeinput_image = cv2.resize(src=image, dsize=(224, 224))
# reshape to network input shapeinput_image = np.expand_dims(input_image.transpose(2, 0, 1), 0)plt.imshow(image);
复制代码
运行后我们在 VSCode 中会看到
进行推理
result = exec_net.infer(inputs={input_key: input_image})[output_key]result_index = np.argmax(result)
复制代码
查看推理结果
# Convert the inference result to a class name.imagenet_classes = json.loads(open("utils/imagenet_class_index.json").read())
# The model description states that for this model, class 0 is background,# so we add 1 to the network output to get the class nameimagenet_classes = {int(key) + 1: value for key, value in imagenet_classes.items()}imagenet_classes[result_index]
复制代码
百度查询了一下 flat-coated_retriever 这个单词
似乎是没什么问题,为了验证方便,我们把它换成鸭子试试。
将图片命名为 test.jpg
我们从加载图片的步骤开始再次验证一次看看
记得将文件名称修改一下哦。
验证结果,可以到达它识别出来了。
好了,今天的内容就是这些了,如果对你有所帮助,欢迎转发给你的朋友们。
我是 Tango,一个热爱分享技术的无名程序猿,我们下期见。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。