前面系列博客中有用tensorRT、OpenVINO加速模型推理

TensorRT加速方法介绍(python pytorch模型)_竹叶青lvye的博客-CSDN博客_tensorrt加速

OpenVINO使用介绍_竹叶青lvye的博客-CSDN博客_openvino resnet在

这边再简单提下ONNX Runtime的使用(微软推出),上面博客中只是将ONNX模型作为一个中间转换模型用,可能不怎么去接触更为原生态的推理框架ONNX Runtime

ONNX Runtime | Homehttps://onnxruntime.ai/从官网介绍看,其也是提供训练用API调用的,可以看到微软也是有一些想和tensorflow,pytorch在深度学习领域分一杯羹的想法的,大公司毕竟是有强有力的资本的,何愁招兵买马呢。

此时cuda、cuddn、python版本同前面博客时的配置

主要过程如下:

这边还是按照官方配置,去推断一张图片,pip安装下如下库

pip install onnxruntime-gpu

博主这边还是拿tensorflow来示例

pip install tf2onnx

代码如下:

import tensorflow as tf
import numpy as np
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications import resnet50from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions
from PIL import Image
import time
import tf2onnx
import onnxruntime as rt
import cv2
import timephysical_devices = tf.config.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)#加载预训练模型
model = resnet50.ResNet50(weights='imagenet')spec = (tf.TensorSpec((None, 224, 224, 3), tf.float32, name="input"),)
output_path = "test.onnx"model_proto, _ = tf2onnx.convert.from_keras(model, input_signature=spec, opset=13, output_path=output_path)
output_names = [n.name for n in model_proto.graph.output]providers = ['CPUExecutionProvider']
m = rt.InferenceSession(output_path, providers=providers)img = cv2.imread('2008_002682.jpg')
img = cv2.resize(img,(224,224))
img_np = np.array(img, dtype=np.float32) / 255.img_np = np.expand_dims(img_np, axis=0)
print(img_np.shape)t_model = time.perf_counter()
onnx_pred = m.run(output_names, {"input": img_np})
print(f'do inference cost:{time.perf_counter() - t_model:.8f}s')
print('ONNX Predicted:', decode_predictions(onnx_pred[0], top=3)[0])

测试图片,还是前面常用的小猫图片

部分执行结果如下:

2022-05-01 22:41:51.165567: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:1144] Optimization results for grappler item: graph_to_optimizeconstant_folding: Graph size after: 556 nodes (-320), 891 edges (-320), time = 253.008ms.function_optimizer: function_optimizer did nothing. time = 0.565ms.constant_folding: Graph size after: 556 nodes (0), 891 edges (0), time = 111.51ms.function_optimizer: function_optimizer did nothing. time = 0.847ms.(1, 224, 224, 3)
do inference cost:0.01735498s
ONNX Predicted: [('n01930112', 'nematode', 0.13559905), ('n03041632', 'cleaver', 0.04139605), ('n03838899', 'oboe', 0.03445778)]Process finished with exit code 0

预测结果同OpenVINO下的结果,耗时更少。暂时不再深入了解了,官网上也提供了一些方面资料,后面需要时再用吧。

ONNX Runtime使用简单介绍相关推荐

  1. ONNX Runtime介绍

          ONNX Runtime:由微软推出,用于优化和加速机器学习推理和训练,适用于ONNX模型,是一个跨平台推理和训练机器学习加速器(ONNX Runtime is a cross-platf ...

  2. Lombok的注解简单介绍

    Lombok的注解简单介绍 背景   我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...

  3. 常用服务器软件的简单介绍

    本文主要对常用的服务器软件的概念.区别以及适用场景做简单介绍! 一.通常来讲,只要是运行在服务器之上的,绑定了IP地址的,并且用一个端口来监听用户请求的,进而提供服务的软件,我们都可以称之为[服务器软 ...

  4. WPF真入门教程23--MVVM简单介绍

    在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界 ...

  5. vs MD /MDD /ML /MT /MTD的简单介绍

    1.MD /MDD /ML /MT /MTD的简单介绍 在编译ATL工程后,生成的dll在本电脑上能用,在别人的电脑上不能用.通过Depends工具分析一下,原来是编译选项没有选对,别的电脑上没有我生 ...

  6. 自动化工具之Appium工具简单介绍

    背景 自动化,性能测试,接口测试,开发平台等工作,到底测试的价值在哪里,其实价值来源不断充实与为大众服务,今天简单介绍ui小工具appium攻击. 简单介绍 Appium 是一个自动化测试开源工具,支 ...

  7. Optimum + ONNX Runtime: 更容易、更快地训练你的 Hugging Face 模型

    介绍 基于语言.视觉和语音的 Transformer 模型越来越大,以支持终端用户复杂的多模态用例.增加模型大小直接影响训练这些模型所需的资源,并随着模型大小的增加而扩展它们.Hugging Face ...

  8. Python的简单介绍(二)

    接Python的简单介绍(一): 九.条件语句 if 判断条件: 执行语句-- else: 执行语句-- if 判断条件1: 执行语句1-- elif 判断条件2: 执行语句2-- elif 判断条件 ...

  9. IDC数据中心相关业务简单介绍

    IDC数据中心相关业务简单介绍 IaaS.PaaS.SaaS.BaaS.FaaS,这些名词后面都带着aas三个字母,aas 是 As-a-Service,即为服务的意思.我们看下面这个架构图: Iaa ...

最新文章

  1. Appium 服务器参数
  2. 每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!
  3. BZOJ 2763: [JLOI2011]飞行路线 spfa dp
  4. 什么是flowable
  5. 【电脑帮助】解决Wind10系统每次运行软件时都要出现提示框的问题
  6. 06.Android之消息机制问题
  7. Qt的QPushButton设置图标,设置一组互斥键
  8. 在fedora15上编译安装vlc1.1.13
  9. VMware Pro 虚拟机+Unlocker v3.0补丁+ MacOs 10.14.4最新版苹果系统懒人版镜像 一键部署 【全部免积分】
  10. 膜片联轴器市场现状及未来发展趋势
  11. 论文速递-ANALYSIS OF VISUAL REASONING ON ONE-STAGE OBJECT DETECTION
  12. linux没有cpufreq目录,【原创】Linux cpufreq framework
  13. Android常用颜色对照表
  14. Beautiful Songs
  15. Image segmentation of nasopharyngeal carcinoma using 3D CNN with long-range skip connection and mult
  16. Android 11.0 12.0遥控器点击输入框 弹不出输入法
  17. 一篇很完整的元器件选型指南
  18. 什么?还在用delete删除数据《死磕MySQL系列 九》
  19. select设置选中option
  20. 理解敏捷的价值观和原则

热门文章

  1. office 2003 正版验证序列号
  2. 免费指纹浏览器怎么样,免费指纹浏览器版可以修改浏览器指纹吗
  3. 【C#】【xUnit】【Moq】.NET单元测试Mock框架Moq初探!
  4. 梁海云:优秀志愿者风采展示(2022年度)
  5. 基于Druid或HikariDataSource动态数据拉取
  6. perl数组硬引用_带有哈希引用的Perl数组引用(Perl Array Reference with hash reference)
  7. 初学者对finally的认知
  8. 心若琉璃菩提色ehgh 淡若清风几回眸
  9. (一)win10环境下使用自带linux系统进行虚拟机创建
  10. 如何做好供应商绩效管理?