windows10下torch模型转换为openvino需要的ir文件(代码片段)

ʚVVcatɞ ʚVVcatɞ     2022-12-18     659

关键词:

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转换工具目录,再执行转换代码

将torch t7模型转换为pytorch

】将torcht7模型转换为pytorch【英文标题】:Converttorcht7modeltopytorch【发布时间】:2019-02-0118:43:41【问题描述】:我有一个torcht7模型,我想将其转换为pytorch模型。我用了这个方法:model=load_lua(\'xxx.t7\',unknown_classes=True)但是,我收到... 查看详情

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

】将火炬模型(torch.save)转换为可以用基本Python处理的矩阵公式【英文标题】:Converttorchmodel(torch.save)intomatricialformulasthatcanbehandledwithbasicPython【发布时间】:2021-07-2505:46:23【问题描述】:请您告诉我将Torch模型(torch.save)转换为可... 查看详情

cnn模型结构每行注释非常细致,可以解决异或问题

importtorchdevice='cuda'iftorch.cuda.is_available()else'cpu'#根据是否有可用的GPU来决定使用哪种设备torch.manual_seed(777)#设置随机种子ifdevice=='cuda':#如果设备是GPUtorch.cuda.manual_seed_all(777)#设置GPU的随机种子X=torch.Floa... 查看详情

yolov5的pytorch模型文件转换为onnx文件(代码片段)

...测试运行导出ONNX格式文件ONNX转为为IR中间格式环境:Windows10Anaconda2.0.4OpenVINO工具包2021.2Python3.6.13torch1.9.0onnx1.10.1YOLOv5YOLOv5下载与测试运行YOLOv5是第二个非官方的YOLO对象检测版本,也是第一个Pytorch实现的YOLO对象检测版本... 查看详情

windows10下cuda11.1cudnn8.0tensorflow-gpu和torch安装教程(代码片段)

1.如何彻底的卸载anaconda(包括配置文件)安装Anaconda-Cleanpackage打开AnacondaPrompt,输入如下命令:condainstallanaconda-clean输入如下命令卸载anaconda-clean--yes直接运行安装目录下的Uninstall-Anaconda3.exe即可。2.windows10 查看详情

如何在 Windows 10 上安装 Torch?

】如何在Windows10上安装Torch?【英文标题】:HowtoinstallTorchonWindows10?【发布时间】:2019-12-0601:05:19【问题描述】:我尝试使用thisinstruction在Windows10上安装Torch。我按照大多数步骤没有任何问题,但在这里偶然发现:Generateuser.luafilei... 查看详情

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

...2020-12-1217:26:25【问题描述】:我正在尝试在C++中的jit跟踪模型上运行推理,目前我在Python中获得的输出与我在C++中获得的输出不同。最初我认为这是由jit模型本身引 查看详情

模型转换pytorch转onnx入门(代码片段)

前言本文主要介绍如何将PyTorch模型转换为ONNX模型,为后面的模型部署做准备。转换后的xxx.onnx模型,进行加载和测试。最后介绍使用Netron,可视化ONNX模型,看一下网络结构;查看使用了那些算子,以便开... 查看详情

如何将 Torch 张量/存储转换为 lua 表?

】如何将Torch张量/存储转换为lua表?【英文标题】:HowtoconverttorchTensor/Storagetoaluatable?【发布时间】:2014-10-0414:06:55【问题描述】:如果我有张量:t1=torch.Tensor(2,2)有没有办法把这些数据作为Lua表来获取?【问题讨论】:【参考方... 查看详情

在 Windows 10 上使用 Torch 运行 Lua(管理员权限有限)

】在Windows10上使用Torch运行Lua(管理员权限有限)【英文标题】:GetLuarunningwithTorchonWindows10(withlimitedadminrights)【发布时间】:2018-06-2422:10:30【问题描述】:设置深度学习框架[Lua,Torch]:我需要设置Lua与Torch一起运行在Windows10和ZeroBr... 查看详情

来自 PyTorch 模型的 ONNX 对象,无需导出

】来自PyTorch模型的ONNX对象,无需导出【英文标题】:ONNXobjectfromPyTorchmodelwithoutexporting【发布时间】:2021-09-0202:10:29【问题描述】:是否可以在不导出的情况下将PyTorch模型转换为ONNX,并在脚本中直接将其用作ONNX对象。【问题讨... 查看详情

安装win10过程中提示windows检测到efi系统分区格式化为ntfs?

进行不下去了,我已经按照网络上的方法把efi分区格式化成fat32了但是继续安装还是提示这个,磁盘格式是gpt你这个要检查下你磁盘格式是否为gpt,win10默认是需要gpt分区格式的。如果你硬盘是mbr的话那么就无法安装win10,需要将... 查看详情

Torch 中的 LSTM 模型不学习

】Torch中的LSTM模型不学习【英文标题】:LSTMModelinTorchnotLearning【发布时间】:2016-02-2519:24:04【问题描述】:我有一个带有一个输入和一个输出的玩具数据集,输入是随机的0或1,输出等于之前3个样本的输入Input,Output0,11,10,01,00,10,0... 查看详情

windows10下yolov8tensorrt模型加速部署实战

Windows10下yolov8tensorrt模型加速部署【实战】TensorRT-Alpha基于tensorrt+cudac++实现模型end2end的gpu加速,支持win10、linux,在2023年已经更新模型:YOLOv8,YOLOv7,YOLOv6,YOLOv5,YOLOv4,YOLOv3,YOLOX,YOLOR,pphumanseg,u2net,EfficientDet。关注仓库《TensorRT-Alpha》:... 查看详情

pytorch中通过torch.save保存模型和torch.load加载模型介绍(代码片段)

   PyTorch中一般约定是使用.pt或.pth文件扩展名保存模型,通过torch.save保存模型,通过torch.load加载模型。torch.save和torch.load函数的实现在torch/serialization.py文件中。   这里以LeNet5模型为例进行说明。LeNet5的介绍过程参考&... 查看详情

在带有 VS2013 x64 或 VS2017 x64 的 Windows 10 上安装 LuaJIT LuaRocks Torch7(在 Torch7 失败)

】在带有VS2013x64或VS2017x64的Windows10上安装LuaJITLuaRocksTorch7(在Torch7失败)【英文标题】:InstallingLuaJITLuaRocksTorch7onWindows10withVS2013x64orVS2017x64(failatTorch7)【发布时间】:2019-12-0200:12:45【问题描述】:过去3天,我一直在努力在我的新Wi... 查看详情

如何将张量列表转换为 Torch::Tensor?

】如何将张量列表转换为Torch::Tensor?【英文标题】:Howtoconvertalistoftensorsintoatorch::Tensor?【发布时间】:2020-12-1205:00:07【问题描述】:我正在尝试将以下Python代码转换为其等效的libtorch:tfm=np.float32([[A[0,0],A[1,0],A[2,0]],[A[0,1],A[1,1],A[2... 查看详情

关于convert caffe model to torch的一些问题

...2018-02-2612:28:39【问题描述】:我使用torch-caffe-binding将caffe模型转换为torch。我想最后删除损失层并添加其他torch层,我可以删除.prototxt文件中的层并“训练”模型以获取.caffemodel文件并导入to 查看详情