OpenVino 2023.0学习使用(1)-简介

OpenVino 2023.0学习使用(1)-简介_第1张图片

 模型制备

每一个深度学习工作流程都是从获取模型开始的。您可以选择准备一个自定义的网络,使用现成的解决方案并根据您的需求进行调整,甚至可以从在线数据库下载并运行预先训练的网络,例如TensorFlow Hub,Hugging Face,Torchvision模型。

OpenVINO™支持多种模型格式,并允许将它们转换为自己的openvino.runtime.Model(ov.Model),提供了专用于此任务的工具。

有几个选项可以将模型从原始框架转换为OpenVINO模型格式(ov.Model)。

read_model()方法从文件中读取模型并生成ov.Model。如果文件是支持的原始框架文件格式之一,则会自动转换为OpenVINO中间表示。如果文件已经是OpenVINO IR格式,它将“按原样”读取,而不涉及任何转换。ov.Model可以使用ov.serialize()方法序列化为IR。可以使用应用后训练量化方法的神经网络压缩框架(NNCF)来进一步优化序列化IR。

Python中转换模型

模型转换API,具体来说就是mo.convert_model()方法将原框架的模型转换为ov.Modelmo.convert_model()返回内存中的ov.Model对象,因此不需要read_model()方法。结果ov.Model可以在相同的训练环境(python脚本或Jupiter Notebook)中推断出来。mo.convert_model()提供了一种方便的方法,可以在推理应用程序中快速从基于框架的代码切换到基于OpenVINO的代码。除了模型文件之外,mo.convert_model()还可以直接使用Python构建OpenVINO扩展对象,以便更轻松地转换OpenVINO中不支持的操作。mo.convert_model()方法也有一组参数来切割模型,设置输入形状或布局,添加预处理等。

OpenVino 2023.0学习使用(1)-简介_第2张图片

 转换模型 mo 命令行工具

转换模型的另一个选择是使用mo命令行工具。mo是一种跨平台工具,可促进训练和部署环境之间的转换,执行静态模型分析,并调整深度学习模型,以便在与mo.convert_model方法相同的端点目标设备上实现最佳执行。

mo需要使用预训练的深度学习模型,支持以下格式之一:TensorFlow、TensorFlow Lite、PaddlePaddle或ONNX。mo将模型转换为OpenVINO中间表示格式(IR),需要使用ov.read_model()方法读取。然后,您可以使用OpenVINO™ Runtime编译和推断ov.Model

下图展示了部署经过训练的深度学习模型的典型工作流程:

OpenVino 2023.0学习使用(1)-简介_第3张图片

其中IR是描述模型的一对文件:

  • .xml -描述网络拓扑。

  • .bin -包含权重和偏置二进制数据。

来自ONNX、PaddlePaddle、TensorFlow和TensorFlow Lite的模型文件(不是Python对象)(请查看TensorFlow前端功能和限制)不需要单独的模型转换步骤,即mo.convert_model。OpenVINO提供了C++和Python API,可以直接通过调用read_model方法将模型导入OpenVINO Runtime。

上述momo.convert_model()转换方法的结果相同。你可以选择其中一个,这取决于什么是最适合你。请记住,如果使用相同的参数集,模型转换的结果不应有任何差异。

支持的模型格式

OpenVINO IR(中间表示)-OpenVINO™的专有格式,受益于其全部功能。

ONNX、PaddlePaddle、TensorFlow、TensorFlow Lite -直接支持的格式,这意味着它们可以与 OpenVINO Runtime无需任何预先转换。有关如何在ONNX、PaddlePaddle或TensorFlow上运行推理的指南, 了解如何将OpenVINO™与您的应用程序集成。

MXNet、Caffe、Kaldi -间接支持的格式,这意味着它们需要在运行推理之前转换为OpenVINO IR。转换使用模型转换API完成,在某些情况下可能涉及中间步骤。

你可能感兴趣的:(openvino,openvino,学习,人工智能)