模型后处理
模型后处理类参考(tensorinfer框架)
ImagePreProcessInfo
类说明
用于记录图像类任务中模型前处理中的感兴趣(Region of Interest)区域,提供给模型后处理的坐标还原使用。
相关使用流程请参考后处理。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
| 参数名 | 数据类型 | 参数说明 |
|---|---|---|
| imageWidth | uint32_t | 图像宽度,默认值为0。 |
| imageHeight | uint32_t | 图像内存高度,默认值为0。 |
| originalWidth | uint32_t | 图像原始宽度,默认值为0。 |
| originalHeight | uint32_t | 图像原始高度,默认值为0。 |
| xRatio | float | x缩放比例,默认值为1.0。 |
| xBias | float | x偏移量,默认值为0.0。 |
| yRatio | float | y缩放比例,默认值为1.0。 |
| yBias | float | y偏移量,默认值为0.0。 |
| x0Valid | float | 目标框坐标,默认值为0.0。 |
| y0Valid | float | 目标框坐标,默认值为0.0。 |
| x1Valid | float | 目标框坐标,默认值为0.0。 |
| y1Valid | float | 目标框坐标,默认值为0.0。 |
ImagePreProcessInfo
类构造函数。
ImagePreProcessInfo::ImagePreProcessInfo();
ImagePreProcessInfo::ImagePreProcessInfo(uint32_t width, uint32_t height);
ImagePreProcessInfo::ImagePreProcessInfo(uint32_t widthResize, uint32_t heightResize, uint32_t widthOriginal, uint32_t heightOriginal);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| width | 输入 | 图像宽。 |
| height | 输入 | 图像高。 |
| widthResize | 输入 | 缩放宽。 |
| heightResize | 输入 | 缩放高。 |
| widthOriginal | 输入 | 原图宽。 |
| heightOriginal | 输入 | 原图高。 |
~ImagePreProcessInfo
ImagePreProcessInfo类的默认析构函数。
ImagePreProcessInfo::~ImagePreProcessInfo() {}
PostProcessBase
类说明
模型后处理基类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CheckAndMoveTensors
保护成员函数,调用IsValidTensors校验张量无误后将张量内存搬运至Host侧。
APP_ERROR PostProcessBase::CheckAndMoveTensors(std::vector<TensorBase> &tensors);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 输入张量。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DeInit
用于模型后处理的去初始化,完成资源释放。
virtual APP_ERROR PostProcessBase::DeInit();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetBuffer
保护成员函数,获取输入张量中的指定索引的指针。
void* PostProcessBase::GetBuffer(const TensorBase& tensor, uint32_t index) const;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensor | 输入 | 输入张量。 |
| index | 输入 | 待获取张量索引。 |
| 数据结构 | 说明 |
|---|---|
| void* | 输入张量中的指定索引的指针。 |
GetCurrentVersion
返回当前使用的后处理so的整型版本号。(postprocess中所有后处理子类都具备此接口。)
virtual uint64_t PostProcessBase::GetCurrentVersion();
| 数据结构 | 说明 |
|---|---|
| uint64_t | 当前使用的后处理so的整型版本号。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
virtual APP_ERROR PostProcessBase::Init(const std::map<std::string, std::string> &postConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
JudgeResizeType
用于判断图片信息中resize类型是否合法。
bool PostProcessBase::JudgeResizeType(const ResizedImageInfo& resizedImageInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| resizedImageInfo | 输入 | 输入的图片信息。 |
| 数据结构 | 说明 |
|---|---|
| bool | 图片信息中包含的resize类型是否合法。 |
LoadConfigData
保护成员函数,用于初始化后处理的配置文件。
APP_ERROR PostProcessBase::LoadConfigData(const std::map<std::string, std::string> &postConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
operator=
等号运算符重载,用于PostProcessBase对象之间的赋值。
PostProcessBase& operator= (const PostProcessBase& other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | PostProcessBase对象。 |
PostProcessBase
类构造函数。
PostProcessBase::PostProcessBase() = default;
PostProcessBase::PostProcessBase(const PostProcessBase& other) = default;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | PostProcessBase对象。 |
~PostProcessBase
PostProcessBase类的默认析构函数。
virtual PostProcessBase::~PostProcessBase() = default;
ImagePostProcessBase
类说明
图像类任务后处理的基类,继承自PostProcessBase。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
SetCropRoiBoxes
用于设置当前后处理的输入图像在原图中的位置。
void ImagePostProcessBase::SetCropRoiBoxes(std::vector<MxBase::CropRoiBox> cropRoiBoxes);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| cropRoiBoxes | 输入 | 当前后处理的输入图像(vector)在原图中的位置。 |
ObjectPostProcessBase
类说明
目标检测类任务后处理的基类,继承自ImagePostProcessBase。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CoordinatesReduction
保护成员函数,用于对坐标数据进行缩放。(该方法为内部调用方法,请用户不要使用。)
void ObjectPostProcessBase::CoordinatesReduction(const uint32_t index, const ResizedImageInfo& resizedImageInfo, std::vector<ObjectInfo>& objInfos, bool normalizedFlag = true);
void ObjectPostProcessBase::CoordinatesReduction(std::vector<std::vector<ObjectInfo>> &objInfos, const std::vector<MxBase::ImagePreProcessInfo> &imagePreProcessInfos, bool normalizedFlag = true);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| index | 输入 | 指定切分向量的索引。 |
| resizedImageInfo | 输入 | 图片信息(包括原图和缩放后宽高)。 |
| objInfos | 输出 | 输出目标检测的坐标、类型、置信度等信息。 |
| normalizedFlag | 输入 | 是否进行标准化,可选。 |
| imagePreProcessInfos | 输入 | 图片前处理信息。 |
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR ObjectPostProcessBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetObjectConfigData
保护成员函数,将从私有成员中获取原始的结果并调用GetSeparateScoreThresh()进行分割。(该方法为内部调用方法,请用户不要使用。)
APP_ERROR ObjectPostProcessBase::GetObjectConfigData();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetSeparateScoreThresh
获取字符分割后的分数阈值。
APP_ERROR ObjectPostProcessBase::GetSeparateScoreThresh(std::string& strSeparateScoreThresh);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| strSeparateScoreThresh | 输入 | 未分割的原始字符串。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
APP_ERROR ObjectPostProcessBase::Init(const std::map<std::string, std::string> &postConfig) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
LogObjectInfos
保护成员函数,仅用于debug,打印目标检测的坐标、置信度等信息。(该方法为内部调用方法,请用户不要使用。)
void ObjectPostProcessBase::LogObjectInfos(const std::vector<std::vector<ObjectInfo>>& objectInfos);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| objectInfos | 输入 | 目标检测的坐标、类型、置信度等信息。 |
ObjectPostProcessBase
类构造函数。
ObjectPostProcessBase::ObjectPostProcessBase() = default;
ObjectPostProcessBase::ObjectPostProcessBase(const ObjectPostProcessBase & other) = default;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | ObjectPostProcessBase对象。 |
~ObjectPostProcessBase
ObjectPostProcessBase类的默认析构函数。
virtual ObjectPostProcessBase::~ObjectPostProcessBase() = default;
operator=
等号运算符重载,用于ObjectPostProcessBase对象之间的赋值。
ObjectPostProcessBase& operator= (const ObjectPostProcessBase & other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | ObjectPostProcessBase对象。 |
Process
接受模型推理输出张量,输出目标检测结果。后续执行时,需要先执行Init方法。
virtual APP_ERROR ObjectPostProcessBase::Process(const std::vector<TensorBase>& tensors, std::vector<std::vector<ObjectInfo>>& objectInfos, const std::vector<ResizedImageInfo>& resizedImageInfos = {}, const std::map<std::string, std::shared_ptr<void>> &configParamMap = {});
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 模型后处理的输入张量。 |
| objectInfos | 输出 | 输出目标检测的坐标、类型、置信度等信息。 |
| resizedImageInfos | 输入 | 图片信息(包括原图和缩放后宽高)。 |
| configParamMap | 输入 | 其他配置参数,可选。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ResizeReduction
保护成员函数,用于对目标检测数据进行缩放。(该方法为内部调用方法,请用户不要使用。)
void ObjectPostProcessBase::ResizeReduction(const ResizedImageInfo& resizedImageInfo, const int imgWidth, const int imgHeight, std::vector<ObjectInfo>& objInfos);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| resizedImageInfo | 输入 | 图片信息(包括原图和缩放后的宽高)。 |
| imgWidth | 输入 | 图片宽度。 |
| imgHeight | 输入 | 图片高度。 |
| objInfos | 输出 | 输出目标检测的坐标、类型、置信度等信息。 |
ClassPostProcessBase
类说明
分类模型后处理基类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
ClassPostProcessBase
类构造函数。
ClassPostProcessBase::ClassPostProcessBase() = default;
ClassPostProcessBase::ClassPostProcessBase(const ClassPostProcessBase &other) = default;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | ClassPostProcessBase对象。 |
~ClassPostProcessBase
ClassPostProcessBase类的默认析构函数。
virtual ClassPostProcessBase::~ClassPostProcessBase() = default;
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
APP_ERROR ClassPostProcessBase::Init(const std::map<std::string, std::string> &postConfig) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR ClassPostProcessBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
operator=
等号运算符重载,用于ClassPostProcessBase对象之间的赋值。
ClassPostProcessBase& operator=(const ClassPostProcessBase &other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | ClassPostProcessBase对象。 |
Process
接受模型推理输出张量,输出分类结果。
virtual APP_ERROR ClassPostProcessBase::Process(const std::vector<TensorBase>& tensors, std::vector<std::vector<ClassInfo>> &classInfos, const std::map<std::string, std::shared_ptr<void>> &configParamMap = {});
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 模型后处理的输入张量。 |
| classInfos | 输出 | 输出分类结果。 |
| configParamMap | 输入 | 其他配置参数,可选。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SemanticSegPostProcessBase
类说明
语义分割类任务后处理的基类,继承自ImagePostProcessBase。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CoordinatesReduction
保护成员函数,根据图片信息,输出降维后的语义分割信息。(该方法为内部调用方法,请用户不要使用。)
void SemanticSegPostProcessBase::CoordinatesReduction(const ResizedImageInfo& resizedImageInfo, SemanticSegInfo& semanticSegInfos);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| resizedImageInfo | 输入 | 图片信息。图片原始宽高和缩放宽高不能大于8192,缩放比例范围[1/32, 16]。 |
| semanticSegInfos | 输出 | 语义分割像素值,类别映射表等信息。 |
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR SemanticSegPostProcessBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetSemanticSegConfigData
保护成员函数,将配置信息写入类别映射表中。(该方法为内部调用方法,请用户不要使用。)
APP_ERROR SemanticSegPostProcessBase::GetSemanticSegConfigData();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
APP_ERROR SemanticSegPostProcessBase::Init(const std::map<std::string, std::string> &postConfig) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
operator=
等号运算符重载,用于SemanticSegPostProcessBase对象之间的赋值。
SemanticSegPostProcessBase& operator=(const SemanticSegPostProcessBase& other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | SemanticSegPostProcessBase对象。 |
Process
接受模型推理输出张量,输出语义分割结果。后续执行时,需要先执行Init方法。
virtual APP_ERROR SemanticSegPostProcessBase::Process(const std::vector<TensorBase>& tensors, std::vector<SemanticSegInfo>& semanticSegInfos, const std::vector<ResizedImageInfo>& resizedImageInfos = {}, const std::map<std::string, std::shared_ptr<void>> &configParamMap = {});
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 模型后处理的输入张量。 |
| semanticSegInfos | 输出 | 输出语义分割像素值,类别映射表等信息。 |
| resizedImageInfos | 输入 | 图片信息(包括原图和缩放后宽高)。 |
| configParamMap | 输入 | 其他配置参数,可选。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SemanticSegPostProcessBase
类构造函数。
SemanticSegPostProcessBase::SemanticSegPostProcessBase() = default;
SemanticSegPostProcessBase::SemanticSegPostProcessBase(const SemanticSegPostProcessBase& other) = default;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | SemanticSegPostProcessBase对象。 |
~SemanticSegPostProcessBase
SemanticSegPostProcessBase类的默认析构函数。
virtual SemanticSegPostProcessBase::~SemanticSegPostProcessBase() = default;
TextGenerationPostProcessBase
类说明
文本生成类模型后处理基类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR TextGenerationPostProcessBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
APP_ERROR TextGenerationPostProcessBase::Init(const std::map<std::string, std::string> &postConfig) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
operator=
等号运算符重载,用于TextGenerationPostProcessBase对象之间的赋值。
TextGenerationPostProcessBase& operator= (const TextGenerationPostProcessBase& other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | TextGenerationPostProcessBase对象。 |
Process
接受模型推理输出张量,输出文本生成结果。后续执行时,需要先执行Init方法。
virtual APP_ERROR TextGenerationPostProcessBase::Process(const std::vector<TensorBase>& tensors, std::vector<TextsInfo>& textsInfos, const std::map<std::string, std::shared_ptr<void>> &configParamMap = {});
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 模型后处理的输入张量。 |
| textsInfos | 输出 | 输出文本生成结果。 |
| configParamMap | 输入 | 其他配置参数,可选。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
TextGenerationPostProcessBase
类构造函数。
TextGenerationPostProcessBase::TextGenerationPostProcessBase() = default;
TextGenerationPostProcessBase::TextGenerationPostProcessBase(const TextGenerationPostProcessBase& other) = default;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | TextGenerationPostProcessBase对象。 |
~TextGenerationPostProcessBase
TextGenerationPostProcessBase类的默认析构函数。
virtual TextGenerationPostProcessBase::~TextGenerationPostProcessBase() = default;
TextObjectPostProcessBase
类说明
文本目标检测类任务后处理的基类,继承自ImagePostProcessBase。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR TextObjectPostProcessBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
FixCoords
保护成员函数,用于对坐标数据进行修复。该方法为内部调用方法,请用户不要使用。
void TextObjectPostProcessBase::FixCoords(uint32_t scrData, float &desData);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| scrData | 输入 | 原始坐标数据。 |
| desData | 输出 | 被修复的坐标数据。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
APP_ERROR TextObjectPostProcessBase::Init(const std::map<std::string, std::string> &postConfig) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
operator =
等号运算符重载,用于TextObjectPostProcessBase对象之间的赋值。
TextObjectPostProcessBase& operator= (const TextObjectPostProcessBase& other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | TextObjectPostProcessBase对象。 |
Process
接受模型推理输出张量,输出目标检测结果。后续执行时,需要先执行Init方法。
virtual APP_ERROR TextObjectPostProcessBase::Process(const std::vector<TensorBase>& tensors, std::vector<std::vector<TextObjectInfo>> &textObjectInfos, const std::vector<ResizedImageInfo>& resizedImageInfos = {}, const std::map<std::string, std::shared_ptr<void>> &configParamMap = {});
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 模型后处理的输入张量。 |
| textObjectInfos | 输出 | 输出文本目标框的坐标、置信度等信息。 |
| resizedImageInfos | 输入 | 图片信息(包括原图和缩放后宽高)。 |
| configParamMap | 输入 | 其他配置参数,可选。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ResizeReduction
保护成员函数,用于对输入的图片信息进行缩放。该方法为内部调用方法,请用户不要使用。
void TextObjectPostProcessBase::ResizeReduction(const ResizedImageInfo &resizedImageInfo, TextObjectInfo &textObjInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| textObjectInfo | 输出 | 输出文本目标框的坐标等信息。 |
| resizedImageInfo | 输入 | 图片信息。 |
TextObjectPostProcessBase
类构造函数。
TextObjectPostProcessBase::TextObjectPostProcessBase() = default;
TextObjectPostProcessBase::TextObjectPostProcessBase(const TextObjectPostProcessBase& other) = default;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | TextObjectPostProcessBase对象。 |
~TextObjectPostProcessBase
TextObjectPostProcessBase类的默认析构函数。
virtual TextObjectPostProcessBase::~TextObjectPostProcessBase() = default;
KeypointPostProcessBase
类说明
关键点检测类模型后处理基类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR KeypointPostProcessBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetSeparateScoreThresh
保护成员函数,将原始结果分割为float向量类型。该方法为内部调用方法,请用户不要使用。
APP_ERROR KeypointPostProcessBase::GetSeparateScoreThresh(std::string& strSeparateScoreThresh);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| strSeparateScoreThresh | 输入 | 未分割的原始字符串。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
APP_ERROR KeypointPostProcessBase::Init(const std::map<std::string, std::string> &postConfig) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postConfig | 输入 | 配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
KeypointPostProcessBase
类构造函数。
KeypointPostProcessBase::KeypointPostProcessBase() = default;
KeypointPostProcessBase::KeypointPostProcessBase(const KeypointPostProcessBase &other) = default;
| 参数 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | KeypointPostProcessBase对象。 |
~KeypointPostProcessBase
KeypointPostProcessBase类的默认析构函数。
virtual KeypointPostProcessBase::~KeypointPostProcessBase() = default;
LogKeyPointInfos
保护成员函数,仅用于debug,打印图片关键点。该方法为内部调用方法,请用户不要使用。
void KeypointPostProcessBase::LogKeyPointInfos(const std::vector<std::vector<KeyPointDetectionInfo>>& keyPointInfos);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| keyPointInfos | 输入 | 图片关键点向量。 |
operator=
等号运算符重载,用于KeypointPostProcessBase对象间的赋值。
KeypointPostProcessBase& operator= (const KeypointPostProcessBase &other);
| 参数 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | KeypointPostProcessBase对象。 |
Process
接受模型推理输出张量,输出关键点结果。后续执行时,需要先执行Init方法。
virtual APP_ERROR KeypointPostProcessBase::Process(const std::vector<TensorBase>& tensors, std::vector<std::vector<KeyPointDetectionInfo>>& keyPointInfos, const std::vector<ResizedImageInfo>& resizedImageInfos = {}, const std::map<std::string, std::shared_ptr<void>> &configParamMap = {});
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensors | 输入 | 模型后处理的输入张量。 |
| keyPointInfos | 输出 | 输出关键点结果。 |
| resizedImageInfos | 输入 | 图片信息(包括原图和缩放后宽高)。 |
| configParamMap | 输入 | 其他配置参数,可选。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
postprocess
类说明
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CrnnPostProcess
CrnnPostProcess模型后处理类,继承自文本生成后处理基类TextGenerationPostProcessBase。
重载了TextGenerationPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见TextGenerationPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::CrnnPostProcess> GetTextGenerationInstance()方法用于获取该类的智能指针实例。
CtpnPostProcess
CtpnPostProcess模型后处理类,继承自文本生成后处理基类TextObjectPostProcessBase。
重载了TextObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见TextObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::CtpnPostProcess> GetTextObjectInstance()方法用于获取该类的智能指针实例。
Deeplabv3Post
Deeplabv3Post模型后处理类,继承自语义分割后处理基类SemanticSegPostProcessBase。
重载了SemanticSegPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见SemanticSegPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::Deeplabv3Post> GetSemanticSegInstance()方法用于获取该类的智能指针实例。
FasterRcnnPostProcess
FasterRcnnPostProcess模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::FasterRcnnPostProcess> GetObjectInstance()方法用于获取该类的智能指针实例。
HigherHRnetPostProcess
HigherHRnetPostProcess模型后处理类,继承自关键点后处理基类KeypointPostProcessBase。
重载了KeypointPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见KeypointPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::HigherHRnetPostProcess> GetKeypointInstance()方法用于获取该类的智能指针实例。
MaskRcnnMindsporePost
MaskRcnnMindsporePost模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::MaskRcnnMindsporePost> GetObjectInstance()方法用于获取该类的智能指针实例。
OpenPosePostProcess
OpenPosePostProcess模型后处理类,继承自关键点后处理基类KeypointPostProcessBase。
重载了KeypointPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见KeypointPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::OpenPosePostProcess> GetKeypointInstance()方法用于获取该类的智能指针实例。
PSENetPostProcess
PSENetPostProcess模型后处理类,继承自文本生成后处理基类TextObjectPostProcessBase。
重载了TextObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见TextObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::PSENetPostProcess> GetTextObjectInstance()方法用于获取该类的智能指针实例。
Resnet50PostProcess
Resnet50PostProcess模型后处理类,继承自分类任务后处理基类ClassPostProcessBase。
重载了ClassPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ClassPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::Resnet50PostProcess> GetClassInstance()方法用于获取该类的智能指针实例。
RetinaNetPostProcess
RetinaNetPostProcess模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase。重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::RetinaNetPostProcess> GetObjectInstance()方法用于获取该类的智能指针实例。
SsdMobilenetFpnMindsporePost
SsdMobilenetFpnMindsporePost模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号。重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::SsdMobilenetFpnMindsporePost> GetObjectInstance()方法用于获取该类的智能指针实例。
SsdMobilenetv1FpnPostProcess
SsdMobilenetv1FpnPostProcess模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::SsdMobilenetv1FpnPostProcess> GetObjectInstance()方法用于获取该类的智能指针实例。
Ssdvgg16PostProcess
Ssdvgg16PostProcess模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::Ssdvgg16PostProcess> GetObjectInstance()方法用于获取该类的智能指针实例。
TransformerPostProcess
TransformerPostProcess模型后处理类,继承自文本生成后处理基类TextGenerationPostProcessBase。
重载了TextGenerationPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见TextGenerationPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::TransformerPostProcess> GetTextGenerationInstance()方法用于获取该类的智能指针实例。
UNetMindSporePostProcess
UNetMindSporePostProcess模型后处理类,继承自语义分割后处理基类SemanticSegPostProcessBase。
重载了SemanticSegPostProcessBase的Init()、DeInit()和Process()接口,具体描述请参见SemanticSegPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::UNetMindSporePostProcess> GetSemanticSegInstance()方法用于获取该类的智能指针实例。
Yolov3PostProcess
YOLOv3模型后处理类,继承自目标检测后处理基类ObjectPostProcessBase。
重载了ObjectPostProcessBase中的Init()、DeInit()和Process()接口,具体描述请参见ObjectPostProcessBase。
重载了PostProcessBase的GetCurrentVersion接口,用以获取当前后处理so的版本号,重载了赋值运算符“=”。
实现了std::shared_ptr<MxBase::Yolov3PostProcess> GetObjectInstance()方法用于获取该类的智能指针实例。
模型后处理类参考(modelinfer框架)
ModelPostProcessorBase
类说明
该类用于实现推理后处理,用户需要继承该类并实现Init、DeInit、Process等虚函数。
相关使用流程请参考后处理。
即将废弃,预计2025年12月正式删除,请使用tensorinfer框架模型后处理类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CheckModelCompatibility
保护成员函数,该接口由Init()调用,用于对所读取模型的输出形状进行校验。
APP_ERROR ModelPostProcessorBase::CheckModelCompatibility();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DeInit
用于模型后处理的去初始化,完成资源释放。
virtual APP_ERROR ModelPostProcessorBase::DeInit() = 0;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetLabelName
根据索引获取类名称。
std::string ModelPostProcessorBase::GetLabelName(int index);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| index | 输入 | 类索引。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 类名称。 |
GetModelTensorsShape
保护成员函数,该接口由Init()调用,用于获取模型的输入输出张量形状。
APP_ERROR ModelPostProcessorBase::GetModelTensorsShape(MxBase::ModelDesc modelDesc);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| modelDesc | 输入 | 模型基本信息结构体。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
virtual APP_ERROR ModelPostProcessorBase::Init(const std::string& configPath, const std::string& labelPath, MxBase::ModelDesc modelDesc) = 0;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configPath | 输入 | 配置文件路径。 |
| labelPath | 输入 | 标签文件路径。 |
| modelDesc | 输出 | 模型描述信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
LoadConfigDataAndLabelMap
保护成员函数,该接口由Init()调用,用于实现配置参数的获取。
APP_ERROR ModelPostProcessorBase::LoadConfigDataAndLabelMap(const std::string& configPath, const std::string& labelPath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configPath | 输入 | 配置文件路径。 |
| labelPath | 输入 | 标签文件路径。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MemoryDataToHost
把数据从Device侧拷贝到Host侧用于后处理。
APP_ERROR ModelPostProcessorBase::MemoryDataToHost(const int index, const std::vector<std::vector<MxBase::BaseTensor>>& tensors,std::vector<std::shared_ptr<void>>& featLayerData);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| index | 输入 | 输出池索引。 |
| tensors | 输入 | 输出Tensor数组。 |
| featLayerData | 输出 | 输出特征数据数组。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
~ModelPostProcessorBase
ModelPostProcessorBase类的默认析构函数。
virtual ModelPostProcessorBase::~ModelPostProcessorBase() = default;
Process
用于推理后处理,获取目标、类型等信息。
virtual APP_ERROR ModelPostProcessorBase::Process(std::vector<std::shared_ptr<void>>& featLayerData);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| featLayerData | 输入 | 特征数据数组。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ObjectPostProcessorBase
类说明
该类继承了ModelPostProcessorBase用于目标检测推理后处理,用户可以根据需要继承该类并选择性实现Init、DeInit、Process等虚函数。
相关使用流程请参考后处理。
该类即将废弃,预计2025年12月正式删除,请使用tensorinfer框架模型后处理类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CoordinatesReduction
保护成员函数,用于对坐标数据进行缩放。该方法为内部调用方法,请用户不要使用。
void ObjectPostProcessorBase::CoordinatesReduction(ImageInfo& imgInfo, std::vector<ObjDetectInfo>& objInfos);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| objInfos | 输出 | 输出目标检测的坐标、类型、置信度等信息。 |
| imgInfo | 输入 | 图片信息(包括原图和缩放后的宽高)。 |
DeInit
用于模型后处理的去初始化,完成资源释放。
APP_ERROR ObjectPostProcessorBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetSeparateScoreThresh
保护成员函数,将原始结果分割为float向量类型。该方法为内部调用方法,请用户不要使用。
APP_ERROR ObjectPostProcessorBase::GetSeparateScoreThresh(std::string& strSeparateScoreThresh);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| strSeparateScoreThresh | 输入 | 未分割的原始字符串。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。
APP_ERROR ObjectPostProcessorBase::Init(const std::string& configPath, const std::string& labelPath, MxBase::ModelDesc modelDesc) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configPath | 输入 | 配置文件路径。 |
| labelPath | 输入 | 标签文件路径。 |
| modelDesc | 输出 | 模型描述信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
NmsSort
保护成员函数,根据置信度大小过滤重复目标。该方法为内部调用方法,请用户不要使用。
void ObjectPostProcessorBase::NmsSort(std::vector<ObjDetectInfo>& objInfos, float iouThresh, IOUMethod method = UNION);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| objInfos | 输出 | 待过滤的目标边角点。 |
| iouThresh | 输入 | 过滤阈值。 |
| method | 输入 | IOU计算方式:MAX 重叠区域除以两者中面积大的。MIN 重叠区域除以两者中面积小的。UNION 重叠区域除以两者面积并集。DIOU 重叠区域除以两者面积并集减去距离的交并比。 |
ObjectDetectionOutput
保护成员函数,由Process()调用,用于对模型输出进行目标处理,如去重、排序、筛选等。该方法为内部调用方法,请用户不要使用。
virtual void ObjectPostProcessorBase::ObjectDetectionOutput(std::vector<std::shared_ptr<void>>& featLayerData,
std::vector<ObjDetectInfo>& objInfos, ImageInfo& imgInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| featLayerData | 输入 | 输出特征数据数组。 |
| objInfos | 输出 | 输出对象坐标、类型、置信度等信息。 |
| imgInfo | 输入 | 图片信息。 |
Process
从输出数据中获取检测目标的信息。
virtual APP_ERROR ObjectPostProcessorBase::Process(std::vector<std::shared_ptr<void>>& featLayerData, std::vector<ObjDetectInfo>& objInfos,const bool useMpPictureCrop, MxBase::PostImageInfo postImageInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| featLayerData | 输入 | 输出特征数据数组。 |
| objInfos | 输出 | 输出对象坐标、类型、置信度等信息。输出单个对象的坐标范围为[0, 8192],类型不能小于0。 |
| useMpPictureCrop | 输入 | 是否还原坐标到目标框坐标上。 |
| postImageInfo | 输入 | 图片信息(包括原图和缩放宽高,目标框坐标)。原图和缩放宽高均不能超过8192,目标框坐标范围为[0, 8192]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetAspectRatioImageInfo
设置后处理图像信息。
void ObjectPostProcessorBase::SetAspectRatioImageInfo(const MxBase::AspectRatioPostImageInfo& postProcessorImageInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postProcessorImageInfo | 输入 | 后处理图像信息。 |