openvino 使用 yolov5模型

大家好,我是青空

最近在折腾了一个yolov5的模型,然后想使用在openvino上,在这期间踩了不少的坑,记录一下。

yolov5 模型训练

yolov5 下载地址 https://github.com/ultralytics/yolov5

下载完 yolov5 之后,执行模型训练命令

python train.py --weights yolov5s.pt --img 1280 --data xxx.yaml --cfg yolov5.yaml --device 0,1 --workers 0 --batch-size 1 

命令行参数解析
–weights : 权重文件
–img : 训练图片的大小
–data :训练集和测试集的配置
–cfg : 模型配置
–device: 配置使用cpu ,还是gpu
–workers: cpu加载数据的线程数
–batch-size:训练时读取数据集的数量

另外还有更多的参数可以到yolov5 中 train.py 里查看

yolov5 pt 文件转换成 onnx文件

export 命令

python export.py --weights yolov5s.pt --img 640 

命令行参数解析
–weights : 权重文件
–img : 训练图片的大小

另外还有更多的参数可以到yolov5 中 export.py 里查看

openvino 运行 onnx

这里就讲讲 openvino直接运行 onnx 文件,本来原计划是打算使用IR文件来执行的,但是导出之后发现效果很差。

openvino 执行 onnx 和 执行 IR 代码是类似的。

net = ie.read_network(model='last.onnx')
input_blob = next(iter(net.input_info))
output_blob = "output"
exec_net = ie.load_network(network=net, device_name='cpu')
original_image = cv2.imread('xxx.jpg')
image = original_image.copy()
_, _, net_h, net_w = net.input_info[input_blob].input_data.shape
if image.shape[:-1] != (net_h, net_w):
    print(f'Image {args.input} is resized from {image.shape[:-1]} to {(net_h, net_w)}')
    image = cv2.resize(image, (net_w, net_h))
image = image.astype('float32')
image = image.transpose((2, 0, 1))
image /= 255.0
if (len(image.shape) == 3):
    image = image[None]
res_openvino = exec_net.infer(inputs={input_blob: image})

然后启动执行的时候遇到了一下的一个问题。

Unknown model format! Cannot find reader for model format: onnx and read the model: last.onnx. Please check that reader library exists in your PATH.

大概意思是onnx 读取的类库找不到。解决办法也比较简单。就是初始化openvino的环境变量

cd C:\Program Files (x86)\Intel\openvino_2021.4.582\bin
setupvars.bat

这个 setupvars.bat 文件会执行一系列的path设置操作。 那每次启动执行以下,还是比较麻烦的,那我就直接设置到环境变量中。

C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\ngraph\lib
C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\tbb\bin
C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\bin\intel64\Release
C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\bin\intel64\Debug
C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\hddl\bin
C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\omp\lib
C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\gna\lib

C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\model_optimizer

设置完之后,发现还是不行啊, 当时我懵了。只好把所有的PATH打印出来,执行过 setupvaars.bat 和未执行 进行一个对比,发现执行过的多了一些特定的Path变量名称的path设置。

青空就一个一个的尝试, 最后尝试出了OPENVINO_LIB_PATHS,原来 openvino 读取onnx的lib 必须是以来这个Path 来执行的。

OPENVINO_LIB_PATHS=C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\ngraph\lib;C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\tbb\bin;C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\bin\intel64\Release;C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\bin\intel64\Debug;C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\hddl\bin;C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\omp\lib;C:\Program Files (x86)\Intel\openvino_2021.4.582\deployment_tools\inference_engine\external\gna\lib;

设置完成,搞定,可以执行了。

你可能感兴趣的:(计算机视觉,openvino,深度学习,目标检测)