全国服务热线:

15861139266

YOLOv8 检测、分割模型的 OpenVINO 部署,苏州机器视觉培训,苏州工业机器人培训
发布时间:2024-04-01 10:16:24 点击次数:162

为什么需要OpenVINO?


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

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

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

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

部署简化: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])

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

image.png

上述代码的解释


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


导入库:


该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])

输出:

image.png

上述代码的解释


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


导入库:


该代码使用该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)

输出:

image.png

上述代码的解释:


导入库:


代码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)

输出:

image.png

上述代码的解释:


导入库:


代码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指定导出的模型不应使用半精度浮点数。


立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络