TVM Compiler中文教程:TVM部署SSD模型

一时失言乱红尘 2022-01-23 07:41 408阅读 0赞

部署SSD模型

我们使用GluonCV预训练SSD模型和转换成Relay IR中间表示

  1. import tvm
  2. from matplotlib import pyplot as plt
  3. from tvm.relay.testing.config import ctx_list
  4. from tvm import relay
  5. from tvm.contrib import graph_runtime
  6. from tvm.contrib.download import download_testdata
  7. from gluoncv import model_zoo, data, utils
  8. supported_model = [
  9. 'ssd_512_resnet50_v1_voc',
  10. 'ssd_512_resnet50_v1_coco',
  11. 'ssd_512_resnet101_v2_voc',
  12. 'ssd_512_mobilenet1.0_voc',
  13. 'ssd_512_mobilenet1.0_coco',
  14. ]
  15. model_name = supported_model[0]
  16. dshape = (1, 3, 512, 512)
  17. target_list = ctx_list()
  18. # 下载和预处理demo图像
  19. im_fname = download_testdata('https://github.com/dmlc/web-data/blob/master/' +
  20. 'gluoncv/detection/street_small.jpg?raw=true',
  21. 'street_small.jpg', module='data')
  22. x, img = data.transforms.presets.ssd.load_test(im_fname, short=512)
  23. #转换和编译模型for CPU
  24. block = model_zoo.get_model(model_name, pretrained=True)
  25. def build(target):
  26. net, params = relay.frontend.from_mxnet(block,{ "data": dshape})
  27. with relay.build_config(opt_level=3):
  28. graph, lib, params = relay.build(net,target,params=params)
  29. return graph, lib, params
  30. #创建TVM运行时和推理
  31. def run(graph, lib, params, ctx):
  32. #创建TVM运行时
  33. m = graph_runtime.create(graph, lib, ctx)
  34. tvm_input = tvm.nd.array(x.asnumpy(), ctx=ctx)
  35. m.set_input('data', tvm_input)
  36. m.set_input(**params)
  37. #执行
  38. m.run()
  39. #获取输出
  40. class_IDs, scores, bounding_boxs = m.get_output(0), m.get_output(1), m.get_output(2)
  41. return class_IDs, scores, bounding_boxs
  42. for target, ctx in target_list:
  43. graph, lib, params = build(target)
  44. class_IDs, scores, bounding_boxs = run(graph, lib, params, ctx)
  45. #显示结果
  46. ax = utils.viz.plot_bbox(img, bounding_boxs,asnumpy()[0], scores.asnumpy()[0],class_IDs.asnumpy()[0],class_names=block.classes)
  47. plt.show

发表评论

表情:
评论列表 (有 0 条评论,408人围观)

还没有评论,来说两句吧...

相关阅读