首页 > 其他分享 >demo:tvm优化resnet50 llvm后端cpu上推理

demo:tvm优化resnet50 llvm后端cpu上推理

时间:2024-09-13 17:38:11浏览次数:1  
标签:llvm resnet50 img demo tvm onnx input model data

这是一个完整的例子。

使用预训练的resnet50模型,经过tvm优化调整,target=llvm,在cpu上进行推理。最后打印结果是 1 这个索引代表 gold fish

 

import onnx from tvm.contrib.download import download_testdata from PIL import Image import numpy as np import tvm.relay as relay import tvm from tvm.contrib import graph_executor
model_url = (     # "https://github.com/onnx/models/blob/main/validated/vision/classification/resnet/model/resnet50-v2-7.onnx" )
# model_path = download_testdata(model_url, "resnet50-v2-7.onnx", module="onnx") model_path = "/home/po/.tvm_test_data/onnx/resnet50-v2-7.onnx" onnx_model = onnx.load(model_path)
# Seed numpy's RNG to get consistent results np.random.seed(0)
# img_url = "https://s3.amazonaws.com/model-server/inputs/kitten.jpg" # img_path = download_testdata(img_url, "imagenet_cat.png", module="data") img_path = "/home/po/.tvm_test_data/data/gold-fish.jpg"
# Resize it to 224x224 resized_image = Image.open(img_path).resize((224, 224)) img_data = np.asarray(resized_image).astype("float32")
# Our input image is in HWC layout while ONNX expects CHW input, so convert the array img_data = np.transpose(img_data, (2, 0, 1))
# Normalize according to the ImageNet input specification imagenet_mean = np.array([0.485, 0.456, 0.406]).reshape((3, 1, 1)) imagenet_stddev = np.array([0.229, 0.224, 0.225]).reshape((3, 1, 1)) norm_img_data = (img_data / 255 - imagenet_mean) / imagenet_stddev
# Add the batch dimension, as we are expecting 4-dimensional input: NCHW. img_data = np.expand_dims(norm_img_data, axis=0)
# The input name may vary across model types. You can use a tool # like Netron to check input names input_name = "data" shape_dict = {input_name: img_data.shape} target = "llvm"
mod, params = relay.frontend.from_onnx(onnx_model, shape_dict)
with tvm.transform.PassContext(opt_level=3):     lib = relay.build(mod, target=target, params=params)
dev = tvm.device(str(target), 0) module = graph_executor.GraphModule(lib["default"](dev))
dtype = "float32" module.set_input(input_name, img_data) module.run() output_shape = (1, 1000) tvm_output = module.get_output(0, tvm.nd.empty(output_shape)).numpy() print("predict imgnet index=", np.argmax(tvm_output))    

标签:llvm,resnet50,img,demo,tvm,onnx,input,model,data
From: https://www.cnblogs.com/qmjc/p/18412599

相关文章

  • UniGUI的布局(结合官方自带DEMO)要点记录
    UniGUI的页面布局还是比较方便的,基本什么的排版都能搞好。但UniGUI的资料实在是太少,只能看到一些零星的资料,结合UniGUI官方自带的DEMO,本人将布局有关要点整理了一下,方便查阅,也供各位爱好者参考,不对之处,敬请指正。一、布局方式传统Delphi程序的布局方法通过将属性Align添加到......
  • 【GIS开发小课堂】写一个高德地图巡航功能的小DEMO
    介绍此项目使用vite为基础架构,内部实现均以typescript开发,可替换为自己的业务逻辑,并迁移到react,vue,umi等其他框架。通过调用高德地图的API和threejs的开发,实现了一个小鸭子(可替换为自己的模型)沿着规划路线行走,并使镜头跟随小鸭子前进的功能。该功能主要常见于外卖平台......
  • arraybag1arrayBagDemo1
    /**  AtestoftheconstructorsandthemethodsaddandtoArray,  asdefinedinthefirstdraftoftheclassArrayBag.  @authorFrankM.Carrano  @version4.0*/publicclassArrayBagDemo1{  publicstaticvoidmain(String[]args)  { ......
  • 【SpringBoot Demo】MySQL + JPA + Hibernate + Springboot + Maven Demo
    主要包含:springboot+jpa+hibernate+mysql+lombok(两年前写过一个,现在重新记录一个)1. 目录结构: 2.pom 文件1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.or......
  • 看demo学算法之 自编码器
    大家好,这里是小琳AI课堂!今天我们来聊聊自编码器。......
  • 拉取ros2_control_demos存储库
    目录克隆存储库方法1:使用gitclone和rosdep安装依赖方法2:使用vcs工具管理多个存储库区别总结rosdep和APT的关系网络问题安装依赖克隆存储库方法1:使用gitclone和rosdep安装依赖下载存储库:mkdir-p~/ros2_ws/srccd~/ros2_ws/srcgitclo......
  • 8G 显存玩转书生大模型 Demo
    8G显存玩转书生大模型Demo首先第一步依旧是创建我们的开发机,选择上我们需要选择10%的开发机,镜像选择为Cuda-12.2。在输入开发机名称后,点击创建开发机。这里就不放创建的流程图了环境配置#创建环境condacreate-ndemopython=3.10-y#激活环境condaactivate......
  • Qt精品级项目——手撕信号槽机制的拳皇摇杆demo
    Qt精品级项目——手撕信号槽机制的拳皇摇杆demo1.前言&资源大家好,我是程序员Akgry。几天没见,阿克的Qt能力又是突飞猛进,阿克现在每天从睁眼学到闭眼,没了杂七杂八的东西掣肘,学起东西来非常舒适,虽然假期偷偷内卷很反人类,但是阿克今年就要参加秋招了,技术上的东西又岂敢怠慢。......
  • json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava
    json字符串转义格式化后再转换处理demoStringEscapeUtils.unescapeJava报错关键字:illegalidentifierExpectedBEGIN_OBJECTbutExpectednameatpackagecom.example.core.mydemo;importcom.alibaba.fastjson.JSON;importcom.fasterxml.jackson.core.JsonProcessingE......
  • lazarus多窗口(delphi的MDI)的demo
    lazarus不支持delphi的mdi模式,经测试可以用ATTabs控件来实现这个功能比较简单。1、安装ATTabs控件(https://github.com/Alexey-T/ATFlatControls/)2、mainformFormCreate的代码:procedureTMainForm.FormCreate(Sender:TObject);begin//默认的是深色,如果需要,可按以下方法设置......