OpenVINO2022版本Python API演示

描述

OpenVINO2022 API介绍

OpenVINO2022 版本的SDK在使用比之前版本简单,而且功能比较丰富,特别是支持动态输入设置,一次可以推理多张图像;相比之前的模型输入只支持一种尺度输入跟每次一张图片推理来说是大大的提升执行效率。特别是Python版本的API简单易学,容易上手,只需要掌握下面几个函数就可以完成从模型加载到推理。

导入支持

要使用Python SDK,首先需要导入支持语句,  


API

加载模型

2022版本加载模型提供了两种模式分别是read_model与compile_model方式,这两种方式得到分别是model跟compiled model,其中通过read_model方式读取的model对象可以通过compile_model函数转换为compiled model,同时它们都支持直接访问属性获取输入与输出层信息(inputs/outputs),函数如下:

API

修改模型输入

Model的reshape方法支持把模型输入修改,同时会修改整个模型的下行转发推理,当前支持的修改参数包括batch size、输入图像的宽高、假设模型的原始输入为:

1x3x224x224

修改为:

8x3x448x448

只需要调用reshape方法,一行代码即可完成:

model.reshape([8, 3, 448, 448])

前后对比示意图如下:

API
 

上述是从一种静态输入各种,设置为另外一种静态输入格式。OpenVINO的reshape还支持动态输入(不定长)的推理输入设置,假设把模型的输入格式从:

[?x3x640x640]

修改为:

[4x3x640x?]

其中 表示不定长,可以用如下代码:


API
其中 -1表示不定长!   

注意:修改输入/动态输入在iGPU上暂时还无法被支持,所以AUTO模式下修改以后可能会遇到推理失败的情况!这块建议参考官方文档说明。

模型推理

Python SDK支持两种方式,一种是通过complied model直接推理,这种方式跟很多深度学习的推理方式非常类似,另外一种方式是先通过compiled model创建InferRequest实例对象,然后调用infer方法完成推理,个人推荐第一种方法,简单快捷明了,希望OpenVINO以后直接把第二种方法给disable了,同时官方的教程也更新为第一种方式推理!两种推理方式代码示意,

方法一:

results = compiled_model(input_data)

方法二:

infer_request = compiled_model.create_infer_request()

infer_request.infer()

output_tensor = infer_request.get_output_tensor()

场景文字检测模型演示

下面是基于2022版本最新Python SDK调用OpenVINO官方提供的自带场景文字检测模型,完成了一个简单的场景文字检测OpenVINO2022版本 Python SDK演示,代码如下:

APIAPIAPIresized_image = cv.resize(image, (w, h), interpolation=self.interpolate_mode) APIAPIcontours, hiearchy = cv.findContours(mask, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) API

  输入图像:

 

API

场景文字检测结果: API

一个trick的地方,当你修改为动态输入的时候有时候会遇到这个错误:

ValueError: get_shape was called on a descriptor::Tensor with dynamic shape

 

API

这个时候你需要把Core初始化为全局类属性变量或者一个全局变量一般情况下就会修正这个错误,这个是使用动态输入推理最有玄机的地方!原因我也解释不清楚,也许OpenVINO还需要持续改进,提升开发者满意度!



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分