昇腾社区首页
中文
注册

自定义模型后处理开发步骤(modelinfer框架)

从当前版本不再演进,预计2024年退出,建议使用自定义模型后处理开发步骤(tensorinfer框架)

开发步骤

  1. 继承“ModelPostProcessorBase.h”中的ModelPostProcessorBase基类,并自定义后处理类名。

  2. 用户重写基类中的Init()、DeInit()、Process()三个成员函数,参见表1

  3. 用户可选择重写CheckModelCompatibility,用于对所读取模型的输出形状进行校验。
  4. 在后处理类中实现“std::shared_ptr<ModelPostProcessorBase> GetInstance() ”接口函数功能。

表1 成员函数说明

成员函数

说明

Init()

该接口仅调用一次,用于实现配置参数获取、业务逻辑初始化。

DeInit()

该接口仅调用一次,用于实现去初始化任务(例如内存释放)。

Process()

该接口由数据驱动,用于接收上游插件传入的数据,用于对模型输出进行处理,并将处理结果写入元数据。

MemoryDataToHost

可选,该接口可用于将上游推理插件传入的推理结果张量搬运到Host侧。

LoadConfigDataAndLabelMap

可选,该接口由Init()调用,用于实现配置参数获取。

GetModelTensorsShape

可选,该接口由Init()调用,用于获取模型的输入输出张量形状。

CheckModelCompatibility

可选,该接口由Init()调用,用于对所读取模型的输出形状进行校验。

对于目标检测类的模型,也可以让后处理依赖于已经开发好的ObjectPostProcessorBase基类,参见表2

表2 成员函数说明

成员函数

说明

Init()

该接口仅调用一次,用于实现配置参数获取。

DeInit()

该接口仅调用一次,用于实现去初始化任务(例如内存释放)。

Process()

该接口由数据驱动,用于对模型输出进行目标处理,如去重,排序,筛选等。并将处理结果写入元数据。

ObjectDetectionOutput

该接口由Process()调用,用于对模型输出进行目标处理,如去重,排序,筛选等。