博客
关于我
pytorch argmax_从Pytorch 的ONNX到OpenVINO中IR中间层
阅读量:386 次
发布时间:2019-03-05

本文共 2308 字,大约阅读时间需要 7 分钟。

Pytorch ONNX格式支持与OpenVINO模型优化

Pytorch ONNX到OpenVINO IR转换实践指南

在深度学习模型部署中,模型格式的通用性和跨框架兼容性一直是核心关注点。ONNX(Open Neural Network Exchange Format)作为一种轻量级的深度学习模型表示格式,凭借其灵活性和广泛的支持,成为AI开发者和模型部署者的重要选择。当前主流的深度学习框架均已支持ONNX格式,包括PyTorch、Caffe2、MXNet、Cognitive Toolkit等。OpenVINO作为一款专注于模型优化和加速的工具套件,其模型优化器支持将ONNX格式的模型转换为IR(Intermediate Representation)中间层文件。通过这种转换,开发者能够在OpenVINO环境下加速模型推理,实现高效的模型部署。

本文将详细介绍如何将PyTorch模型转换为ONNX格式,并将其转换为OpenVINO支持的IR格式。以ResNet-18模型为例,介绍完整的转换流程及OpenVINO SDK调用实现。

ResNet-18模型的输入格式要求如下:输入图像大小为224x224,色彩空间为RGB,预处理标准化参数为:mean = [0.485, 0.456, 0.406]std = [0.229, 0.224, 0.225]

Pytorch模型转换为ONNX的具体实现步骤如下:

  • 下载并导入ResNet-18模型确保PyTorch环境已安装,执行以下代码可下载与使用ResNet-18预训练模型:
  • import torchvision.models as modelsresnet18 = models.resnet18(pretrained=True)
    1. 将模型转换为ONNX格式通过PyTorch的torch.onnx.export接口将模型转换为ONNX格式。以下是转换代码:
    2. model = torchvision.models.resnet18(pretrained=True).eval()dummy_input = torch.randn((1, 3, 224, 224))torch.onnx.export(model, dummy_input, "resnet18.onnx")
      1. 将ONNX模型转换为OpenVINO IR格式下载并安装OpenVINO开发工具套件,执行以下命令将ONNX模型转换为IR格式:
      2. python model_optimizer/mo_onnx.py --input_model D:\python\pytorch_tutorial\resnet18.onnx

        OpenVINO IR模型的调用实现

        在OpenVINO环境下完成模型加速推理的具体实现步骤如下:

      3. 导入OpenVINO Inference Engine
      4. from openvino.inference_engine import IECore
        1. 初始化Inference Engine
        2. ie = IECore()
          1. 加载IR模型
          2. net = ie.read_network(model="resnet18.xml", weights="resnet18.bin")
            1. 准备输入数据
            2. input_blob = next(iter(net.inputs()))output_blob = next(iter(net.outputs()))
              1. 读取并预处理输入图像
              2. n, c, h, w = net.inputs[input_blob].shapeimages = np.ndarray(shape=(n, c, h, w))src = cv2.imread("D:/images/messi.jpg")image = cv2.resize(src, (w, h))image = np.float32(image) / 255.0image[:, :, :] -= (np.float32(0.485), np.float32(0.456), np.float32(0.406))image[:, :, :] /= (np.float32(0.229), np.float32(0.224), np.float32(0.225))image = image.transpose((2, 0, 1))
                1. 加速推理
                2. exec_net = ie.load_network(network=net, device_name="CPU")res = exec_net.infer(inputs={input_blob: [image]})
                  1. 解析输出结果
                  2. label_index = np.argmax(res, 1)label_txt = labels[label_index[0]]cv2.putText(src, label_txt, (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (255, 0, 255), 2, 8)cv2.imshow("ResNet18-from PyTorch image classification", src)cv2.waitKey(0)cv2.destroyAllWindows()

                    本文详细介绍了PyTorch模型转换为ONNX格式的实现方法,并展示了如何将其转换为OpenVINO IR模型,完成了模型加速推理的实现。通过本文的实践指南,开发者能够快速实现PyTorch模型在OpenVINO环境下的高效部署。

    转载地址:http://ujjg.baihongyu.com/

    你可能感兴趣的文章
    Node+Express连接mysql实现增删改查
    查看>>
    node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
    查看>>
    Node-RED中Button按钮组件和TextInput文字输入组件的使用
    查看>>
    Node-RED中Switch开关和Dropdown选择组件的使用
    查看>>
    Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
    查看>>
    Node-RED中使用JSON数据建立web网站
    查看>>
    Node-RED中使用json节点解析JSON数据
    查看>>
    Node-RED中使用node-random节点来实现随机数在折线图中显示
    查看>>
    Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
    查看>>
    Node-RED中使用node-red-contrib-image-output节点实现图片预览
    查看>>
    Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
    查看>>
    Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
    查看>>
    Node-RED中使用range范围节点实现从一个范围对应至另一个范围
    查看>>
    Node-RED中实现HTML表单提交和获取提交的内容
    查看>>
    Node-RED中将CSV数据写入txt文件并从文件中读取解析数据
    查看>>
    Node-RED中建立TCP服务端和客户端
    查看>>
    Node-RED中建立Websocket客户端连接
    查看>>
    Node-RED中建立静态网页和动态网页内容
    查看>>
    Node-RED中解析高德地图天气api的json数据显示天气仪表盘
    查看>>
    Node-RED中连接Mysql数据库并实现增删改查的操作
    查看>>