| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 使用OpenVINO预处理API进一步提升YOLOv5推理性能 -> 正文阅读 |
|
[人工智能]使用OpenVINO预处理API进一步提升YOLOv5推理性能 |
1.1概述:?在《基于OpenVINOTM 2022.1实现YOLOv5推理程序》中详述了:
本文将介绍如何使用OpenVINOTM 2022.1的预处理API,进一步提升YOLOv5模型的推理计算性能 1.2什么是预处理API函数?OpenVINO??2022.1之前版本不提供OpenVINOTM Runtime原生的用于数据预处理的API函数[1],如图1-1所示,开发者必须通过第三方库(例如:OpenCV)来实现数据预处理。 图1-1? OpenVINOTM Runtime预处理API 假设没有预处理API,那么输入数据的预处理操作只能放在CPU上实现,CPU完成数据预处理后,再将预处理后的数据传给iGPU、VPU等AI 加速计算设备进行推理计算。 有了预处理API后,就能将预处理操作集成到在模型执行图中,这样iGPU、VPU 或即将发布的Intel独立显卡都能进行数据预处理,无需依赖CPU,提高了执行效率,如图1-2所示。 图1-2? 预处理OpenCV vs OpenVINO 1.3数据预处理的典型操作由于输入数据的Shape、Precision等特征,与模型输入张量的要求不一致,所以需要通过预处理,将输入数据按照模型输入张量的要求进行转换,如图1-3所示。 ? 图1-3? 输入数据 vs模型输入张量 从图1-3中可见,数据预处理的典型操作有:
1.4数据预处理API的使用方法对应数据预处理的典型操作,OpenVINOTM预处理API提供了相应的类,方便开发者快速使用,其主要流程有6步[2],如图1-4所示,依次是:
图1-4? 使用预处理API的流程? 本文将按照上述顺序依次介绍。 1.4.1实例化PrePostProcessor对象实例化PrePostProcessor对象的Python代码,如代码清单1-1所示。 代码清单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所示。? ? ?导出集成预处理模型的完整源代码:https://gitee.com/ppov-nuc/yolov5_infer/blob/main/preprocessing_with_saving_to_IR.py 1.5完整范例代码和测试结果本文随附使用OpenVINOTM 2022.1预处理API实现YOLOv5s推理程序的完整源代码,参见:infer_with_openvino_preprocess.py · PPOV_NUC/yolov5_infer - Gitee.com。 表1-1使用OpenVINOTM 2022.1预处理API和使用OpenCV实现预处理的性能对比 操作系统:Windows10;Python版本:3.8;OpenVINO版本:2022.1 模型:yolov5s.onnx
?执行命令, 将yolov5s.onnx转换为FP16精度的yolov5s.xml后
操作系统:Windows10;Python版本:3.8;OpenVINO版本:2022.1 模型:yolov5s.xml @ FP16
??1.6总结本文完整介绍了什么是OpenVINO??预处理API和为什么推荐使用预处理API将预处理操作集成到模型执行图中,然后详细介绍了使用步骤并提供了完整范例源代码。 通过运行源代码,可以看到,使用了OpenVINO?预处理API,使输入数据预处理操作不再依赖CPU,可以由推理设备(如GPU/VPU)完成,提高了推理计算效率,减少了运行时间。 参考文献: [1] openvino.preprocess — OpenVINO? documentation [2] Preprocessing API - details — OpenVINO? documentation [3] openvino_notebooks/002-openvino-api.ipynb at main · openvinotoolkit/openvino_notebooks · GitHub |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:35:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |