linux cpu占用率如何看
365
2022-10-23
OpenVINO工具套件预处理API的概念及使用方法
1.1概述
在《基于OpenVINO 2022.1实现YOLOv5推理程序》中详述了:
■ YOLOv5框架的安装和如何导出YOLOv5.onnx模型
■ OpenVINO 2022.1的安装以及如何编写YOLOv5模型的推理程序
1.2什么是预处理API函数?
图1-1 OpenVINO Runtime预处理API
图1-2 预处理OpenCV vs OpenVINO
1.3数据预处理的典型操作
由于输入数据的Shape、Precision等特征,与模型输入张量的要求不一致,所以需要通过预处理,将输入数据按照模型输入张量的要求进行转换,如图1-3所示。
图1-3 输入数据 vs 模型输入张量
从图1-3中可见,数据预处理的典型操作有:
■改变输入数据的形状:[720, 1280,3] → [1, 3, 640, 640]
■改变输入数据的精度:U8 → f32
■ 改变输入数据的颜色通道顺序:BGR → RGB
■改变输入数据的布局(layout):HWC → NCHW
■ 归一化数据:减去均值(mean),除以标准差(std)
1.4数据预处理API的使用方法
对应数据预处理的典型操作,OpenVINO 工具套件预处理API提供了相应的类,方便开发者快速使用,其主要流程有6步2 ,如图1-4所示,依次是:
1 实例化PrePostProcessor对象;
2 申明输入数据的信息
3 指定模型的数据布局(layout)
4 设置模型输出张量的信息
5 定义预处理的具体步骤
6 将预处理步骤集成到模型
图1-4 使用预处理API的流程
本文将按照上述顺序依次介绍。
1.4.1 实例化PrePostProcessor对象
代码清单1-1 实例化PrePostProcessor对象
1.4.2 申明输入数据的信息
申明输入数据的信息的Python代码,如代码清单1-2所示。
代码清单1-2 申明输入数据的信息
1.4.3 指定模型的数据布局(layout)
指定模型的数据布局(layout) 的Python代码,如代码清单1-3所示。
代码清单1-3 指定模型的数据布局(layout)
1.4.4 设置模型输出张量的信息
设置模型输出张量的信息的Python代码,如代码清单1-4所示。
代码清单1-4 设置模型输出张量的信息
1.4.5 定义预处理的具体步骤
定义预处理的具体步骤的Python代码,如代码清单1-5所示。
代码清单1-5 定义预处理的具体步骤
1.4.6 将预处理步骤集成到模型
将预处理步骤集成到模型的Python代码,如代码清单1-6所示。
代码清单1-6 将预处理步骤集成到模型
1.4.7 将集成了预处理步骤的模型导出
使用serialize()函数,可以将集成了预处理步骤的模型导出,方便后续调用,如代码清单1-7所示。
代码清单1-7 导出包含预处理步骤的模型
使用Netron打开导出模型,可以看到预处理步骤已经集成到执行图中,如图1-5所示。
图1-5 预处理集成到执行图中
导出集成预处理模型的完整源代码:
1.5完整范例代码和测试结果
表1-1 使用OpenVINO 2022.1预处理API和
使用OpenCV实现预处理的性能对比
操作系统:Windows10;Python版本:3.8;OpenVINO版本:2022.1
模型:yolov5s.onnx
执行命令, 将yolov5s.onnx转换为FP16精度的yolov5s.xml后
mo --input_model yolov5s.onnx --data_type FP16
操作系统:Windows10;Python版本:3.8;OpenVINO版本:2022.1
模型:yolov5s.xml @ FP16
1.6总结
本文完整介绍了什么是OpenVINO工具套件预处理API和为什么推荐使用预处理API将预处理操作集成到模型执行图中,然后详细介绍了使用步骤并提供了完整范例源代码。
原文标题:使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能 | 开发者实战
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~