1.1 ►OpenVINO™ 2022.1简介
OpenVINO™ 工具套件2022.1版于2022年3月22日正式发布,根据官宣《OpenVINO™ 迎来迄今为止最重大更新,2022.1新特性抢先看》,OpenVINO™ 2022.1将是迄今为止最大变化的版本。
从开发者的角度来看,对于提升开发效率或运行效率有用的特性有:
1
提供预处理API函数。OpenVIN™ 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训练并部署模型,学习轻松,上手快速,使用方便,适合产业项目实际应用。