前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 OpenVINO 对图像进行分类

用 OpenVINO 对图像进行分类

原创
作者头像
IT蜗壳-Tango
发布2023-12-20 23:09:43
1450
发布2023-12-20 23:09:43
举报
文章被收录于专栏:Pandas基础实践Pandas基础实践

今天我们进行我们的第一个 Hello World 项目--用 OpenVINO 对图像进行分类。

该项目为【OpenVINO™ Notebooks】项目的 001-hello-world 工程。

openvino_notebooks/notebooks/001-hello-world at main · openvinotoolkit/openvino_notebooks (github.com)

该工程位于我们之前下载好的项目中

运行项目

在运行前我们先来介绍一下目录结构

001-hello-world.ipynb: 工程文件

data:用来保存数据的,里面是一只狗狗。

model:保存的是模型文件

utils:保存的是数据集相关的信息。

在运行代码之前,我们需要确认好它用的环境

我这个是一个错误示范,正确的环境应该是:openvino_env。 我们可以通过点击环境的名称然后进行选择

导入库文件

代码语言:javascript
复制
import json
import cv2import matplotlib.pyplot as pltimport numpy as npfrom openvino.inference_engine import IECore

复制代码

选择这个单元格 ctrl + alt + enter 进行代码运行,也可以直接点击左上角的运行按钮。

运行后如果看到如下图所示错误

我们可以将代码修改如下

代码语言:javascript
复制
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 安装目录,这个你要换成你自己的路径才行。

再次运行,报错消失

加载模型

代码语言:javascript
复制
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,欢迎你在评论区告诉我运行结果。

加载图片

代码语言:javascript
复制
# 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 中会看到

进行推理

代码语言:javascript
复制
result = exec_net.infer(inputs={input_key: input_image})[output_key]result_index = np.argmax(result)

复制代码

查看推理结果

代码语言:javascript
复制
# 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,一个热爱分享技术的无名程序猿,我们下期见。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运行项目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档