【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战

‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主
🎄所属专栏:『LabVIEW深度学习实战』
🍻上期文章: LabVIEW使用OpenVINO加速必备工具包下载与安装教程
📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、👍点赞、✌收藏、👍订阅专栏

前言

前面两篇文章介绍了OpenVINO工具包及具体的安装,今天我们一起来看一下,如何使用LabVIEW OpenVINO工具包实现YOLOv8的推理部署。其他yolo模型在LabVIEW中的部署可以查看专栏【深度学习:物体识别(目标检测)】


一、YOLOv8简介

YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。

YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以进一步提高性能和灵活性。YOLOv8 旨在快速、准确且易于使用,这也使其成为对象检测、图像分割和图像分类任务的绝佳选择。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,还支持YOLO以往版本,方便不同版本切换和性能对比。

YOLOv8 有 5 个不同模型大小的预训练模型:n、s、m、l 和 x。关注下面的参数个数和COCO mAP(准确率),可以看到准确率比YOLOv5有了很大的提升。特别是 l 和 x,它们是大模型尺寸,在减少参数数量的同时提高了精度。
在这里插入图片描述
每个模型的准确率如下
在这里插入图片描述

YOLOv8官方开源地址:https://github.com/ultralytics/ultralytics


二、环境搭建

2.1 部署本项目时所用环境

  • 操作系统:Windows10
  • python:3.6及以上
  • LabVIEW:2018及以上 64位版本
  • AI视觉工具包:techforce_lib_opencv_cpu-1.0.0.98.vip
  • OpenVINO工具包:virobotics_lib_openvino-1.0.0.9.vip【1.0.0.9及以上版本均可】

2.2 LabVIEW工具包下载及安装

2.3 安装OpenVINO2022 Dev Tools(选做)

如果你打算直接使用已经导出好的OpenVINO模型(IR格式文件),则不需要安装OpenVINO2022 Dev Tools,可以直接进入步骤四-项目实战,如果你打算自己将yolov8.pt导出为OpenVINO模型(IR格式文件),那请安装OpenVINO2022 Dev Tools,具体安装命令如下:

pip install openvino-dev==2022.3.0

'注意:因为LabVIEW推理中使用的OpenVINO工具包是2022.3.0版本,所以Dev Tools也需要2022.3.0版本'


三、yolov8导出OpenVINO(选做)

注意:本教程已经为大家提供了YOLOv8的openvino模型,可跳过本步骤,直接进行步骤四-项目实战。若是想要了解YOLOv8的openvino模型如何导出,则可继续阅读本部分内容。

下面我们来介绍openvino模型(IR格式文件)的导出(以yolov8s为例,想要导出其他模型的方式也一样,只需要修改名字即可)

3.1 安装YOLOv8

YOLOv8的安装有两种方式,pip安装和GitHub安装。

  • pip安装
pip install ultralytics -i https://pypi.douban.com/simple/
  • GitHub安装
git clone https://github.com/ultralytics/ultralytics

cd ultralytics

pip install -e '.[dev]'

大家可以选择其中的一种安装方式进行安装,安装完成后就可以通过yolo命令在命令行进行使用了。

3.2 下载模型权重文件

在官方网站中下载我们所需要的权重文件
在这里插入图片描述

注意:这一步其实可以不做,我们在第三步导出模型为openvino的时候如果权重文件不存在,会自动帮我们下载一个权重文件,但速度会较慢,所以个人还是建议先在官网中下载权重文件,再导出为openvino模型(IR格式文件)

3.3 导出模型为openvino

新建一个文件夹名字为“yolov8_openvino”,将刚刚下载的权重文件“yolov8s.pt”放到该文件夹下的models文件夹里
在这里插入图片描述
在models文件夹下打开cmd,在cmd中输入以下命令将模型直接导出为openvino模型(IR格式文件):

yolo export model=yolov8s.pt format=openvino 

在这里插入图片描述
可以看到模型已经成功导出,并保存在<yolov8s_openvino_model>文件夹下
在这里插入图片描述

仔细查看导出信息,我们可以看到整个导出过程是先将yolov8s.pt导出为onnx,再将onnx模型导出为openvino模型(IR格式文件)。
在这里插入图片描述

如果觉得上面方式不方便,那我们也可以写一个python脚本,快速导出yolov8的openvino模型(IR格式文件),程序如下:

from ultralytics import YOLO
 
# Load a model
model = YOLO("\models\yolov8s.pt")  # load an official model
 
# Export the model
model.export(format="openvino")

当然,也可以导出为其他格式,具体参数可参考如下文档:
在这里插入图片描述


四、项目实践

实现效果:LabVIEW中使用OpenVINO部署yolov8实现目标检测

整个项目工程如下,本次项目以yolov8s为例

在这里插入图片描述

  • model:yolov8模型文件
  • subvi:子vi
  • yolov8_IE_camera:yolov8摄像头视频实时推理

准备工作

  1. 将coco.names移动到yolov8_openvino文件夹下;
  2. 确保models文件中已经放置了yolov8的onnx以及模型openvino模型。

4.1 加载YOLOv8的openvino模型实现实时目标检测

1.获取模型文件及类别标签文件路径;
在这里插入图片描述

2.模型初始化:加载openvino模型并读取该模型输出的shape;
在这里插入图片描述

3.图像预处理:创建所需Mat并启动摄像头,对视频流中的每帧进行预处理
在这里插入图片描述

cvtColor:颜色空间转换把采集的BGR图像转为RGB
letterbox:深度学习模型输入图片的尺寸为正方形,而数据集中的图片一般为长方形,粗暴的resize会使得图片失真,采用letterbox可以较好的解决这个问题。该方法可以保持图片的长宽比例,剩下的部分采用灰色填充,输入参数是模型指定输入的大小,比如640*640。
在这里插入图片描述

循环的作用:归一化图像数据为圣经网络所需

4.模型推理:将数据输入给到IE_run.vi,数据的大小为1x3x640x640;

在这里插入图片描述

IE_Run是一个多态vi,我们选择Automatic,则该vi会根据输入数据不同自动选择类型,本范例中,使用类型为IE_Run_OneInput_1d_Float
在这里插入图片描述

5.获取推理结果:循环外初始化一个84x8400的二维数组,此数组作为IE_Get_Result.vi的输入,另一个输入为index=0,输出为84x8400的二维数组结果,推理之后,将推理结果由84x8400 transpose为8400x84,以便于输入到后处理;

在这里插入图片描述

6.后处理

在这里插入图片描述

范例中yolov8_post_process 的输入8400x84,84的排列顺序:

  • 第0列代表物体中心x在图中的位置
  • 第1列表示物体中心y在图中的位置
  • 第2列表示物体的宽度
  • 第3列表示物体的高度
  • 第4~83列为基于COCO数据集的80分类的标记权重,最大的为输出分类。

8400的含义是:YOLOv8的3个检测头一共有80x80+40x40+20x20=8400个输出单元格
yolov8_post_process 的输出为box的x,y,w,h以及confidence和类别class

注:如果用户训练自己的数据集,则列数将根据用户定义的类别数改变。如果用户的数据集中有2类,那么输入数据的大小将为8400x6。前4列意义和之前相同,后2列为每一个分类的标记权重。

7.绘制检测结果:在图片上绘制box把那个显示识别结果和置信度
在这里插入图片描述

8.完整源码;
在这里插入图片描述

9.运行效果(检测1280*720的视频流)

测试电脑型号如下

  • CPU型号:11th Gen Intel® Core™ i7-11800H @ 2.30GHz 2.30 GHz
  • 集显型号:Intel® UHD Graphics
    在这里插入图片描述

4.2 加载YOLOv8的onnx模型实现实时目标检测

我们在以上程序中做一点小小的修改,只需要修改加载模型函数为IE_Creat_session_from_ONNX.vi,修改模型相对路径为model\yolov8s.onnx,则可实现LabVIEW OpenVINO2022版工具包加载onnx模型
在这里插入图片描述

1.完整程序;
在这里插入图片描述

2.实现效果(检测1280*720的视频流)

  • CPU加速:

在这里插入图片描述

五、速度对比

在同一电脑下,我们使用LabVIEW onnx工具包加载yolov5s模型,检测1280*720的视频流,每帧耗时大概是100多毫秒(如下动态图所示),对比我们可以看出,在CPU下推理,OpenVINO工具包更有优势

在这里插入图片描述

我们本次项目中所用IR是FP32,如果对模型调优量化,速度会更快

六、项目源码

码字不易,如需源码,请一键三连并订阅本专栏后评论区留下邮箱


总结

以上就是今天要给大家分享的内容,希望对大家有用。下一篇会给大家更新使用TensorRT来部署加速YOLOv8实现目标检测,我们下篇文章见~

如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏

推荐阅读

LabVIEW图形化的AI视觉开发平台(非NI Vision),大幅降低人工智能开发门槛
LabVIEW图形化的AI视觉开发平台(非NI Vision)VI简介
LabVIEW AI视觉工具包OpenCV Mat基本用法和属性
手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集
LabVIEW AI开发者福音:LabVIEW OpenVINO AI加速工具包,不来看看?
LabVIEW使用OpenVINO加速必备工具包下载与安装教程
👇技术交流 · 一起学习 · 咨询分享,请联系👇

  • 80
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 112
    评论
YOLOv5是一种流行的目标检测算法,而OpenVINO 2022是一款用于深度学习模型部署和加速推理的工具包。结合使用YOLOv5和OpenVINO 2022可以实现高效的目标检测应用部署。 使用OpenVINO 2022部署YOLOv5的推理有以下步骤: 1. 安装OpenVINO 2022:首先需要下载和安装OpenVINO 2022工具包。安装完成后,配置OpenVINO的环境变量等设置。 2. 模型转换:YOLOv5的原始模型是使用PyTorch训练的,为了能够在OpenVINO中进行推理,需要将模型转换为OpenVINO支持的IR(Intermediate Representation)格式。可以使用OpenVINO提供的Model Optimizer工具来完成模型转换,具体命令如下: ```bash mo.py --input_model <path_to_yolov5_model> --model_name yolov5 -o <output_dir> --data_type FP16 ``` 这里的`<path_to_yolov5_model>`是原始YOLOv5模型的路径,`<output_dir>`是转换后的IR模型的输出目录,`--data_type`指定了推理过程中使用的数据精度,可以根据需求选择FP16或FP32。 3. 推理应用开发:根据使用场景和需求,使用OpenVINO提供的API开发推理应用程序。可以使用C++、Python等主流编程语言进行开发,OpenVINO提供了相应的API接口供开发者使用。开发过程中需要加载转换后的模型文件,并进行图像的预处理、推理计算等操作。 4. 编译和优化:使用OpenVINO提供的Model Optimizer工具,可以对推理应用进行编译和优化,以提高推理性能。具体命令如下: ```bash mo.py --input_model <model_xml> --model_name yolov5 --output_dir <output_dir> --data_type FP16 --batch 1 ``` 这里的`<model_xml>`是前面转换得到的IR模型的路径,`<output_dir>`是优化后的模型文件的输出目录,`--batch`指定了模型的批处理大小,可以根据需求进行调整。 5. 部署和推理:在部署和推理阶段,可以将优化后的模型和开发的应用程序部署到目标设备上,并进行推理计算。OpenVINO提供了适用于多种硬件平台的推理引擎,可以选择合适的推理引擎来进行部署。 综上所述,使用OpenVINO 2022部署YOLOv5的推理需要进行模型转换、推理应用开发、编译和优化等步骤。通过结合YOLOv5和OpenVINO 2022,可以实现高效的目标检测应用部署和推理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 112
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

virobotics

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值