Windows 10 下 torch模型转换为 OpenVINO需要的IR文件

Posted ʚVVcatɞ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 10 下 torch模型转换为 OpenVINO需要的IR文件相关的知识,希望对你有一定的参考价值。

OpenVINO模型优化器参考:https://docs.openvinotoolkit.org/2021.2/openvino_docs_MO_DG_Deep_Learning_Model_Optimizer_DevGuide.html

配置环境

  • Windows 10
  • Anaconda 2.0.4
  • Pycharm 2021.1
  • OpenVINO 工具包 2020.2
  • Python 环境 3.6.13
    • torch 1.9.0
    • onnx 1.10.1

准备好torch模型

自定义神经网络模型pth转ONNX代码

import torch
from torch import nn

# 搭建神经网络
class VVcatModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.model = nn.Sequential(
            nn.Conv2d(3, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Flatten(),
            nn.Linear(64 * 4 * 4, 64),
            nn.Linear(64, 10)
        )

    def forward(self, x):
        x = self.model(x)
        return x

model = torch.load("./vvcat_model.pth", map_location=torch.device('cuda'))  # 加载模型
model.eval()
model.cuda()
dummy_input = torch.randn(1, 3, 32, 32, device='cuda')  # 注意指定输入尺寸
torch.onnx.export(model, dummy_input, "vvcat_model.onnx",  output_names={"output"}, verbose=True)


通过执行代码生成了 .onnx 文件。

转IR格式

使用 OpenVINO 工具包提供的 mo_onnx.py文件,对模型进行转换。

管理员模式打开Anaconda,启动虚拟环境的终端,cd进openVINO转换工具目录,执行转换代码:

cd C:\\Program Files (x86)\\Intel\\openvino_2021.2.185\\deployment_tools\\model_optimizer
python mo_onnx.py --input_model M:\\python\\深度学习\\OpenVINO\\15.模型转换器\\Main\\vvcat_model.onnx

转换成功后,在转换工具 model_optimizer 目录下生成了bin和xml文件,然后就可以用 OpenVINO部署了。

  • .xml - 描述网络拓扑
  • .bin - 包含权重和偏差二进制数据。
(pytorch) C:\\Program Files (x86)\\Intel\\openvino_2021.2.185\\deployment_tools\\model_optimizer>python mo_onnx.py --input_model M:\\python\\深度学习\\OpenVINO\\15.模型转换器\\Main\\vvcat_model.onnx
Model Optimizer arguments:
Common parameters:
        - Path to the Input Model:      M:\\python\\深度学习\\OpenVINO\\15.模型转换器\\Main\\vvcat_model.onnx
        - Path for generated IR:        C:\\Program Files (x86)\\Intel\\openvino_2021.2.185\\deployment_tools\\model_optimizer\\.
        - IR output name:       vvcat_model
        - Log level:    ERROR
        - Batch:        Not specified, inherited from the model
        - Input layers:         Not specified, inherited from the model
        - Output layers:        Not specified, inherited from the model
        - Input shapes:         Not specified, inherited from the model
        - Mean values:  Not specified
        - Scale values:         Not specified
        - Scale factor:         Not specified
        - Precision of IR:      FP32
        - Enable fusing:        True
        - Enable grouped convolutions fusing:   True
        - Move mean values to preprocess section:       None
        - Reverse input channels:       False
ONNX specific parameters:
Model Optimizer version:        2021.2.0-1877-176bdf51370-releases/2021/2

[ SUCCESS ] Generated IR version 10 model.
[ SUCCESS ] XML file: C:\\Program Files (x86)\\Intel\\openvino_2021.2.185\\deployment_tools\\model_optimizer\\.\\vvcat_model.xml
[ SUCCESS ] BIN file: C:\\Program Files (x86)\\Intel\\openvino_2021.2.185\\deployment_tools\\model_optimizer\\.\\vvcat_model.bin
[ SUCCESS ] Total execution time: 2.72 seconds.
It's been a while, check for a new version of Intel(R) Distribution of OpenVINO(TM) toolkit here https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/choose-download.html?cid=other&source=Prod&campid=ww_2021_bu_IOTG&content=upg_pro&medium=organic_uid_agjj or on the GitHub*

以下为生成的为我们需要的文件。

踩坑一:

没有安装 onnx、onnxruntime库导致的错误

[ ERROR ]
Detected not satisfied dependencies:
        onnx: not installed, required: >= 1.1.2

Please install required versions of components or use install_prerequisites script
C:\\Program Files (x86)\\Intel\\openvino_2021.2.185\\deployment_tools\\model_optimizer\\install_prerequisites\\install_prerequisites_onnx.bat
Note that install_prerequisites scripts may install additional components.
[ ERROR ]  check_requirements exit with return code 1

安装 onnx、onnxruntime库即可解决

pip install onnx
pip install onnxruntime

踩坑二:

因为权限问题,导致无法转换IR文件。

解决方法:管理员模式打开Anaconda,启动虚拟环境的终端,cd进openVINO转换工具目录,再执行转换代码

以上是关于Windows 10 下 torch模型转换为 OpenVINO需要的IR文件的主要内容,如果未能解决你的问题,请参考以下文章

将火炬模型(torch.save)转换为可以用基本 Python 处理的矩阵公式

将torch t7模型转换为pytorch

YOLOv5的pytorch模型文件转换为ONNX文件

Windows Socket I/O模型

模型推理ncnn 模型转换及量化流程

如何正确地将 cv::Mat 转换为具有完美匹配值的 torch::Tensor?