ONNXRuntime模型推理

直接贴code

  • 加载,推理
import onnxruntime as ort
import torch
import time

import cv2
import numpy as np


def time_sync():
    if torch.cuda.is_available():
        torch.cuda.synchronize()
    return time.time()

ort_session = ort.InferenceSession('./semseg.onnx')
onnx_input_name = ort_session.get_inputs()[0].name
onnx_outputs_names = ort_session.get_outputs()
output_names = []
for o in onnx_outputs_names:
    output_names.append(o.name)

img = cv2.imread('./demo.png')
img = cv2.resize(img, (2048,1024)) # height = 1024, width = 2048
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = np.transpose(img, (2,0,1)) #HWC ->CHW
input_blob = np.expand_dims(img,axis=0).astype(np.float32)

total_time = 0;
for i in range(0, 10): #推理10次,统计平均时间
    start_t = time_sync()
    onnx_result = ort_session.run(output_names, input_feed = {onnx_input_name:input_blob})
    end_t = time_sync()
    total_time += ((end_t - start_t) * 1E3)
    print(f'{i+1} Speed: %.1fms ' % ((end_t - start_t) * 1E3))
    
print(f'Avg Speed: %.1fms ' % (total_time/10.0))


      
  • 输出保存semseg图
//draw semseg mask image
img2 = cv2.imread('./demo.png')
img2 = cv2.resize(img2, (2048,1024)) # you can also use other way to create a temp image

mCityscapesColors = [
    (128, 64,128), (244, 35,232), ( 70, 70, 70), (102,102,156), 
    (190,153,153), (153,153,153), (250,170, 30), (220,220,  0), 
    (107,142, 35), (152,251,152), ( 70,130,180), (220, 20, 60), 
    (255,  0,  0), (  0,  0,142), (  0,  0, 70), (  0, 60,100), 
    (  0, 80,100), (  0,  0,230), (119, 11, 32)];

for h in range(0, img2.shape[0]):
    for w in range(0, img2.shape[1]):
        img2[h,w] = mCityscapesColors[onnx_result[0][0][0][h][w]]
cv2.imwrite('./mask_semseg.png', img2) 
  • 统计语义分割的类别
a = onnx_result[0][0][0]
list_b = list(np.array(a).flatten())
print set(list_b)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ONNXRuntime是微软推出的一款优秀的推理框架,它支持多种后端包括CPU、GPU、TensorRT和DML等,可以方便地运行ONNX模型。用户可以使用C、Python、Java等多种编程语言进行编写,并且提供了简单易用的API,使得使用者可以方便地进行模型推理。如果你想使用Python进行ONNXRuntime模型推理,可以按照以下步骤进行操作: 1. 首先,你需要安装ONNXRuntime。可以通过pip命令来安装,例如在命令行中执行以下命令: ``` pip install onnxruntime ``` 2. 安装完成后,你可以导入ONNXRuntime库并加载你的ONNX模型。例如,在Python中执行以下代码: ```python import onnxruntime # 加载ONNX模型 model = onnxruntime.InferenceSession('your_model.onnx') ``` 3. 接下来,你可以准备输入数据并进行推理。例如,如果你的模型接受一个输入张量`input_data`,你可以执行以下代码进行推理: ```python import numpy as np # 准备输入数据 input_data = np.random.randn(1, 3, 224, 224).astype(np.float32) # 进行推理 output = model.run(None, {'input': input_data}) ``` 这里的`'input'`是你模型的输入名称,你需要根据你的模型进行相应的修改。 4. 最后,你可以获取推理结果并进行后续处理。例如,如果你的模型输出一个张量`output`,你可以执行以下代码获取结果: ```python # 获取推理结果 result = output[0] # 进行后续处理 # ... ``` 这里的`output[0]`表示获取第一个输出张量,你可以根据你的模型进行相应的修改。 通过以上步骤,你可以使用ONNXRuntime进行ONNX模型推理。希望对你有帮助![1][2][3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值