由于工作需求,要使用openvino部署pytorch训练好的模型,所以首先需要将pytorch模型转为onnx。
首先在pytorch环境下安装onnx,直接用pip语句。
pip install onnx
pip install onnxruntime
然后在pytorch下训练模型,并保存模型参数,以.pth文件
torch.save(net.state_dict(), save_path)
然后转onnx文件
import torch
from model import AlexNet
model_path = 'AlexNet.pth' # 模型参数路径
dummy_input = torch.randn(1, 3, 224, 224) # 先随机一个模型输入的数据
model = AlexNet() # 定义模型结构,此处是训练用的模型
checkpoing = torch.load(model_path, 'cpu') # 导入模型参数
model.load_state_dict(checkpoing) # 将模型参数赋予自定义的模型
torch.onnx.export(model, dummy_input, "model_best.onnx",verbose=True) # 将模型保存成.onnx格式
安装openvino:首先在conda创建虚拟环境openvino_env,然后利用官网提供脚本在conda终端安装
链接: https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html
python -m pip install --upgrade pip
pip install openvino-dev[ONNX]==2022.2.0
下载完成后,要在pycharm下运行,必须进行环境配置,我参考了
链接: https://blog.csdn.net/qq_26815239/article/details/123047840
最后将.onnx转换为IR文件(即是.xml和.bin)
步骤:
1.找到openvino的工具库mo_onnx.py脚本
2.在conda prompt上打开该脚本位置
3.输入命令:
python mo_onnx.py --input_model C:\Users\hannah\Desktop\alexnet.onnx --output_dir C:\Users\hannah\Desktop
最后在给定的输出的路径生成生成.xml和.bin的IR文件。