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

共 2586字,需浏览 6分钟

 ·

2022-04-12 02:48

↑ 点击蓝字 关注极市平台

作者丨英特尔物联网行业创新大使 杨雪锋副教授
测试结果图片丨英特尔物联网行业创新大使 贾志刚老师
编辑丨极市平台

极市导读

 

OpenVINO™ 工具套件2022.1版于2022年3月22日正式发布!本次是迄今为止最大变化的版本。 >>加入极市CV技术交流群,走在计算机视觉的最前沿


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训练并部署模型,学习轻松,上手快速,使用方便,适合产业项目实际应用。


公众号后台回复“画图模板”获取90+深度学习画图模板~

极市干货
数据集资源汇总:10个开源工业检测数据集汇总21个深度学习开源数据集分类汇总
算法trick目标检测比赛中的tricks集锦从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述:一文弄懂各种loss function工业图像异常检测最新研究总结(2019-2020)


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~


觉得有用麻烦给个在看啦~  
浏览 65
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报