yolov5s_infer.py 2.17 KB
Newer Older
zhangqha's avatar
zhangqha committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import onnx
import tvm
from PIL import Image
import cv2
from tvm import relay
import numpy as np
from yolov5s_pred_utils import non_max_suppression

# onnx_model = onnx.load('model-zoo/googlenet.onnx')
onnx_model = onnx.load('./yolov5s.onnx')
img = Image.open('./cow.jpg').resize((640,640))
img = np.array(img).transpose((2, 0, 1)).astype('float32')
img = img/255.0
x = img[np.newaxis, :]

#img_data = np.random.rand(1,3,224,224).astype("float32")/255
#target = "rocm"
# target = "llvm"
dev = tvm.rocm(0)
# dev = tvm.cpu(0)
#target = "rocm -libs=miopen"
target = "rocm -libs=miopen,rocblas"
input_name = onnx_model.graph.input[0].name
print(input_name)
shape_dict = {input_name:x.shape}
print('shape_dict', shape_dict)

mod, params = relay.frontend.from_onnx(onnx_model, shape_dict, dtype='float32')
# with relay.build_config(opt_level=2):
    # graph, lib, params = relay.build_module.build(mod, target=target, params=params)
dtype = 'float32'
from tvm.contrib import graph_runtime
from tvm.contrib import graph_executor

with tvm.transform.PassContext(opt_level=1):
	lib = relay.build(mod, target=target, params=params)
	# executor = relay.build_module.create_executor("graph", mod, dev, target, params).evaluate()
# output = executor(tvm.nd.array(x.astype(dtype)))

m = graph_executor.GraphModule(lib["default"](dev))
m.set_input(input_name,tvm.nd.array(x.astype(dtype)))
m.run()


'''
print('output model files')
libpath = 'out/googlenet.so'
lib.export_library(libpath)

graph_json_path = 'out/googlenet.json'
with open(graph_json_path, 'w')as f:
	f.write(graph)

params_path = 'out/googlenet.params'
with open(params_path, 'wb')as f:
	f.write(relay.save_param_dict(params))


load_json = open(graph_json_path).read()
load_lib = tvm.runtime.load_module(libpath)
load_params = bytearray(open(params_path, 'rb').read())
ctx = tvm.rocm()
module = graph_runtime.create(load_json,load_lib,ctx)
module.load_params(load_params)
module.run()
'''
# output = module.get_output(0).asnumpy()
output = m.get_output(0).asnumpy()
pred = non_max_suppression(output, conf_thres=0.1, iou_thres=0.50, classes=None, agnostic=False, multi_label=False, max_det=1000)
print(pred)
print(np.max(output,axis=1))
print(np.argmax(output,axis=1))