OpenVINO是一个用于提升深度学习模型部署性能的跨平台的工具包,安装和使用都非常简单,下面 demo 视频是在 Mac 机器上运行的例子,安装过程在上面的文档链接中,安装主要是需要下载大量深度框架相关的库和模型,以及 Intel 已经封装好的一些脚本。
之前在神经计算棒上部署过openvino来测试神经棒的速度。
Demo 大致的过程是下载一个预先训练好的模型,这个模型是用来检测图片车辆的一个模型,然后针对例子中的车的图片,并做 Inference 的过程。
软硬件环境
- ubuntu 18.04 64bit
- openvino_2020.3.341
- yolov5 4.0
openvino是什么
openvino
是一个用于解决在intel
硬件平台上进行深度学习部署的方案,支持windows
、linux
和macOS
。
openvino环境搭建
下载地址:https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/download.html
下载后解压并进入目录
1 | tar xvf l_openvino_toolkit_p_2020.3.341.tgz |
执行脚本开始按提示安装
1 | # 或者使用带GUI界面的安装脚本sudo ./install_GUI.sh |
接下来测试下安装是否成功
1 | cd /opt/intel/openvino/deployment_tools/demo |
这就说明,openvino
的环境安装成功了。
这里需要注意下,由于,在安装过程中,脚本已经帮我们设置了相关的环境,所以我们去测试时无需做任何设置。但是如果下次开机,或者打开新的terminal
,我们就需要重新来设置环境,执行
1 | source /opt/intel/openvino/bin/setupvars.sh |
或者直接将上述命令写入~/.bashrc
中,就不用每次手动敲了。
目录/opt/intel
下有openvino
和openvino_2020.3.341
2个目录,其实它们是同一个东西,openvino
是个软链接文件。
pt转onnx
首先准备依赖
1 | pip install onnx coremltools networkx defusedxml |
由于目前openvino
的版本对onnx opset
11 版本后的支持有问题,因此需要修改文件model/export.py
,将原来opset_version
由12改为10,如下
1 | torch.onnx.export(model, img, f, verbose=False, opset_version=10, input_names=['images'], |
接下来就可以将yolov5
的pt
模型转换成onnx
格式了,这里使用其自带的yolov5s.pt
模型进行测试
1 | python models/export.py --weights weights/yolov5s.pt --img-size 640 --batch-size 1 |
转换结束后,就会在weights
文件夹下生成yolov5s.onnx
onnx转ir
ir
即Intermediate Representation
,openvino
的模型优化器(Model Optimizer
)会将给定的模型转化为标准的ir
格式,并对其进行优化。
使用openvino
自带的脚本,就可以完成从.onnx
到.bin
和.xml
的转换,命令如下
1 | mo.py --input_model weights/yolov5s.onnx |
openvino测试
这里使用c++
语言编写测试程序,下载地址:https://github.com/fb029ed/yolov5_cpp_openvino,非常感谢作者`fb029ed`的分享
1 | cd yolov5_cpp_openvino/demo |
需要将前面生成的yolov5s.bin
、yolov5s.xml
和一张测试图片拷贝到res
目录下,图片重命名为bus.jpg