开发步骤如下:
继承“ModelPostProcessorBase.h”中的ModelPostProcessorBase基类,并自定义后处理类名。
用户重写基类中的Init()、DeInit()、Process()三个成员函数,参见表1。
在后处理类中实现“std::shared_ptr<ModelPostProcessorBase> GetInstance() ”接口函数功能。
成员函数 |
说明 |
---|---|
Init() |
该接口仅调用一次,用于实现配置参数获取、业务逻辑初始化。 |
DeInit() |
该接口仅调用一次,用于实现去初始化任务(例如内存释放)。 |
Process() |
该接口由数据驱动,用于接收上游插件传入的数据,用于对模型输出进行处理,并将处理结果写入元数据。 |
MemoryDataToHost |
可选,该接口可用于将上游推理插件传入的推理结果张量搬运到Host侧。 |
LoadConfigDataAndLabelMap |
可选,该接口由Init()调用,用于实现配置参数获取。 |
GetModelTensorsShape |
可选,该接口由Init()调用,用于获取模型的输入输出张量形状。 |
CheckModelCompatibility |
可选,该接口由Init()调用,用于对所读取模型的输出形状进行校验。 |
对于目标检测类的模型,也可以让后处理依赖于已经开发好的ObjectPostProcessorBase基类。
成员函数 |
说明 |
---|---|
Init() |
该接口仅调用一次,用于实现配置参数获取。 |
DeInit() |
该接口仅调用一次,用于实现去初始化任务(例如内存释放)。 |
Process() |
该接口由数据驱动,用于对模型输出进行目标处理,如去重,排序,筛选等。并将处理结果写入元数据。 |
ObjectDetectionOutput |
该接口由Process()调用,用于对模型输出进行目标处理,如去重,排序,筛选等。 |
后处理动态库中尽量避免使用静态变量,须保证多个后处理动态库实例间不会相互干扰。