1.拉取最新yolov5代码,训练自己数据或者直接用官方pt模型来进行转为openvino的格式,当前已经支持直接把pt模型转为openvino。
我拉取的是:2023-10-03 21:46 dd9e3382c9af9697fb071d26f1fd1698e9be3e04
在export.py代码中把default中加个'openvino'就可以了
parser.add_argument( '--include', nargs='+', default=['torchscript', 'onnx', 'openvino'],
help='torchscript, onnx, openvino, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle')
2.转完之后openvino的文件是单独存在一个文件夹下,里面有三个文件,xxx.xml,xxx.bin,xxx.yaml,如下所示:
3.可以根据给的提示进行测试,如下:
4.测试通过后就安装openvino运行所需的环境,到下面这个网址下载Archives
4.1 OpenVINO 2023.1 — OpenVINO™ documentation
5.我是在windows上使用,所以下载的是windows,下载后是一个压缩包,解压下(参考1有说把一些路径设置到环境变量中,这个可以设置也可以不设置,不设置运行时就把库都拷贝到运行.exe所在目录)。我下载的版本为:w_openvino_toolkit_windows_2023.1.0.12185.47b736f63ed_x86_64.zip,当前是最新
6.打开visual studio,新建一个控制台工程,配置openvino和opencv环境
所添加的lib如下:
opencv_world3411d.lib
openvino_cd.lib
openvino_onnx_frontendd.lib
openvino_paddle_frontendd.lib
openvino_pytorch_frontendd.lib
openvino_tensorflow_frontendd.lib
openvino_tensorflow_lite_frontendd.lib
openvinod.lib
7.利用参考2来运行测试转换后的openvino模型,参考2是yolov5作者认可的代码(如:TFLite, ONNX, CoreML, TensorRT Export · Issue #251 · ultralytics/yolov5 · GitHub)
直接把代码复制粘贴,只需把模型路径和图片路径修改下就好
7.点击生成,编译成功后,打开exe所在路径,把opencv和openvino运行所需的dll全部拷进来
8.点击运行,就可以看到结果,由于是Debug版本,速度有点慢
9.还可以加入如下代码,打印使用的openvino版本,以及电脑自带的CPU、GPU等型号
// -------- Get OpenVINO runtime version --------
std::cout << ov::get_openvino_version().description << ':' << ov::get_openvino_version().buildNumber << std::endl;
std::cout << "Available devices: " << std::endl;
for (auto&& device : availableDevices)
{
std::cout << device << std::endl;
}
踩坑
由于之前是在虚拟机运行,导致产生一个报错,一直解决不了,可能这是虚拟机的bug,关于CPU使用啥,报错如下:
Detailed description: Wrong NUMA node id
解决办法,不在虚拟机运行,放到本机就不报错了。
参考
1.c++windows+yolov5-6.2+openvino模型部署超详细_c++:openvino符号文件_十方zh的博客-CSDN博客
2.GitHub - dacquaviva/yolov5-openvino-cpp-python: Example of using ultralytics YOLOv5 with Openvino in C++ and Python.3.https://mp.weixin.qq.com/s/USN5UGsONanzTp-JNfHtuA
4.OpenVINO™ Blog