软硬件环境
- 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
下载后解压并进入目录
tar xvf l_openvino_toolkit_p_2020.3.341.tgz
cd l_openvino_toolkit_p_2020.3.341
执行脚本开始按提示安装
# 或者使用带GUI界面的安装脚本sudo ./install_GUI.sh
sudo ./install.sh
按回车键继续
选2,不同意收集我的信息
按回车键继续
同意并开始安装
按回车键继续
至此,安装结束
接下来测试下安装是否成功
cd /opt/intel/openvino/deployment_tools/demo
./demo_security_barrier_camera.sh
./demo_security_barrier_camera.sh -d GPU(测试gpu环境)
这就说明,openvino
的环境安装成功了。
这里需要注意下,由于,在安装过程中,脚本已经帮我们设置了相关的环境,所以我们去测试时无需做任何设置。但是如果下次开机,或者打开新的 terminal
,我们就需要重新来设置环境,执行
source /opt/intel/openvino/bin/setupvars.sh
或者直接将上述命令写入 ~/.bashrc
中,就不用每次手动敲了。
目录 /opt/intel
下有 openvino
和 openvino_2020.3.341
2个目录,其实它们是同一个东西,openvino
是个软链接文件。
pt转onnx
首先准备依赖
pip install onnx coremltools networkx defusedxml
由于目前 openvino
的版本对 onnx opset
11 版本后的支持有问题,因此需要修改文件 model/export.py
,将原来 opset_version
由12改为10,如下
torch.onnx.export(model, img, f, verbose=False, opset_version=10, input_names=['images'],
output_names=['classes', 'boxes'] if y is None else ['output'])
接下来就可以将 yolov5
的 pt
模型转换成 onnx
格式了,这里使用其自带的 yolov5s.pt
模型进行测试
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
的转换,命令如下
mo.py --input_model weights/yolov5s.onnx
可以看到在当前目前生成了 yolov5s.bin
和 yolov5s.xml
openvino测试
这里使用 c++
语言编写测试程序,下载地址:https://github.com/fb029ed/yolov5_cpp_openvino,非常感谢作者 fb029ed
的分享
cd yolov5_cpp_openvino/demo
mkdir build
cmake ..
make
./detect_test
需要将前面生成的 yolov5s.bin
、yolov5s.xml
和一张测试图片拷贝到 res
目录下,图片重命名为 bus.jpg