OpenVINO(set_input_tensor())
在OpenVINO中,set_input_tensor()
函数用于将输入数据(即图像或其他类型的数据张量)传递给模型的输入端口。在使用OpenVINO进行推理时,需要将数据以正确的格式加载到模型的输入中,这样模型才能对数据进行处理。set_input_tensor()
的主要作用就是为模型的输入指定数据,确保推理执行时能够获取到正确的输入。
1. 函数概述
set_input_tensor()
是用于将输入张量绑定到推理请求(Inference Request)的方法。在推理前,我们将数据传递给模型的输入端口。通常用于处理单个或多个输入的数据加载。通过设置输入张量,OpenVINO推理引擎可以将数据传递到模型的第一个计算层。
2. 函数定义
在Python API中,set_input_tensor()
的函数签名如下:
infer_request.set_input_tensor(input_tensor)
-
参数:
input_tensor
:要传递给模型的输入数据。这个张量数据的格式通常是一个numpy
数组或一个OpenVINO的Tensor
对象。
-
返回值:无返回值。该函数将输入张量设置到指定的推理请求对象上。
3. 常见用法
一般来说,set_input_tensor()
函数与InferRequest
实例一起使用,通常按以下步骤进行:
-
准备输入数据:加载或预处理图像等数据,将其转换成模型输入所需的格式。例如,将图像大小调整为模型输入大小,并转换为
float32
数据类型。 -
调用
set_input_tensor()
:通过infer_request
实例调用set_input_tensor()
,将预处理后的输入数据传递给模型。 -
执行推理:调用
infer()
或start_async()
方法,开始推理过程。
以下是一个典型的用例代码示例:
import numpy as np
from openvino.runtime import Core
# 初始化OpenVINO核心对象
core = Core()
# 加载模型
model = core.read_model("model.xml")
compiled_model = core.compile_model(model, "CPU")
# 创建推理请求
infer_request = compiled_model.create_infer_request()
# 准备输入数据
input_image = np.ones((1, 3, 224, 224), dtype=np.float32) # 示例输入数据
# 设置输入张量
infer_request.set_input_tensor(input_image)
# 运行推理
result = infer_request.infer()
4. 注意事项
- 数据格式:确保输入数据的形状、类型与模型输入层的要求一致,例如通道顺序(NCHW或NHWC)、图像大小、数据类型等。
- 多个输入情况:如果模型有多个输入端口,可以使用
set_input_tensor(input_name, input_tensor)
指定输入名称,以便将张量正确传递到对应的输入端口。
5. 其他方法对比
OpenVINO还提供了其他输入数据传递方法,例如set_tensor()
。但是set_input_tensor()
更简洁且适用于单输入情况,并更常用于高层代码中简化推理过程。
通过set_input_tensor()
函数,可以更加简便地为推理过程设置输入数据,让模型快速进行推理任务。