跳到主要内容

4.1.6 模型推理接口说明

概要介绍

开发板Ubuntu系统预装了Python版本的pyeasy_dnn模型推理模块,通过加载模型并创建Model对象,完成模型推理、数据解析等功能。

模块推理过程可分为加载模型、图像推理、数据解析三个步骤,代码示例如下:

from hobot_dnn import pyeasy_dnn as dnn

#create model object
models = model.load('./model.bin')

#do inference with image
outputs = models[0].forward(image)

for item in outputs:
output_array.append(item.buffer)
post_process(output_array)

Model对象

Model对象在加载模型时创建,包含了inputsoutputsforward等成员和方法,详细说明如下:

inputs

【功能描述】

返回模型的tensor输入信息,通过索引指定具体输入,例如:inputs[0]表示第0组输入。

【函数声明】
Model.inputs(tuple(pyDNNTensor))
【参数描述】
参数名称定义描述
index表示输入tensor的索引
【使用方法】
def print_properties(pro):
print("tensor type:", pro.tensor_type)
print("data type:", pro.dtype)
print("layout:", pro.layout)
print("shape:", pro.shape)

models = dnn.load('../models/fcos_512x512_nv12.bin')
input = models[0].inputs[0]

print_properties(input.properties)
【返回值】

返回pyDNNTensor类型的对象,说明如下:

参数名称描述
properties表示tensor的属性
buffer表示tensor中的数据, numpy格式
name表示tensor中的名称
【注意事项】

outputs

【功能描述】

返回模型的tensor输出信息,通过索引指定具体输出,例如:outputs[0]表示第0组输出。

【函数声明】
Model.outputs(tuple(pyDNNTensor))
【参数描述】
参数名称定义描述
index表示输出tensor的索引
【使用方法】
def print_properties(pro):
print("tensor type:", pro.tensor_type)
print("data type:", pro.dtype)
print("layout:", pro.layout)
print("shape:", pro.shape)

models = dnn.load('../models/fcos_512x512_nv12.bin')
output = models[0].outputs[0]

print_properties(output.properties)
【返回值】

返回pyDNNTensor类型的对象,说明如下:

参数名称描述
properties表示tensor的属性
buffer表示tensor中的数据, numpy格式
name表示tensor中的名称
【注意事项】

forward

【功能描述】

根据指定输入进行模型推理。

【函数声明】
Model.forward(args &args, kwargs &kwargs)
【参数描述】
参数名称定义描述取值范围
args需要推理输入数据numpy:单模型输入,list[numpy, numpy, ...]: 多模型输入
kwargscore_id,表示模型推理的core id0:自动分配,1:core0,2:core1
kwargspriority,表示当前模型推理任务的优先级取值范围0~255,数值越大,优先级越高
【使用方法】
img = cam.get_img(2, 512, 512)

img = np.frombuffer(img, dtype=np.uint8)
outputs = models[0].forward(img)
【返回值】

返回outputs对象。

【注意事项】

示例代码

可以查看 模型推理示例 章节详细了解。