使用python API,对
openvino和
ONNX Runtime的推理时间进行比较。有学习并借用一些其他up的代码。
#
openvino
from
openvino.inference_engine import IECore
import numpy as np
import cv2
import time
ie = IECore()
model="shufflenet-v2-10.
onnx"
#model="shufflenet-v2-10/shufflenet-v2-10.xml"
段错误(Segment error)一般解释为内存溢出导致的结果
参考 github 上开源的Openvino cpp 解释推理仓库代码,
在后期 Yolov5 模型训练完之后出现(Segment error)
因为原仓库代码使用的是 YolvoV5 3官方模型推理的结果,结果的输出层和现在最新的 Yolov5输出层有点不用,3layer->4layer,所以在结果推理的时候因为出现随机的map 数值,在出现负数的时候会导致代码中的循环片段无效。
在 detect.cp p代码片段为在这里插入代码
我把YOLOv5最新版本的
模型分别用
OpenCV DNN(Python、C++)部署、
OpenVINO(Python、C++)部署、
ONNXRUNTIME-GPU(Python、C++)部署,然后还测试了CPU/GPU
不同平台上的运行
速度比较。
软件版本与硬件规格
测试用的硬件与软件信息:
GPU 1050Ti
CPU i7八代
OS:Win10 64位
OpenVINO2021.4
ONNXRUNTIME:1.4
OpenCV4.5.4
openvino安装步骤https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_windows.html#Update-Path
错误1 安装程序没找到python和gpu
在安装openvino过程会遇到这样的错误,不用管直接继续安装(电脑已经安装anaconda python 3.6),之后在cmd执行Configure the Model Optimizer命令的时候会找到pyth
OpenVINO可以将动态batchsize的ONNX模型转换为其支持的静态batchsize的模型。下面是一种实现方式:
首先,安装OpenVINO工具包,并将模型优化器(Model Optimizer)集成到环境中。该工具用于将ONNX模型转换为OpenVINO可以加载和推理的IR模型。
在转换ONNX模型之前,我们需要了解该模型的动态输入形状。通常,动态batchsize的模型在网络的输入节点上会标记为-1或None。我们可以使用ONNX Runtime库来动态推理模型并获取输入形状。
下一步是使用Model Optimizer将ONNX模型转换为IR模型。为了支持静态batchsize,我们需要在转换过程中指定batch参数。命令行示例如下:
python mo.py --input_model model.onnx --output_dir output --input_shape [B,C,H,W] --mean_values [mean_values] --scale_values [scale_values] --batch B
在命令行中,我们需要提供转换的ONNX模型,输出目录,输入形状,均值和缩放值。重要的是,在输入形状中指定batch维度并将其设置为所需的静态batchsize。
完成转换后,我们可以使用OpenVINO进行推理,输入静态batchsize的数据进行推理。
需要注意的是,在转换和推理过程中,我们需要确保模型和数据的形状匹配,以避免错误发生。如果需要批量推理,可以使用循环迭代每个批量进行推理。
这就是使用OpenVINO将动态batchsize的ONNX模型转换为静态batchsize模型的简要步骤。通过这种方式,我们可以使用OpenVINO对不同大小的批量进行高效推理。