最新OpenVINO实现yolov5 6.1版本C++

yolov5.6出来那么久了竟没有OpenVINO的C++实现,又因为树莓派不支持OpenVINO,所以入手NCS2,NCS2又仅支持FP16....

中间踩了不少坑, 在此记录一下最简单的复现方式,代码Windows通用,直接使用onnx模型文件即可。

生成IR文件

1.openvino部署(Windows跳过)

需要注意的是,之前opencv dnn实现yolov5.6转成了onnx模型文件,OpenVINO是可以直接读取onnx,但由于树莓派使用NCS2仅支持FP16,因此我们需要在Windows将yolov5.6的深度学习模型转换为支持FP16的IR文件。如果是在windows下实现,无需转成IR文件。

(树莓派的OpenVINO工具套件不包含模型优化器Model Optimizer,IR文件包含一个*.xml文件用来描述网络结构,还包含一个*.bin文件用来存储网络的权重和偏置量)

树莓派安装openvino:树莓派安装部署OpenVINO

yolov5.6中export.py可以直接转成openvino的IR模型文件,但没有FP16的参数

需要将export.py中165行:

cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f}"

改为:

 cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f}  --scale=255 --data_type=FP16"

 安装openvino-dev,因为树莓派中安装的是2021.4.689版本,所以这里openvino选择2021.4.2版本。(版本不同存在模型文件读取失败的问题)

最新OpenVINO实现yolov5 6.1版本C++_第1张图片

2.模型转换

export.py中修改参数

imgsz这里是自己训练的数据,大小为320

 --include加入openvino:

 运行export.py,生成openvino模型文件

最新OpenVINO实现yolov5 6.1版本C++_第2张图片

代码

代码中有模型文件可以直接使用,如果自己的数据的话将模型文件和classes.txt换成自己的就可以了。

GitHub - snail0614/yolov5.6_openvino_cpp

运行结果:

最新OpenVINO实现yolov5 6.1版本C++_第3张图片

用的yolov5n模型,输入320X320,推理用时45ms左右,速度可以,比单纯树莓派强多了。

yolov5.6.1训练自己的数据(超简单)

opencv dnn模块实现Yolov5_6.1

你可能感兴趣的:(YOLOv5,C++,深度学习,深度学习,人工智能)