一、安装
创建conda环境
conda create -n StuOpenVINO python=3.7
进入conda环境
conda activate StuOpenVINO
安装openvino
pip install openvino-dev
安装好后,输入 以下命令进行验证
mo -h
二、转换一个onnx模型
torch训练的模型,如何转onnx,在这篇文章有所介绍
OnnxRunTime的推理流程
这里第一个Demo是,如何将onnx模型转换为openvino的模型结构
建立一个python文件,
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
* * *** * * * *
* * * ** * *
**** * ** * *
* * * ** * *
* * ** * * ****
@File : hello_openvino.py
@Date : 2022/9/26/026
@Require :
@Author : hjxu
@Funtion :
"""
import openvino.inference_engine as ie
import os
print(ie.__version__)
if __name__ == "__main__":
import subprocess
file = "./best.onnx"
f = str(file).replace('.onnx', '_openvino_model' + os.sep)
cmd = f"mo --input_model {file} --output_dir {f}"
subprocess.check_output(cmd, shell=True)
这里调用python种的subprocess库,可以在python脚本运行 CMD命令
或者直接命令行输入
mo --input_model ./best.onnx --output_dir ./best_openvino_model
完事后,就可以在当前文件夹下,看到三个文件
- .xml 文件,描述模型的网络结构
- .bin 二进制文件,存储了模型的权重文件
执行推理的时候,只要有这两个文件就可以了,而.mapping文件,是可选择的
其中,对openvino种的mapping文件,在官网上找到介绍
https://docs.openvino.ai/2021.4/openvino_docs_get_started_get_started_demos.html#step-2-convert-the-model-with-model-optimizer
官网提出,openvino的模型文件,总是包含.xml和.bin文件。也许会有其他的文件,比如.json和.mapping。
需要确保,这些文件,都在一个文件夹下,这样推理引擎能够发现他们。
.mapping文件,提供的是一个maps,包含了原始模型每一层layer的 的输入输出 I/O
如下图,对应着原始onnx模型的每一层的name和output_port_id (TensorIterator)
port_map是一组规则,用于将TensorIterator层的输入或输出数据张量映射到body数据张量。port_map条目可以是输入和输出。每个条目描述一个对应的映射规则。
body是一个将重复执行的网络。该网络被逐层描述为典型的IR 网络
关于更多这个mapping属性的介绍,可以在以下地址查询
https://docs.openvino.ai/latest/openvino_docs_ops_infrastructure_TensorIterator_1.html