OpenVINO™ Runtime API 核心使用教程
前言
OpenVINO™ 是英特尔推出的深度学习推理工具套件,能够显著加速计算机视觉、自动语音识别、自然语言处理等深度学习模型在各种硬件平台上的推理性能。本文将详细介绍 OpenVINO Runtime API 的核心使用方法,帮助开发者快速上手 OpenVINO 推理引擎。
环境准备
在开始之前,请确保已安装以下依赖项:
import platform
%pip install -q "openvino>=2023.1.0"
%pip install -q requests tqdm ipywidgets
if platform.system() == "Darwin":
%pip install -q "numpy<2.0.0"
初始化 OpenVINO 运行时
首先需要初始化 OpenVINO 运行时核心对象:
import openvino as ov
core = ov.Core()
设备检测与选择
OpenVINO 支持多种硬件设备,包括 CPU、GPU、VPU 等。我们可以查看当前系统可用的设备:
import openvino.properties as props
devices = core.available_devices
for device in devices:
device_name = core.get_property(device, props.device.full_name)
print(f"{device}: {device_name}")
输出示例:
CPU: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz
可以通过设备选择器指定推理设备:
device = device_widget() # 交互式设备选择器
模型加载与编译
OpenVINO 支持多种模型格式,下面分别介绍不同格式模型的加载方法。
1. OpenVINO IR 模型
OpenVINO IR(Intermediate Representation)是 OpenVINO 的原生模型格式,包含一个.xml文件(网络拓扑结构)和一个.bin文件(权重数据)。
classification_model_xml = "model/classification.xml"
model = core.read_model(model=classification_model_xml)
compiled_model = core.compile_model(model=model, device_name=device.value)
2. ONNX 模型
ONNX 是一种开放的模型格式,OpenVINO 可以直接加载:
onnx_model_path = "model/segmentation.onnx"
model_onnx = core.read_model(model=onnx_model_path)
compiled_model_onnx = core.compile_model(model=model_onnx, device_name=device.value)
可以将 ONNX 模型导出为 OpenVINO IR 格式:
ov.save_model(model_onnx, output_model="model/exported_onnx_model.xml")
3. PaddlePaddle 模型
PaddlePaddle 推理模型可以直接加载:
paddle_model_path = "model/inference.pdmodel"
model_paddle = core.read_model(model=paddle_model_path)
compiled_model_paddle = core.compile_model(model=model_paddle, device_name=device.value)
4. TensorFlow 模型
TensorFlow 冻结图格式模型(.pb)可以直接加载:
tf_model_path = "model/classification.pb"
model_tf = core.read_model(model=tf_model_path)
compiled_model_tf = core.compile_model(model=model_tf, device_name=device.value)
5. TensorFlow Lite 模型
TFLite 模型(.tflite)可以直接加载:
tflite_model_path = "model/inception_v4_quant.tflite"
model_tflite = core.read_model(model=tflite_model_path)
compiled_model_tflite = core.compile_model(model=model_tflite, device_name=device.value)
模型信息获取
加载模型后,可以获取模型的输入输出信息:
获取模型输入信息
inputs = compiled_model.inputs
for input in inputs:
print(f"Input name: {input.any_name}")
print(f"Shape: {input.shape}")
print(f"Type: {input.element_type}")
获取模型输出信息
outputs = compiled_model.outputs
for output in outputs:
print(f"Output name: {output.any_name}")
print(f"Shape: {output.shape}")
print(f"Type: {output.element_type}")
执行推理
准备好输入数据后,可以执行推理:
import numpy as np
# 准备输入数据(示例)
input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
# 执行推理
results = compiled_model([input_data])
# 获取输出结果
output = results[compiled_model.outputs[0]]
模型形状调整
OpenVINO 支持动态调整模型的输入形状:
调整图像尺寸
# 获取原始输入形状
original_shape = model.input().shape
print(f"Original shape: {original_shape}")
# 设置新的输入形状
new_shape = (1, 3, 480, 640)
model.reshape({0: new_shape})
# 重新编译模型
compiled_model = core.compile_model(model=model, device_name=device.value)
调整批处理大小
# 设置动态批处理维度
model.input().shape = [ov.Dimension(), 3, 224, 224]
# 重新编译模型
compiled_model = core.compile_model(model=model, device_name=device.value)
# 执行不同批处理大小的推理
for batch_size in [1, 2, 4]:
input_data = np.random.randn(batch_size, 3, 224, 224).astype(np.float32)
results = compiled_model([input_data])
模型缓存
为了提高模型加载速度,可以将编译后的模型缓存到磁盘:
# 设置缓存目录
core.set_property({"CACHE_DIR": "model_cache"})
# 加载并编译模型(会自动使用或创建缓存)
compiled_model = core.compile_model(model=model, device_name=device.value)
总结
本文详细介绍了 OpenVINO Runtime API 的核心使用方法,包括:
- 环境准备与运行时初始化
- 设备检测与选择
- 多种格式模型的加载方法
- 模型信息获取
- 推理执行
- 模型形状调整
- 模型缓存优化
掌握这些核心 API 的使用方法,可以帮助开发者高效地部署深度学习模型到各种硬件平台上,充分发挥 OpenVINO 的性能优势。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



