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;

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

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
首先,确保您已经安装了OpenVINO Toolkit和Yolov5模型。然后,按照以下步骤执行模型量化: 1. 从Yolov5的Github仓库中下载yolov5s.pt权重文件。 2. 下载OpenVINOModel Optimizer使用以下命令将模型转换为Intermediate Representation(IR)格式: ``` python3 mo.py --input_model yolov5s.pt --model_name yolov5s --input_shape [1,3,640,640] --data_type FP16 --reverse_input_channels ``` 这里我们将模型转换为FP16数据类型,并且输入形状为[1,3,640,640]。 3. 量化模型。我们可以使用OpenVINO的Post-Training Optimization Toolkit(PTQ)来量化模型。首先,需要生成calibration dataset。可以使用COCO 2017 validation dataset中的一部分来生成。 ``` python3 /opt/intel/openvino_2021/deployment_tools/tools/post_training_optimization_toolkit/generate_data.py --validation_dataset /path/to/coco/val2017 --annotations /path/to/coco/annotations/instances_val2017.json --subfolder val2017_subset ``` 这里我们使用COCO 2017 validation dataset,并且将其子集保存在val2017_subset文件夹中。 4. 接下来,我们使用PTQ来量化模型: ``` python3 /opt/intel/openvino_2021/deployment_tools/tools/post_training_optimization_toolkit/quantize.py --model /path/to/yolov5s.xml --data /path/to/calibration/dataset --output /path/to/quantized/model --input_shape [1,3,640,640] --input_name input.1 --output_names output.1 --static_threshold 0.01 --batch 1 --silent ``` 这里我们使用静态阈值的量化方法,并且将量化后的模型保存在quantized文件夹中。 5. 最后,我们可以使用OpenVINO的Inference Engine来运行量化后的模型: ``` python3 /opt/intel/openvino_2021.1.110/deployment_tools/inference_engine/demos/python_demos/object_detection_demo_yolov3_async/object_detection_demo_yolov3_async.py -i /path/to/input/video --model /path/to/quantized/model.xml --device CPU ``` 这里我们使用CPU设备来运行模型,输入视频路径为/path/to/input/video。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值