YOLOv8 检测、分割模型的 OpenVINO 部署

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

为什么需要OpenVINO?

OpenVINO(Open Visual Inference and Neural network Optimization)是英特尔推出的一种深度学习推理工具包,旨在优化和加速深度学习模型的推理过程。将模型转换为OpenVINO格式的主要优势有:

  1. 性能优化:OpenVINO能够针对英特尔硬件进行优化,包括 CPU、GPU、VPU 和 FPGA 等,从而实现对深度学习模型的加速推理,提高推理性能和效率。

  2. 跨平台部署:OpenVINO支持跨多种硬件平台进行部署,包括边缘设备和云服务器,能够在不同的设备上实现高效的推理。

  3. 模型保护:OpenVINO可以将模型转换为 IR(Intermediate Representation)格式,这样可以保护模型的知识产权,避免模型被轻易篡改或复制。

  4. 部署简化:OpenVINO提供了简单易用的部署工具和库,使得在实际应用中部署深度学习模型变得更加便捷。

使用自定义训练模型进行图像检测

from ultralytics import YOLO
from pathlib import Path
from IPython.display import Image
from PIL import Image


IMAGE_PATH = Path("data\coco_bike.jpg")


# There are three lines of code below, all are correct.
# You can use one of them


# Use Raw String Literal:
# det_model = YOLO(r"models\best.pt")


# Use Forward Slashes
# det_model = YOLO("models/best.pt")


# Use Double Backslashes:
det_model = YOLO("models\\best.pt")
label_map = det_model.model.names


res = det_model(IMAGE_PATH)
Image.fromarray(res[0].plot()[:, :, ::-1])

当我们在终端中运行上述代码时,它会对图像执行检测,如下所示:

a11930fe4358fabea48a3b17a8a3df1e.jpeg

上述代码的解释

此代码是一个 Python 脚本,它使用“ultralytics”库中的 YOLO(You Only Look Once)对象检测模型来检测图像中的对象。让我们分解一下代码的每个部分的作用:

  1. 导入库:

  • 该ultralytics库提供了用于处理各种计算机视觉任务的工具,包括使用 YOLO 进行对象检测。

  • 该pathlib库用于处理文件和目录路径。

  • 该IPython.display库用于在 Jupyter 笔记本中显示图像。

  • 该PIL库(Python Imaging Library)用于图像处理。

2.定义图像路径:

  • 该IMAGE_PATH变量设置为位于名为“data”的目录中名为“coco_bike.jpg”的图像文件的路径。

3.加载YOLO模型:

  • 使用 ultralytics 库中的类加载 YOLO 模型YOLO。模型文件“best.pt”作为参数提供。

4. 获取标签图:

  • 该label_map变量被分配了 YOLO 模型能够检测的类名列表。这些类名是从 YOLO 模型中加载的。

5.检测物体:

  • YOLO 模型 ( det_model) 用于检测指定图像中的物体 ( IMAGE_PATH)。

  • 检测结果存储在res变量中。

6.显示结果:

  • Image.fromarray()使用库中的函数显示检测结果PIL。该plot()方法用于创建检测到的对象的图像表示,并使用切片([:, :, ::-1])反转颜色通道以将图像从 BGR 转换为 RGB 格式。

分割

from ultralytics import YOLO
from pathlib import Path
from IPython.display import Image
from PIL import Image


SEG_MODEL_NAME = "yolov8n-seg"


IMAGE_PATH = Path("data\coco_bike.jpg")
seg_model = YOLO("models\yolov8n-seg.pt")
res = seg_model(IMAGE_PATH)
Image.fromarray(res[0].plot()[:, :, ::-1])

输出:

23b216cfd9c86ffd36f653e0c2028f4d.jpeg

上述代码的解释

让我们以简单的方式一步一步地解释一下这段代码:

  1. 导入库:

  • 该代码使用该ultralytics库来处理计算机视觉模型。

  • 该pathlib库用于处理文件路径。

  • 该IPython.display库用于在笔记本中显示图像。

  • 该PIL库用于与图像相关的任务。

2.设置模型名称和图像路径:

  • 该SEG_MODEL_NAME变量设置为“yolov8n-seg”分割模型的名称。该模型旨在理解图像的结构并将其分割成不同的部分。

  • 该IMAGE_PATH变量设置为位于“data”目录中名为“coco_bike.jpg”的图像文件的路径。

3.加载分割模型:

  • YOLO使用ultralytics 库中的类加载 YOLO 分割模型。

  • 模型文件“yolov8n-seg.pt”作为参数提供。此文件包含分割模型的预训练权重和配置。

4.执行分割:

  • seg_model使用分割模型( )对指定的图像( IMAGE_PATH)进行分割。

  • 分割的结果存储在res变量中。

5.显示分割图像:

  • 代码将分割结果转换为可以显示的图像格式。

  • 该plot()方法用于创建分割区域的图像表示。

  • 图像的颜色通道被反转([:, :, ::-1])以使其适合以 RGB 格式显示。

6.显示图像:

  • Image.fromarray()该库中的函数用于PIL在 IPython 笔记本中显示分割图像。

导出物体检测模

# object detection model
from ultralytics import YOLO
import os


# Use Forward Slashes
det_model = YOLO("models/best.pt")


det_model_path = "models/best_openvino_model/best.xml"
if not os.path.exists(det_model_path):
    det_model.export(format="openvino", dynamic=True, half=False)

输出:

5103cac0d2b9419da244eec0461625ce.jpeg

62e0d3e05c8d261acea019756e8d6aac.jpeg

上述代码的解释:

  1. 导入库:

  • 代码YOLO从ultralytics库中导入类以与对象检测模型协同工作。

  • 该os模块被导入是为了与操作系统协同工作。

2.加载对象检测模型:

  • YOLO使用库中的类加载对象检测模型ultralytics。

  • 模型文件“best.pt”作为参数提供。该模型用于检测图像中的对象。

3.定义 OpenVINO 的导出路径:

  • 该变量det_model_path设置为对象检测模型的 OpenVINO 模型文件“best.xml”的路径。

4.导出为 OpenVINO 格式:

  • 代码检查 OpenVINO 模型文件是否不存在指定路径。

  • 如果文件不存在,则使用该export方法将对象检测模型导出为 OpenVINO 格式:

    • format="openvino"指定导出格式应为OpenVINO。

    • dynamic=True表示导出的模型应该支持动态输入形状。

    • half=False指定导出的模型不应使用半精度浮点数。

导出分割模型

# Export segmentation model
from ultralytics import YOLO
import os


# Use Forward Slashes
seg_model = YOLO("models/yolov8n-seg.pt")


seg_model_path = "models/yolov8n-seg_openvino_model/yolov8n-seg.xml"
if not os.path.exists(seg_model_path):
    seg_model.export(format="openvino", dynamic=True, half=False)

输出:

e5ab49b03fc55eba4e4cf1da22d515d6.jpeg

c95cd07d666610516b7f902f95b05116.jpeg

上述代码的解释:

  1. 导入库:

  • 代码YOLO从ultralytics库中导入类以与分割模型协同工作。

  • 该os模块被导入用于与操作系统交互。

2.加载分割模型:

  • YOLO使用库中的类来加载分割模型ultralytics。

  • 模型文件“yolov8n-seg.pt”作为参数提供。该模型专为图像分割而设计。

3.定义 OpenVINO 的导出路径:

  • 该变量seg_model_path设置为OpenVINO模型文件“yolov8n-seg.xml”的保存路径。

4.导出为 OpenVINO 格式:

  • 代码检查 OpenVINO 模型文件是否不存在指定路径。

  • 如果该文件不存在,则使用该export方法将分割模型导出为 OpenVINO 格式:

    • format="openvino"指定导出格式应为OpenVINO。

    • dynamic=True表示导出的模型应该支持动态输入形状。

    • half=False指定导出的模型不应使用半精度浮点数。

文中完整的项目地址和模型可以查看:https://github.com/mushfiq1998/export-trained-yolov8-to-openvino-with-python

 
 
下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: YOLOv5是一种基于深度学习的目标检测算法,而OpenVINO是英特尔开发的用于神经网络模型优化和部署的工具集。 首先,YOLOv5可以在训练过程中生成模型权重,这些权重包含了检测目标的特征信息。然后,使用OpenVINO可以将YOLOv5训练得到的模型进行优化和部署。 在YOLOv5 c OpenVINO部署过程中,首先需要将YOLOv5的模型转换为OpenVINO支持的IR(Intermediate Representation)格式。这可以通过OpenVINO提供的Model Optimizer工具来完成,该工具可以将YOLOv5模型的权重和配置文件转换为OpenVINO可用的中间表示格式。 转换完成后,就可以使用OpenVINO进行模型部署OpenVINO提供了一系列可以用于优化和加速神经网络的计算库和工具。例如,可以使用OpenVINO的Inference Engine库来加载和运行转换后的模型,并利用英特尔的硬件加速功能提高推理速度和效率。 此外,OpenVINO还提供了一些用于适配不同硬件平台的示例代码和优化技术。例如,可以使用OpenVINO的Hardware-Aware Optimizations工具来针对特定的硬件平台进行优化,以实现更好的性能表现。 总结来说,YOLOv5 c OpenVINO部署是将基于深度学习的目标检测算法YOLOv5转换为OpenVINO支持的中间表示格式,并使用OpenVINO进行模型的优化和部署。通过利用OpenVINO提供的硬件加速和优化技术,可以提高模型的推理速度和效率。 ### 回答2: YOLOv5是一个用于目标检测的深度学习模型,而OpenVINO是一种用于模型部署和优化的开源工具包。将YOLOv5模型部署OpenVINO中,可以提高模型的推理性能并适应不同的硬件环境。 首先,要将YOLOv5模型转换为OpenVINO支持的IR格式。IR(中间表示)格式是一种中间表达,能够将深度学习模型转换为可在不同硬件上执行的优化形式。可以使用OpenVINO提供的Model Optimizer工具来进行模型转换。该工具将根据模型的结构和权重生成IR文件。 接下来,在部署模型之前,需要选择适当的推理引擎。OpenVINO提供了多种推理引擎,例如CPU、GPU、VPU等。根据硬件环境的特性选择最优的推理引擎。 在进行实际的部署前,需要编写一个推理脚本来加载IR文件并执行推理操作。脚本需要指定输入图像、处理结果以及模型的基本参数,例如置信度阈值、IOU阈值等。可以使用OpenVINO提供的Python API来编写推理脚本。 最后,可以在硬件设备上运行推理脚本来进行目标检测。通过OpenVINO的优化,模型的推理速度可以得到明显的提升,并且可以在不同硬件环境中进行部署,如服务器、边缘设备等。 总之,将YOLOv5模型部署OpenVINO需要进行模型转换、选择推理引擎、编写推理脚本等步骤。这样可以提高模型的推理性能,并使其适应不同的硬件环境。 ### 回答3: YOLOv5是一个流行的目标检测算法,其在计算机视觉领域具有广泛的应用。OpenVINO是英特尔开发的一个工具套件,用于优化和部署深度学习模型YOLOv5-C是YOLOv5系列中的一个变种,其相对较小而轻量化,适合在资源受限的设备上进行部署OpenVINO可以用于将训练好的YOLOv5-C模型进行加速和优化,并将其部署到不同的设备上。 在使用OpenVINO部署YOLOv5-C模型时,首先需要使用OpenVINO的Model Optimizer工具将模型转换为OpenVINO可识别的格式。这个工具可以自动进行网络层级别的优化和压缩,以减少模型的大小和计算量。 转换完成后,可以使用OpenVINO的Inference Engine进行模型推理。Inference Engine是一个优化的推理引擎,可以在各种硬件设备上高效地运行深度学习模型。它提供了API和示例代码,使得在不同平台上进行部署变得更加简单和便捷。 通过使用OpenVINO部署YOLOv5-C模型,可以获得更高的推理性能和更低的延迟。这对于一些应用场景,如实时目标检测和视频分析,非常重要。此外,OpenVINO还支持边缘设备、嵌入式系统和云计算平台,使得模型可以在多种场景下灵活部署和应用。 总而言之,使用OpenVINO部署YOLOv5-C模型可以实现对模型的优化和加速,使得在各种设备上实现高效的目标检测应用成为可能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值