乐趣区

关于程序员:YOLOv5-在最新-OpenVINO-2021R02-版本的部署与代码演示详解

YOLOv5 在 OpenVINO 上的部署,网上有很多 python 版本的代码,然而根本都有个很外伤的问题,就是还在用 pytorch 的一些库做解析,C++ 的代码有个更大的外伤就是自定义解析解释的不是很分明,所以自己浏览 YOLOv5 的 pytorch 代码推理局部,从原始的三个输入层解析实现了 boxes, classes, nms 等要害 C++ 代码输入,实现了纯 OpenVINO+OpenCV 版本的 YOLOv5s 模型推理的代码演示。上面就是具体的零碎环境与各个局部解释,以及代码实现与演示图像。

零碎版本信息与依赖

Window 10 64bit

Pytorch1.7+CUDA10.0

Python3.8.5

VS2015

OpenVINO_2021.2.185

01

YOLOv5 下载与测试运行

YOLOv5 是第二个非官方的 YOLO 对象检测版本,也是第一个 Pytorch 实现的 YOLO 对象检测版本。Github 地址如下:

https://github.com/ultralytic…

须要克隆到本地

git clone https://github.com/ultralytic…

而后运行

pip install -r requirements.txt

装置所有依赖。

最初运行一段视频或者图像实现测试

python detect.py –source D:imagesvideoSungEun.avi –weights yolov5s.pt –conf 0.25

02

模型转换

模型转换次要是把原始的 YOLOv5 的 pytorch 模型文件转换为通用的凋谢模型格局 ONNX 与 OpenVIN 特有的文件格式 IR(.xml 与 .bin)。

OpenVINO 从 2020R02 当前版本开始反对间接读取 ONNX 格式文件,所以咱们既能够通过脚本间接导出 onnx 格式文件,间接给 OpenVINO 调用,也远程桌面能够对失去 ONNX 文件通过 OpenVINO 的模型转换脚本做进一步转换生成 IR 两头格局 (.bin 文件与 .xml 文件 )。

导出 ONNX 格式文件的脚本

Pytorch 的 YOLOv5 我的项目自身曾经提供了转换脚本,命令行运行形式如下:

export at 640×640 with batch size 1python models/export.py –weights yolov5s.pt –img 640 –batch 1

而后循环每个输入层,解析每个特色点对应的 3 个框与相干数据。因为在导出的时候 ONNX 格式文件时模型的推理失去的三个输入层原始后果,所以还须要对每个数据先实现 sigmoid 归一化,而后再计算相干值,这部分的代码实现我参考了我的项目中的 yolo.py 中的 Detection 局部,失去初始每个对象的检测框之后,采纳 OpenVINO 中自带非最大克制函数,实现非最大克制,就失去了最终的预测框,而后绘制显示。

退出移动版