0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenVINO工具套件预处理API的概念及使用方法

英特尔物联网 来源:英特尔物联网 作者:杨雪锋 2022-06-09 17:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.1概述

在《基于OpenVINO 2022.1实现YOLOv5推理程序》中详述了:

■ YOLOv5框架的安装和如何导出YOLOv5.onnx模型

■ OpenVINO 2022.1的安装以及如何编写YOLOv5模型的推理程序

本文将介绍如何使用OpenVINO 2022.1的预处理API,进一步提升YOLOv5模型的推理计算性能。

1.2什么是预处理API函数?

OpenVINO 2022.1之前版本不提供OpenVINO Runtime原生的用于数据预处理的API函数1 ,如图1-1所示,开发者必须通过第三方库(例如:OpenCV)来实现数据预处理。

4f0aec8c-e7d4-11ec-ba43-dac502259ad0.png

图1-1 OpenVINO Runtime预处理API

假设没有预处理API,那么输入数据的预处理操作只能放在CPU上实现,CPU完成数据预处理后,再将预处理后的数据传给iGPU、VPU等AI加速计算设备进行推理计算。

有了预处理API后,就能将预处理操作集成到在模型执行图中,这样iGPU、VPU 或即将发布的Intel独立显卡都能进行数据预处理,无需依赖CPU,提高了执行效率,如图1-2所示。

4f224c60-e7d4-11ec-ba43-dac502259ad0.png

图1-2 预处理OpenCV vs OpenVINO

1.3数据预处理的典型操作

由于输入数据的Shape、Precision等特征,与模型输入张量的要求不一致,所以需要通过预处理,将输入数据按照模型输入张量的要求进行转换,如图1-3所示。

4f52176a-e7d4-11ec-ba43-dac502259ad0.png

图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 将预处理步骤集成到模型

4f7a257a-e7d4-11ec-ba43-dac502259ad0.png

图1-4 使用预处理API的流程

本文将按照上述顺序依次介绍。

1.4.1 实例化PrePostProcessor对象

实例化PrePostProcessor对象的Python代码,如代码清单1-1所示。

代码清单1-1 实例化PrePostProcessor对象

4f8b9cec-e7d4-11ec-ba43-dac502259ad0.png

1.4.2 申明输入数据的信息

申明输入数据的信息的Python代码,如代码清单1-2所示。

代码清单1-2 申明输入数据的信息

4fa39ef0-e7d4-11ec-ba43-dac502259ad0.png

1.4.3 指定模型的数据布局(layout)

指定模型的数据布局(layout) 的Python代码,如代码清单1-3所示。

代码清单1-3 指定模型的数据布局(layout)

4fc1fa6c-e7d4-11ec-ba43-dac502259ad0.png

1.4.4 设置模型输出张量的信息

设置模型输出张量的信息的Python代码,如代码清单1-4所示。

代码清单1-4 设置模型输出张量的信息

4fdccd38-e7d4-11ec-ba43-dac502259ad0.png

1.4.5 定义预处理的具体步骤

定义预处理的具体步骤的Python代码,如代码清单1-5所示。

代码清单1-5 定义预处理的具体步骤

4fef0b1a-e7d4-11ec-ba43-dac502259ad0.png

50002544-e7d4-11ec-ba43-dac502259ad0.png

1.4.6 将预处理步骤集成到模型

将预处理步骤集成到模型的Python代码,如代码清单1-6所示。

代码清单1-6 将预处理步骤集成到模型

502210f0-e7d4-11ec-ba43-dac502259ad0.png

1.4.7 将集成了预处理步骤的模型导出

使用serialize()函数,可以将集成了预处理步骤的模型导出,方便后续调用,如代码清单1-7所示。

代码清单1-7 导出包含预处理步骤的模型

503df586-e7d4-11ec-ba43-dac502259ad0.png

使用Netron打开导出模型,可以看到预处理步骤已经集成到执行图中,如图1-5所示。

50524f54-e7d4-11ec-ba43-dac502259ad0.png

图1-5 预处理集成到执行图中

导出集成预处理模型的完整源代码:

1.5完整范例代码和测试结果

本文随附使用OpenVINO 2022.1预处理API实现YOLOv5s推理程序的完整源代码,参见:https://gitee.com/ppov-nuc/yolov5_infer/blob/main/infer_with_openvino_preprocess.py。

表1-1 使用OpenVINO 2022.1预处理API和

使用OpenCV实现预处理的性能对比

操作系统:Windows10;Python版本:3.8;OpenVINO版本:2022.1

模型:yolov5s.onnx

50864836-e7d4-11ec-ba43-dac502259ad0.png

执行命令, 将yolov5s.onnx转换为FP16精度的yolov5s.xml后

mo --input_model yolov5s.onnx --data_type FP16

操作系统:Windows10;Python版本:3.8;OpenVINO版本:2022.1

模型:yolov5s.xml @ FP16

50a22038-e7d4-11ec-ba43-dac502259ad0.png

1.6总结

本文完整介绍了什么是OpenVINO工具套件预处理API和为什么推荐使用预处理API将预处理操作集成到模型执行图中,然后详细介绍了使用步骤并提供了完整范例源代码。

通过运行源代码,可以看到,使用了OpenVINO 工具套件预处理API,使输入数据预处理操作不再依赖CPU,可以由推理设备(如GPU/VPU)完成,提高了推理计算效率,减少了运行时间。

原文标题:使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能 | 开发者实战

文章出处:【微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    61

    文章

    10320

    浏览量

    181065
  • API
    API
    +关注

    关注

    2

    文章

    2473

    浏览量

    67003
  • 预处理
    +关注

    关注

    0

    文章

    33

    浏览量

    10834

原文标题:使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能 | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    淘宝搜索API:关键词优化工具,提升曝光率!

    搜索API的使用、关键词优化原理、工具开发方法以及实际应用策略,帮助您高效提升曝光率。 1. 淘宝搜索API概述 淘宝搜索API是淘宝开放平
    的头像 发表于 01-05 15:38 312次阅读
    淘宝搜索<b class='flag-5'>API</b>:关键词优化<b class='flag-5'>工具</b>,提升曝光率!

    爱回收平台价格查询API接口详解

    ​ 在爱回收平台上,用户经常需要根据品牌ID和项目ID查询相关商品或服务的价格。为此,平台提供了一个简洁高效的API接口,帮助开发者或第三方应用实现自动化价格查询。本文将详细介绍这个API使用方法
    的头像 发表于 11-19 14:57 886次阅读
    爱回收平台价格查询<b class='flag-5'>API</b>接口详解

    教你如何使用API

    一、了解API API(Application Programming Interface)即应用程序编程接口,是一种使不同的应用程序能共享数据和功能的软件工具API可以通过网络、软
    的头像 发表于 11-09 17:48 1491次阅读

    教你如何使用API接口获取数据!

    一、了解API API(Application Programming Interface)即应用程序编程接口,是一种使不同的应用程序能共享数据和功能的软件工具API可以通过网络、软
    的头像 发表于 11-03 09:14 745次阅读

    全网最全面介绍拼多多API接口指南

    ​  在电商领域,拼多多作为领先的平台,提供了丰富的API接口,帮助开发者实现商品管理、订单处理、用户交互等功能。本文将从零开始,全面介绍拼多多API使用方法、核心接口、调用示例和注
    的头像 发表于 10-29 16:07 1242次阅读
    全网最全面介绍拼多多<b class='flag-5'>API</b>接口指南

    亚马逊:调用订单退款API自动化处理售后请求,缩短用户等待时间

    ​ 在电商运营中,售后处理效率直接影响用户体验和平台声誉。亚马逊作为全球领先的电商平台,其订单退款API为卖家提供了强大的自动化工具,帮助高效处理退款请求,显著缩短用户等待时间。本文将
    的头像 发表于 09-11 15:37 769次阅读
    亚马逊:调用订单退款<b class='flag-5'>API</b>自动化<b class='flag-5'>处理</b>售后请求,缩短用户等待时间

    锂电池制造 | 电芯预处理工艺的步骤详解

    电芯预处理是锂电池包制造的首要工序,无论是新能源汽车的续航稳定性,还是储能系统的循环寿命,其根基都可追溯至预处理工序对电芯一致性的把控,其核心在于通过系统检测与筛选消除量产电芯的性能差异,为后续组装
    的头像 发表于 08-11 14:53 2069次阅读
    锂电池制造 | 电芯<b class='flag-5'>预处理</b>工艺的步骤详解

    电商API日志分析的实用工具

    、优化用户体验、检测异常活动,并提升整体业务效率。然而,海量日志数据的管理和分析需要高效的工具支持。本文将介绍几种实用的电商API日志分析工具,并逐步解释其应用方法,帮助您快速上手。
    的头像 发表于 07-23 15:50 773次阅读
    电商<b class='flag-5'>API</b>日志分析的实用<b class='flag-5'>工具</b>

    无法将Tensorflow Lite模型转换为OpenVINO™格式怎么处理

    将 Tensorflow Lite 模型转换为 OpenVINO™ 格式。 遇到的错误: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostP
    发表于 06-25 08:27

    请问如何优化OpenVINO工具套件中的内存使用?

    运行OpenVINO™推断时找不到优化内存使用情况的方法
    发表于 06-25 06:56

    无法将Openvino™ 2025.0与onnx运行时Openvino™ 执行提供程序 1.16.2 结合使用,怎么处理

    使用OpenVINO™与英特尔 i5-8500 CPU 和超核处理器 630 iGPU 一起部署模型。 使用了 Microsoft.ML.OnnxRuntime.OpenVino
    发表于 06-24 06:31

    odf光纤配线架使用方法

    ODF光纤配线架的使用方法主要包括以下几个步骤: 一、准备工作 工具和材料准备:准备好熔接机、光纤切割刀、光纤剥皮钳、光纤清洁工具(如清洁笔、无尘布)、光纤跳线、光纤熔接套管、扎带等工具
    的头像 发表于 05-22 10:11 1795次阅读

    Intel OpenVINO™ Day0 实现阿里通义 Qwen3 快速部署

    本文将以 Qwen3-8B 为例,介绍如何利用 OpenVINO 的 Python API 在英特尔平台(GPU, NPU)Qwen3 系列模型。
    的头像 发表于 05-11 11:36 1876次阅读
    Intel <b class='flag-5'>OpenVINO</b>™ Day0 实现阿里通义 Qwen3 快速部署

    LCR测试仪的使用方法与注意事项

    LCR测试仪的使用方法、操作注意事项及常见故障处理,帮助读者高效、安全地掌握这一仪器的使用技巧。   二、LCR测试仪的基本使用方法 1. 准备阶段 (1)设备检查:确保测试仪电源线、连接线完好,电源开关关闭。检查测试夹具或探针
    的头像 发表于 04-29 10:36 2w次阅读
    LCR测试仪的<b class='flag-5'>使用方法</b>与注意事项

    OpenVINO C#如何运行YOLO11实例分割模型

    代码是我在OpenVINO-CSharp-API作者开源的YOLOv8对象检测的代码基础上修改而成。
    的头像 发表于 04-29 09:30 2225次阅读
    <b class='flag-5'>OpenVINO</b> C#如何运行YOLO11实例分割模型