美文网首页
基于OpenVNO部署YOLOv5-seg实时实例分割模型

基于OpenVNO部署YOLOv5-seg实时实例分割模型

作者: LabVIEW_Python | 来源:发表于2023-01-20 10:32 被阅读0次

    1. 简介

    本文将介绍在基于OpenVINO在英特尔独立显卡上部署YOLOv5实时实例分割模型的全流程,并提供完整范例代码供读者使用。

    YOLOv5是AI开发者友好度最佳的框架之一,与其它YOLO系列相比:

    • 工程化水平好,工程应用时“坑”少
    • 文档详实友好,易读易懂
    • 既容易在用户的数据集上重训练又容易在不同的平台上进行部署
    • 社区活跃度高(截至2023-1-21有34.7k GitHub星)
    • 项目演进速度快
    • 默认支持OpenVINO部署
    • 在典型行业(制造业、农业、医疗、交通等)有广泛应用。

    2022年11月22日,YOLOv5 v7.0版正式发布,成为YOLO系列中第一个支持实时实例分割(Real Time Instance Segmentation)的框架。从此,YOLOv5框架不仅具有实时目标检测模型,还涵盖了图像分类和实例分割

    图片来源: https://github.com/ultralytics/yolov5/releases

    2022年英特尔发布了代号为Alchemist的第一代消费级锐炫™桌面独立显卡,OpenVINO™ 从2022.2版开始支持英特尔独立显卡,包括英特尔® 数据中心 GPU Flex 系列和英特尔® 锐炫™系列。

    2. 在英特尔独立显卡上部署YOLOv5-seg模型的完整流程

    在英特尔独立显卡上部署YOLOv5-seg模型的完整流程主要有三步:

    1. 搭建YOLOv5开发环境和OpenVINO部署环境
    2. 运行模型优化器(Model Optimizer)优化并转换模型
    3. 调用OpenVINO Runtime API函数编写模型推理程序,完成模型部署
      本文将按照上述三个步骤,依次详述

    2.1 搭建YOLOv5开发环境和OpenVINO部署环境

    最近的YOLOv5 Github 代码仓,即YOLOv5 v7.0,已经将openvino-dev[onnx]写入requirement.txt文件,当执行pip install -r requirements.txt,会安装完YOLOv5开发环境和OpenVINO部署环境。

    git clone https://github.com/ultralytics/yolov5 # clonecd yolov5
    cd yolov5
    pip install -r requirements.txt

    2.2 验证YOLOv5开发环境和OpenVINO部署环境

    执行完上述命令后,运行命令

    python segment\predict.py --source data\images

    执行结果如下图所示,说明YOLOv5开发环境和OpenVINO部署环境已搭建成功 部署环境已搭建成功

    2.3 导出yolov5s-seg OpenVINO IR模型

    使用命令:

    python export.py --weights yolov5s-seg.pt --include onnx

    获得yolov5s-seg ONNX格式模型:yolov5s-seg.onnx。然后运行命令:

    mo -m yolov5s-seg.onnx --data_type FP16

    获得yolov5s-seg IR格式模型:yolov5s-seg.xml和yolov5s-seg.bin

    2.4 使用OpenVINO Runtime API编写yolov5s-seg推理程序

    整个推理程序主要有五个关键步骤:

    第一步:创建Core对象;
    第二步:载入yolov5s-seg模型,并面向英特尔独立显卡编译模型
    第三步:对图像数据进行预处理
    第四步:执行AI推理计算
    第五步:对推理结果进行后处理,并可视化处理结果。

    整个代码框架如下所示:

    # Step1: Create OpenVINO Runtime Core
    core = Core()
    # Step2: Compile the Model, using dGPU A770m
    net = core.compile_model("yolov5s-seg.xml", "GPU.1")
    output0, output1 = net.outputs[0],net.outputs[1]
    b,n,input_h,input_w = net.inputs[0].shape # Get the shape of input node
    # Step3: Preprocessing for YOLOv5-Seg
    # ...
    # Step 4: Do the inference
    outputs = net([blob])
    pred, proto = outputs[output0], outputs[output1]
    # Step 5 Postprocess and Visualize the result
    # ...
    

    完整代码:yolov5seg_ov2022_sync_dgpu.py,运行结果如下图所示:

    运行结果

    3. 结论

    YOLOv5 的实时实例分割程序通过OpenVINO 部署在英特尔独立显卡上,可以获得高速度与高精度。读者还可以将程序通过OpenVINO异步API升级为异步推理程序或者用OpenVINO C++ API改写推理程序,这样可以获得更高的AI推理计算性能。

    相关文章

      网友评论

          本文标题:基于OpenVNO部署YOLOv5-seg实时实例分割模型

          本文链接:https://www.haomeiwen.com/subject/rzhchdtx.html