基于OpenVINO™ 2022.1实现YOLOv5推理程序 | 开发者实战

openlab_4276841a 更新于 1年前

1.1 OpenVINO 2022.1简介


OpenVINO 工具套件2022.1版于2022年3月22日正式发布,根据官宣《OpenVINO 迎来迄今为止最重大更新,2022.1新特性抢先看》,OpenVINO 2022.1将是迄今为止最大变化的版本。


从开发者的角度来看,对于提升开发效率或运行效率有用的特性有:

1、提供预处理API函数。OpenVINO 2022.1之前版本不提供OpenVINO runtime原生的用于数据预处理的API函数,开发者必须通过第三方库,比如,OpenCV,来实现数据预处理。OpenVINO 2022.1自带的预处理API可以将所有预处理步骤都集成到在执行图中,这样iGPU、CPU、VPU 或今后Intel的独立显卡都能进行数据预处理,大大提高了执行效率;相比之前,用OpenCV实现的预处理,则只能在CPU上执行,如下图所示。



2、ONNX前端API。前端API意味着模型可以直接被OpenVINO读入,而无需使用模型优化器进行模型转换,这对于使用 ONNX 模型的开发人员非常有用。OpenVINO 2022.1自动转换ONNX模型的速度相比之前版本,有极大提升,开发人员已经感受不到ONNX模型自动转换的时间消耗了。


3、AUTO 设备插件。AUTO设备插件自动将AI推理计算加载到最合适的硬件设备上(CPU, GPU, VPU等),无需额外的开发工作即可提高模型在异构系统中(例如:12代CPU + Iris Xe 集成显卡 + DG2 独显) 的推理性能和可移植性。


4、支持直接读入飞桨模型。这对于使用飞桨框架的开发人员非常有用。


1.2   YOLOv5简介


Ultralytics公司贡献的YOLOv5 PyTorch 实现版:https://github.com/ultralytics/yolov5

由于其工程化和文档做的特别好,深受广大AI开发者的喜爱,GitHub上的星标超过了23.8K,而且被PyTorch官方收录于PyTorch的官方模型仓。在产业实践中,也有无数的开发者将YOLOv5直接用于自己的项目。


由于YOLOv5精度高速度快(最新的YOLOv5模型精度如下所示),使得产业界里面使用YOLOv5模型做产品和项目的人非常多。


另外,YOLOv5的工程化和文档化做的极好,没有任何基础的人,都可以在不到半天的时间内完成YOLOv5的开发环境搭建、模型训练、ONNX模型导出。


YOLOv5的文档链接:

https://docs.ultralytics.com/


1.3 准备YOLOv5的OpenVINO 推理程序开发环境


要完成YOLOv5的OpenVINO 工具套件推理程序开发,需要安装:

  • YOLOv5

  • OpenVINO 工具套件

由于YOLOv5的工程化做的实在太好,在Windows10中安装上述环境,只需要两步。

第一步:

git clone 

https://github.com/ultralytics/yolov5.git

第二步:

在YOLOv5文件夹中,修改25、30和35行如下所示。



然后使用命令:

pip install -r requirements.txt

完成开发环境安装。


1.4 导出YOLOv5 ONNX模型


在YOLOv5文件夹下,使用命令:python export.py --weights yolov5s.pt --include onnx,完成YOLOv5s.onnx模型导出,如下图所示。




1.5 用Netron工具查看YOLOv5s.onnx的输入和输出


使用Netron(https://netron.app/),查看YOLOv5s.onnx模型的输入和输出。




从图中可以看出:YOLOv5 6.1版本之后,直接导出的ONNX格式模型会多出一个output层,这个output已经完全整合了之前三层的原始输出,再也不需要搞anchor的比率跟重新写解析后处理了,output出来每一行85个数值,前面5个数值分别是:

cx, cy, w, h, score, 后面80个参数是MSCOCO的分类得分。


1.6 使用OpenVINO 开发YOLOv5的推理程序


使用OpenVINO 2022.1开发推理程序的典型步骤如下所示,从图中可见,三行 OpenVINO API函数可以完成YOLOv5s.onnx模型的推理。


完整范例程序如下:





上述范例程序下载链接:

https://gitee.com/ppov-nuc/yolov5_infer/blob/main/infer_by_openvino2022.py

运行效果如下所示:


综上所述,基于YOLOv5和OpenVINO 2022.1训练并部署模型,学习轻松,上手快速,使用方便,适合产业项目实际应用。


本文转自微信公众号【英特尔物联网

0个评论