流程编排
流程编排头文件列表
表 1 流程编排头文件列表
| 头文件名称 | 所在目录 | 用途 |
|---|---|---|
| DataHelper.h | MxStream/DataType | 定义数据读取方法。 |
| DataType.h | MxStream/DataType | 定义流程编排的pipeline文件中解析stream内容、deviceId的键及默认超时时间。 |
| StateInfo.h | MxStream/DataType | 定义stream构建状态枚举值。 |
| PacketDataType.h | MxStream/Packet | 定义发送接收packet接口的数据结构。 |
| Packet.h | MxStream/Packet | 定义数据模板类,作为Stream流中的数据承载体,可以作为Stream流的输入数据和接收的数据。 |
| FunctionalStream.h | MxStream/Stream | 定义多输入多输出流程的实体类。 |
| PluginNode.h | MxStream/Stream | 定义插件节点类,用于创建流程所需的插件。 |
| SequentialStream.h | MxStream/Stream | 定义单向顺序流程的实体类。 |
| Stream.h | MxStream/Stream | 定义流程的抽象类。 |
| MxsmDataType.h | MxStream/StreamManager | 定义stream发送接收数据及元数据的数据结构。 |
| MxStreamManager.h | MxStream/StreamManager | 定义流程的基本管理类。 |
| ObjectPostDataType.h | MxPlugins/ModelPostProcessors/ModelPostProcessorBase | 定义目标后处理相关的数据结构。 |
| MxpiObjectPostProcessorBase.h | MxPlugins/ModelPostProcessors/ModelPostProcessorBase | 定义目标检测推理后处理基类。 |
| MxpiModelPostProcessorBase.h | MxPlugins/ModelPostProcessors/ModelPostProcessorBase | 定义推理后处理基类。 |
| MxGstBase.h | MxTools/PluginToolkit/base | 定义插件初始化和注册功能的相关基础数据结构和方法 |
| MxpiBufferDump.h | MxTools/PluginToolkit/base | 定义插件数据下载类。 |
| MxPluginBase.h | MxTools/PluginToolkit/base | 定义插件基类。 |
| MxPluginGenerator.h | MxTools/PluginToolkit/base | 定义插件生成和注册宏定义。 |
| MxpiBufferManager.h | MxTools/PluginToolkit/buffer | 定义用于创建自定义插件时插件数据管理。 |
| MxpiMetadataManager.h | MxTools/PluginToolkit/metadata | 定义用于创建自定义插件时插件元数据管理。 |
| MxpiDataTypeConverter.h | MxTools/PluginToolkit/MxpiDataTypeWrapper | 定义模型后处理使用的数据结构转换为protobuf数据结构功能。 |
| MxpiDataTypeDeleter.h | MxTools/PluginToolkit/MxpiDataTypeWrapper | 定义智能指针删除器。 |
| MxImagePostProcessorBase.h | MxTools/PluginToolkit/PostProcessPluginBases | 定义图像后处理基类。 |
| MxModelPostProcessorBase.h | MxTools/PluginToolkit/PostProcessPluginBases | 定义模型后处理基类。 |
| MxpiDataType.pb.h | MxTools/Proto | 由Google Protobuf根据message数据结构自动生成,原型请参见Google Protobuf数据结构定义文件(MxpiDataType.proto)。 |
| MxpiDataTypeConverter.h | MxTools/Proto | 定义模型后处理使用的数据结构转换为protobuf数据结构功能。 |
| MxpiDataTypeDeleter.h | MxTools/Proto | 定义智能指针删除器。 |
| MxpiDumpData.pb.h | MxTools/Proto | 由Google Protobuf根据message数据结构自动生成,原型请参见Google Protobuf数据结构定义文件(MxpiDumpData.proto)。 |
| MxpiOSDType.pb.h | MxTools/Proto | 由Google Protobuf根据message数据结构自动生成,原型请参见OSD Protobuf 数据结构定义文件(MxpiOSDType.proto)。 |
流程管理
MxStreamManager
类说明
该类用于推理流管理。
| 参数名 | 数据类型 | 参数说明 |
|---|---|---|
| rotateTimeFlag_ | std::atomic<bool> | 日志按时间转储开关,默认值为true。 |
| rotateNumberFlag_ | std::atomic<bool> | 日志按数量转储开关,默认值为true。 |
| dynamicFlag_ | std::atomic<bool> | 日志按配置文件配置开关,默认值为true。 |
| performanceStatisticsFlag_ | std::atomic<bool> | 性能统计日志开关,默认值为true。 |
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CreateMultipleStreams
根据指定的配置创建多个Stream,需与DestroyAllStreams搭配使用。
请勿在一个进程中重复调用CreateMultipleStreams和DestroyAllStreams。
APP_ERROR MxStreamManager::CreateMultipleStreams (const std::string& streamsConfig) ;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamsConfig | 输入 | pipeline配置文件内容。pipeline字符串长度限制10M。子pipeline数量限制最大256个,单个pipeline中,插件及pipeline配置项的个数限制最大5120个。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CreateMultipleStreamsFromFile
根据指定的配置文件创建多个Stream。需与DestroyAllStreams搭配使用。
请勿在一个进程中重复调用CreateMultipleStreamsFromFile和DestroyAllStreams。
APP_ERROR MxStreamManager::CreateMultipleStreamsFromFile(const std::string& streamsFilePath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamsFilePath | 输入 | pipeline配置文件。pipeline字符串长度限制10M。子pipeline数量限制最大256个,单个pipeline中,插件及pipeline配置项的个数限制最大5120个。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DestroyAllStreams
销毁所有的流数据。该接口会销毁GStreamer创建的流,同时销毁底层芯片资源,单个Stream进程内只能调用一次(注意与StopStream接口区别使用)。
APP_ERROR MxStreamManager::DestroyAllStreams();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetMultiResultWithUniqueId
获得Stream上的多个输出元件的结果(appsink)。阻塞式,不同uniqueId支持多线程并发,支持多输出。使用uniqueId确保多线程场景下能正确获取结果。
该接口需要与SendMultiDataWithUniqueId接口配套使用,否则会有数据堆积的风险。
std::vector<MxstDataOutput*> MxStreamManager::GetMultiResultWithUniqueId(const std::string& streamName, uint64_t uniqueId, unsigned int timeOutInMs = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| uniqueId | 输入 | 发送数据后返回的编号(由SendMultiDataWithUniqueId接口返回),通过该编号获取对应的结果。 |
| timeOutInMs | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 数据结构 | 说明 |
|---|---|
| std::vector<MxstDataOutput*> | 推理服务输出数据MxstDataOutput,该内存需要进行delete操作。 |
GetMultiResultWithUniqueIdSP
获得Stream上的多个输出元件的结果(appsink)。阻塞式,不同uniqueId支持多线程并发,支持多输出。使用uniqueId确保多线程场景下能正确获取结果。
std::vector<std::shared_ptr<MxstDataOutput>> MxStreamManager::GetMultiResultWithUniqueIdSP(const std::string& streamName, uint64_t uniqueId, uint32_t timeOutMs = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| uniqueId | 输入 | 发送数据后返回的编号(由SendDataWithUniqueId接口返回),通过该编号获取对应的结果。 |
| timeOutMs | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 数据结构 | 说明 |
|---|---|
| std::vector<std::shared_ptr<MxstDataOutput>> | 推理服务输出数据MxstDataOutput。 |
GetPacket
模板函数,在指定的业务流中,向指定的元件索取数据。内存不足时函数内部会抛出异常。不支持多线程并发。
- 若指定元件为appsink插件,则接收数据为Packet<std::shared_ptr<MxstBufferOutput>>。
- 若指定其他元件,则获得相应的Meta数据,支持Packet<std::shared_ptr<MxVisionList>>,Packet<std::shared_ptr<MxTensorPackageList>>,Packet<std::shared_ptr<MxObjectList>>,Packet<std::shared_ptr<MxImageMaskList>>,Packet<std::shared_ptr<MxClassList>>,Packet<std::shared_ptr<MxPoseList>>,Packet<std::shared_ptr<MxTextObjectList>>,Packet<std::shared_ptr<MxTextsInfoList>>。
template <class T>
APP_ERROR MxStreamManager::GetPacket(Packet<T>& packet, const std::string& streamName, const std::string& outElement, const uint32_t& msTimeOut = DELAY_TIME)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| packet | 输出 | 指定元件输出的数据。 |
| streamName | 输入 | 流名称。 |
| outElement | 输入 | 元件名称。 |
| msTimeOut | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetProtobuf
获得Stream上的输出元件的protobuf结果给appsink,appsink阻塞式获取队列中的数据,若队列中数据为空,则阻塞,不支持多线程并发。
该接口需要与SendProtobuf接口配套使用,否则会有数据堆积的风险。
std::vector<MxstProtobufOut> MxStreamManager::GetProtobuf(const std::string& streamName, int outPluginId, const std::vector<std::string>& keyVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| outPluginId | 输入 | 目标输出插件ID,即appsrc元件的编号。 |
| keyVec | 输入 | 发送要获取的protobuf的key,通过该key获取对应的protobuf结果。内存由智能指针管理,不需要释放内存。 |
| 数据结构 | 说明 |
|---|---|
| std::vector<MxstProtobufOut> | 推理服务输出数据列表请参见MxstProtobufOut。 |
GetResult
获得Stream上的输出元件的结果(appsink)。阻塞式,不支持多线程并发。
该接口需要与SendData接口配套使用,否则会有数据堆积的风险。
MxstDataOutput* MxStreamManager::GetResult(const std::string& streamName, int outPluginId,const uint32_t& msTimeOut = DELAY_TIME);
MxstBufferAndMetadataOutput MxStreamManager::GetResult(const std::string& streamName, const std::string& elementName,const std::vector<std::string>& dataSourceVec, const uint32_t& msTimeOut = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| outPluginId | 输入 | 流上的输出插件ID,即appsink元件的编号。 |
| msTimeOut | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| elementName | 输入 | 流上的输出元件名称。 |
| dataSourceVec | 输入 | 元数据对应的dataSource,用于获取指定元数据。 |
| 数据结构 | 说明 |
|---|---|
| MxstDataOutput | 推理服务输出数据MxstDataOutput,该内存需要进行delete操作。 |
| MxstBufferAndMetadataOutput | 获取buffer和元数据MxstBufferAndMetadataOutput。 |
GetResultSP
获得Stream上的输出元件的结果(appsink)。阻塞式,不支持多线程并发。
std::shared_ptr<MxstDataOutput> MxStreamManager::GetResultSP(const std::string& streamName, int outPluginId,const uint32_t& msTimeOut = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| outPluginId | 输入 | 流上的输出插件ID,即appsink元件的编号。 |
| msTimeOut | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 数据结构 | 说明 |
|---|---|
| std::shared_ptr<MxstDataOutput> | 推理服务输出数据请参见MxstDataOutput。 |
GetResultWithUniqueId
获得Stream上的输出元件的结果(appsink)。阻塞式,不同uniqueId支持多线程并发。
该接口需要与SendDataWithUniqueId接口配套使用,否则会有数据堆积的风险。
MxstDataOutput* MxStreamManager::GetResultWithUniqueId(const std::string& streamName, uint64_t uniqueId, unsigned int timeOutInMs = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| uniqueId | 输入 | 发送数据后返回的编号(由SendDataWithUniqueId接口返回),通过该编号获取对应的结果。 |
| timeOutInMs | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 数据结构 | 说明 |
|---|---|
| MxstDataOutput | 推理服务输出数据MxstDataOutput,该内存需要进行delete操作。 |
GetResultWithUniqueIdSP
获得Stream上的输出元件的结果(appsink)。阻塞式,不同uniqueId支持多线程并发。
std::shared_ptr<MxstDataOutput> MxStreamManager::GetResultWithUniqueIdSP(const std::string& streamName, uint64_t uniqueId, uint32_t timeOutMs = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| uniqueId | 输入 | 发送数据后返回的编号(由SendDataWithUniqueId接口返回),通过该编号获取对应的结果。 |
| timeOutMs | 输入 | 最长等待时间,单位毫秒,默认为3000ms(3秒)。 |
| 数据结构 | 说明 |
|---|---|
| std::shared_ptr<MxstDataOutput> | 推理服务输出数据请参见MxstDataOutput。 |
InitManager
初始化一个StreamManager。
APP_ERROR MxStreamManager::InitManager (
const std::vector<std::string>& argStrings = std::vector<std::string> ( ));
APP_ERROR MxStreamManager::InitManager (const MxBase::AppGlobalCfgExtra &globalCfgExtra,
const std::vector<std::string>& argStrings = std::vector<std::string>());
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| argStrings | 输入 | StreamManager初始化参数,当前为空。 |
| globalCfgExtra | 输入 | AppGlobalCfgExtra类型,应用全局配置。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxStreamManager
[!NOTICE] 如果使用堆申请内存方式创建MxStreamManager对象,在使用结束后,请务必释放MxStreamManager对象,否则会出现不可预知的错误。 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
该类用于对流程的基本管理:加载流程配置、创建流程、向流程上发送数据、获得执行结果。
MxStreamManager::MxStreamManager();
~MxStreamManager
~MxStreamManager类的默认析构函数。
MxStreamManager::~MxStreamManager();
SendData
向指定Stream上的输入元件发送数据(appsrc)。阻塞式,不支持多线程并发。
该接口需要与GetResult接口配套使用,否则会有数据堆积的风险。
APP_ERROR MxStreamManager::SendData(const std::string& streamName, int inPluginId, MxstDataInput& dataBuffer);
APP_ERROR MxStreamManager::SendData(const std::string& streamName, const std::string& elementName, MxstDataInput& dataBuffer);
APP_ERROR MxStreamManager::SendData(const std::string& streamName, const std::string& elementName, std::vector<MxstMetadataInput>& metadataVec, MxstBufferInput& bufferInput);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| inPluginId | 输入 | 目标输入插件ID,即appsrc元件的编号。(appsrc的编号指第几个appsrc元件。) |
| elementName | 输入 | 输入插件的名称,只支持appsrc当作输入插件。 |
| dataBuffer | 输入 | 待发送的数据MxstDataInput。dataBuffer.dataSize应等于待发送数据内存大小,且在[1, 4294967296]范围内,dataBuffer.dataPtr需要进行delete操作。 |
| metadataVec | 输入 | 发送的protobuf数据列表请参见MxstMetadataInput。 |
| bufferInput | 输入 | 待发送的数据,数据类型为MxstBufferInput。bufferInput.dataSize应该等于待发送数据内存大小,且在[1, 4294967296]范围内,bufferInput.dataPtr需要进行delete操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendDataWithUniqueId
向指定Stream上的输入元件发送数据(appsrc)。阻塞式,不同uniqueId支持多线程并发。
该接口需要与GetResultWithUniqueId接口配套使用,否则会有数据堆积的风险。
APP_ERROR MxStreamManager::SendDataWithUniqueId(const std::string& streamName, const std::string& elementName, MxstDataInput& dataBuffer, uint64_t& uniqueId);
APP_ERROR MxStreamManager::SendDataWithUniqueId(const std::string& streamName, int inPluginId, MxstDataInput& dataBuffer, uint64_t& uniqueId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| elementName | 输入 | 输入插件的名称,只支持appsrc当作输入插件。 |
| inPluginId | 输入 | 目标输入插件ID,即appsrc元件的编号。(appsrc的编号指第几个appsrc元件) |
| dataBuffer | 输入 | 待发送的数据,dataBuffer.dataSize应该等于待发送数据内存大小,且在[1, 4294967296]范围内,dataBuffer.dataPtr需要进行delete操作。 |
| uniqueId | 输出 | 发送数据后返回的编号,通过该编号获取对应的结果(调用GetResultWithUniqueId)。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendMultiDataWithUniqueId
向指定Stream上的输入元件发送数据(appsrc)。阻塞式,不同uniqueId支持多线程并发,支持多输入。
该接口需要与GetMultiResultWithUniqueId接口配套使用,否则会有数据堆积的风险。
APP_ERROR MxStreamManager::SendMultiDataWithUniqueId(const std::string& streamName, std::vector<int> inPluginIdVec, std::vector<MxstDataInput>& dataBufferVec, uint64_t& uniqueId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| inPluginIdVec | 输入 | 目标输入插件ID,即appsrc元件的编号。(appsrc的编号指第几个appsrc元件) |
| dataBufferVec | 输入 | 待发送的数据,dataBuffer.dataSize应该等于待发送数据内存大小,且在[1, 4294967296]范围内,dataBuffer.dataPtr需要进行delete操作。 |
| uniqueId | 输出 | 发送数据后返回的编号,通过该编号获取对应的结果(调用GetMultiResultWithUniqueId)。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendPacket
模板函数,向指定Stream上的输入元件发送数据(appsrc)。内存不足时函数内部会抛出异常。不支持多线程并发。
目前支持输入的数据包括:
- Packet<MxstDataInput>
- Packet<MxVisionList>
- Packet<MxTensorPackageList>
- Packet<MxObjectList>
- Packet<MxClassList>
- Packet<MxImageMaskList>
- Packet<MxPoseList>
- Packet<MxTextObjectList>
- Packet<MxTextsInfoList>
template <class T>
APP_ERROR MxStreamManager::SendPacket(Packet<T>& packet, const std::string& streamName, const std::string& elementName)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| packet | 输入 | 输入的Packet数据。 |
| streamName | 输入 | 流名称。 |
| elementName | 输入 | 元件名称。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendProtobuf
向指定Stream上的输入元件发送protobuf数据给appsrc原生插件,不支持多线程并发。
该接口需要与GetProtobuf接口配套使用,否则会有数据堆积的风险。
APP_ERROR MxStreamManager::SendProtobuf(const std::string& streamName, int inPluginId, std::vector<MxstProtobufIn>& protoVec);
APP_ERROR MxStreamManager::SendProtobuf(const std::string& streamName, const std::string& elementName, std::vector<MxstProtobufIn>& protoVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| inPluginId | 输入 | 目标输入插件ID,即appsrc元件的编号。 |
| elementName | 输入 | 输入插件的名称,只支持appsrc当作输入插件。 |
| protoVec | 输入 | 发送的protobuf数据列表请参见MxstProtobufIn。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetElementProperty
设置元件属性,目前支持设置的元件有mxpi_channelselector、mxpi_channelosdcoordsconverter、mxpi_channelimagesstitcher、mxpi_rtspsrc、mxpi_object2osdinstances、mxpi_class2osdinstances、mxpi_bufferstablizer、mxpi_skipframe。
APP_ERROR MxStreamManager::SetElementProperty(const std::string& streamName, const std::string& elementName,const std::string& propertyName,const std::string& propertyValue);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| elementName | 输入 | 元件的名称。 |
| propertyName | 输入 | 元件的属性。 |
| propertyValue | 输入 | 元件的属性值。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
StopStream
销毁指定的stream对象。
在销毁流的过程中会直接停止所有插件的运行,因此需要用户确保已完成文件或结果的保存。
APP_ERROR MxStreamManager::StopStream(const std::string& streamName);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| streamName | 输入 | 流的名称。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Packet
类说明
数据模板类,作为Stream流中的数据承载体,可以作为Stream流的输入数据和接收的数据。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
GetItem
从Packet中获取真实的模板所承载的数据。
T GetItem()
| 参数名 | 说明 |
|---|---|
| T | Packet数据模板所承载的真实数据的数据类型。 |
Packet
Packet的构造函数。
Packet() = default;
Packet(T item);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| item | 输入 | Packet数据模板所承载的真实数据。 |
SetItem
支持设置Packet所要承载的数据。
void SetItem(T& item)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| item | 输入 | Packet数据模板所承载的真实数据。 |
PluginNode
类说明
插件节点类,用于创建流程所需的插件。
[!NOTICE] 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Factory
获取插件工厂名。
std::string PluginNode::Factory() const;
| 数据结构 | 说明 |
|---|---|
| std::string | 创建插件的工厂名称。 |
operator()
设置前向插件节点。
PluginNode& PluginNode::operator()(PluginNode& preNode);
template<typename... Args>
PluginNode& PluginNode::operator()(PluginNode& preNode, Args&... args)
{
operator()(preNode);
operator()(args...);
return *this;
}
PluginNode& PluginNode::operator()(std::vector<PluginNode>& preNodeList);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| preNode | 输入 | 前向插件类对象。 |
| args | 输入 | (可选)根据用户需要输入。 |
| preNodeList | 输入 | 前向插件类对象列表。 |
| 数据结构 | 说明 |
|---|---|
| PluginNode | 返回插件节点本身。 |
PluginId
获取由系统自动生成的插件ID。
int PluginNode::PluginId() const;
| 数据结构 | 说明 |
|---|---|
| int | 插件ID。 |
PluginName
获取插件名。
std::string PluginNode::PluginName() const;
| 数据结构 | 说明 |
|---|---|
| std::string | 插件名。 |
PluginNode
插件节点构造函数。
PluginNode::PluginNode(const std::string& factory, const std::map<std::string, std::string>& props = std::map<std::string, std::string>(), const std::string& name = "");
PluginNode::PluginNode(const PluginNode &);
PluginNode::PluginNode(const PluginNode &&);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| factory | 输入 | 创建插件的工厂名称。 |
| props | 输入 | 插件属性配置项,默认为空。 |
| name | 输入 | 插件名。默认为空时,会根据factory自动生成插件名。 |
| PluginNode | 输入 | 拷贝构造入参。 |
~PluginNode
PluginNode类的默认析构函数。
PluginNode::~PluginNode();
Properties
获取插件属性配置项。
std::map<std::string, std::string> PluginNode::Properties() const;
| 数据结构 | 说明 |
|---|---|
| std::map<std::string, std::string> | 属性配置项。 |
ToJson
插件对象转JSON对象。
std::string PluginNode::ToJson() const;
| 数据结构 | 说明 |
|---|---|
| std::string | 插件JSON对象字符串。 |
FunctionalStream
类说明
该类为多输入多输出流程的实体类。操作方法:构建流程、继承Stream类。
可使用Stream类公共方法。
[!NOTICE]
- 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
- 在析构销毁流的过程中会直接停止所有插件的运行,因此需要用户确保已完成文件或结果的保存。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Build
根据FunctionalStream构造函数中的inputs和outputs,构建多输入多输出流程。构建流程时,会根据插件的上下游关系进行递归操作,最大递归次数为4096,单个pipeline中,插件及pipeline配置项的个数限制最大5120个。
构建请合理设置插件及其输入输出。
需与Stream::Stop搭配使用,请勿在一个进程中重复调用Build与Stop。
APP_ERROR FunctionalStream::Build();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
FunctionalStream
构造函数,创建多输入多输出流程对象。
FunctionalStream::FunctionalStream(const std::string& name, const std::vector<PluginNode>& inputs, const std::vector<PluginNode>& outputs);
FunctionalStream::FunctionalStream(const std::string& name);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| name | 输入 | 流程名称。 |
| inputs | 输入 | 多输入插件列表。 |
| outputs | 输出 | 多输出插件列表。 |
~FunctionalStream
FunctionalStream类的默认析构函数。
FunctionalStream::~FunctionalStream();
SequentialStream
类说明
该类为单向顺序流程的实体类。操作方法:添加插件、构建流程、继承Stream类。
可使用Stream类公共方法。
[!NOTICE]
- 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
- 在析构销毁流的过程中会直接停止所有插件的运行,因此需要用户确保已完成文件或结果的保存。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Add
添加插件。
APP_ERROR SequentialStream::Add(const PluginNode &pluginNode);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| pluginNode | 输入 | 插件对象。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Build
根据Add方法顺序添加的插件,构建单向顺序流程。
需与Stream::Stop搭配使用,请勿在一个进程中重复调用Build与Stop。
单个pipeline中,插件及pipeline配置项的个数限制最大5120个。
APP_ERROR SequentialStream::Build();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SequentialStream
构造函数,创建单向顺序流程对象。
SequentialStream::SequentialStream(const std::string &name);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| name | 输入 | 流程名称。 |
~SequentialStream
SequentialStream类的默认析构函数。
SequentialStream::~SequentialStream();
Stream
类说明
该类为流程的抽象类。操作方法:设置DeviceId、设置插件属性值、获取流程的JSON数据、向流程上发送数据、获得执行结果。
[!NOTICE]
- 如果使用堆申请内存方式创建MxStreamManager对象,在使用结束后,请务必释放MxStreamManager对象,否则会出现不可预知的错误。
- 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
- 在析构销毁流的过程中会直接停止所有插件的运行,因此需要用户确保已完成文件或结果的保存。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Build
为纯虚函数,由其子类SequentialStream和FunctionalStream实现。
virtual APP_ERROR Stream::Build();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetMultiResultWithUniqueId
获得Stream上的多个输出元件的结果(appsink)。阻塞式,支持多线程并发,支持多输出。
std::vector<MxstDataOutput*> Stream::GetMultiResultWithUniqueId(uint64_t uniqueId, uint32_t timeOutMs = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| uniqueId | 输入 | 发送数据后返回的编号,通过该编号获取对应的结果。 |
| timeOutMs | 输入 | 等待结果的时间,默认为3s。 |
| 数据结构 | 说明 |
|---|---|
| std::vector<MxstDataOutput*> | 推理服务输出数据MxstDataOutput,该返回指针指向的内存需要通过delete命令删除。 |
GetResult
向指定的输出插件(appsink)获取结果。
MxstBufferAndMetadataOutput Stream::GetResult(const std::string& elementName, const std::vector<std::string>& dataSourceVec, const uint32_t& msTimeOut = DELAY_TIME);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| elementName | 输入 | 输入appsink输出插件名称。 |
| dataSourceVec | 输入 | 元数据对应的dataSource,用于获取指定元数据。 |
| msTimeOut | 输入 | 超时时间(单位ms),默认为3s。 |
| 数据结构 | 说明 |
|---|---|
| MxstBufferAndMetadataOutput | 获取buffer和元数据。 |
SendData
向指定的输入插件(appsrc)发送数据。
APP_ERROR Stream::SendData(const std::string& elementName, std::vector<MxstMetadataInput>& metadataVec, MxstBufferInput& dataBuffer);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| elementName | 输入 | appsrc输入插件名称。 |
| metadataVec | 输入 | 发送的protobuf数据列表见MxstMetadataInput。 |
| dataBuffer | 输入 | 待发送的数据,数据类型为MxstBufferInput,bufferInput.dataSize应该等于待发送数据内存大小,且在[1, 4294967296]范围内,bufferInput.dataPtr需要delete。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendMultiDataWithUniqueId
向指定的多个输入插件(appsrc0,appsrc1, ...)发送数据。
APP_ERROR Stream::SendMultiDataWithUniqueId(std::vector<int> inPluginIdVec, std::vector<MxstDataInput>& dataInputVec, uint64_t& uniqueId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inPluginIdVec | 输入 | 目标输入插件ID,即appsrc元件的编号。(appsrc的编号指第几个appsrc元件) |
| dataInputVec | 输入 | 待发送的数据,dataBuffer.dataSize应该等于待发送数据内存大小,且在[1, 4294967296]范围内,dataBuffer.dataPtr需要delete。 |
| uniqueId | 输出 | 发送数据后返回的编号,通过该编号获取对应的结果。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetDeviceId
设置DeviceId。
void Stream::SetDeviceId(const std::string& deviceId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| deviceId | 输入 | 待设定的设备ID。 |
SetElementProperty
设置插件属性值。
APP_ERROR Stream::SetElementProperty(const std::string& elementName, const std::string& propertyName, const std::string& propertyValue);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| elementName | 输入 | 插件名称。 |
| propertyName | 输入 | 属性名称。 |
| propertyValue | 输入 | 属性值。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Start
启动流程
APP_ERROR Stream::Start();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Stop
停止流程。
在停止流的过程中会直接停止所有插件的运行,因此需要用户确保已完成文件或结果的保存。
APP_ERROR Stream::Stop();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Stream
构造函数,流程对象基类。
explicit Stream::Stream(const std::string& pipelinePath);
Stream::Stream(const std::string& pipelinePath, const std::string& streamName);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| pipelinePath | 输入 | 流程配置文件路径。 |
| streamName | 输入 | 流程对象名。 |
~Stream
Stream类的默认析构函数。
virtual Stream::~Stream();
ToJson
获取流程的JSON数据。
std::string Stream::ToJson() const;
| 数据结构 | 说明 |
|---|---|
| std::string | 流程的JSON数据字符串。 |
DataHelper
类说明
该类用于从本地读取文件和图像数据。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
ReadFile
读取文件内容。
static std::string DataHelper::ReadFile(const std::string& filePath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| filePath | 输入 | 文件路径。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 文件内容。 |
ReadImage
图片文件转存至MxstBufferInput对象。读取图片文件的大小范围为[1B, 4GB],默认为1GB,其中最大值可以通过Vision SDK的配置文件“sdk.conf”里面的“malloc_max_data_size”字段进行配置,“malloc_max_data_size”字段代表了Vision SDK支持分配的内存大小的最大值,请根据实际情况进行合理设置。读取成功后,获取的数据需要用户手动进行free释放。
static MxstBufferInput DataHelper::ReadImage(const std::string& imagePath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| imagePath | 输入 | 图片文件路径。 |
| 数据结构 | 说明 |
|---|---|
| MxstBufferInput | Stream对象的输入数据结构。 |
插件开发
MxPluginBase
类说明
插件基类,用户开发自定义插件需要继承该类,实现以下方法。
[!NOTICE] 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
公共参数
| 参数名 | 数据类型 | 参数说明 |
|---|---|---|
| pluginName_ | string | 插件名称 |
| streamName_ | string | 流名称 |
| elementName_ | string | 插件元素名称 |
| dataSource_ | string | 数据源,默认值为auto。 |
| srcPadNum_ | size_t | 输入端口数量 |
| sinkPadNum_ | size_t | 输出端口数量 |
| deviceId_ | int | 设备ID |
| status_ | int | 同步异步标识,默认值为0(async)。 |
| dataSourceKeys_ | std::vector<std::string> | 数据源键 |
| outputDataKeys_ | std::vector<std::string> | 输出数据键 |
| elementDynamicImageSize_ | std::map<std::string, std::vector<ImageSize>> | 模型动态输入大小 |
| useDevice_ | bool | 是否使用NPU开关,默认值为true。 |
ConfigParamLock
修改插件属性前,加锁。
void MxPluginBase::ConfigParamLock();
ConfigParamUnlock
修改插件属性后,解锁。
void MxPluginBase::ConfigParamUnlock();
DeInit
资源释放接口。用户自定义插件需要重写该方法,并在该方法中释放自己申请的资源。与Init配套使用。
virtual APP_ERROR MxPluginBase::DeInit() = 0;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxPluginBase
构造函数。
MxPluginBase::MxPluginBase();
MxPluginBase::MxPluginBase(const MxPluginBase &) = delete;
MxPluginBase::MxPluginBase(const MxPluginBase &&) = delete;
~MxPluginBase
MxPluginBase类的默认析构函数。
virtual MxPluginBase::~MxPluginBase();
operator=
运算符重载。
MxPluginBase& operator=(const MxPluginBase &) = delete;
MxPluginBase& operator=(const MxPluginBase &&) = delete;
Init
插件初始化方法。用户自定义插件需要重写该方法,在该方法中申请资源。与DeInit配套使用。
[!NOTICE] 若初始化失败,请勿继续调用后续的成员函数。
virtual APP_ERROR MxPluginBase::Init(std::map<std::string, std::shared_ptr<void>>& configParamMap) = 0;
| 参数名 | 说明 |
|---|---|
| configParamMap | 配置参数,串流后,配置文件的参数将通过该变量传入。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Process
插件执行方法。用户自定义插件需要重写该方法,并在该方法中实现插件的功能。
virtual APP_ERROR MxPluginBase::Process(std::vector<MxpiBuffer *>& mxpiBuffer) = 0;
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 上一个插件传入的数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DefineInputPorts
定义输入接口的数量和类型。
static MxpiPortInfo MxPluginBase::DefineInputPorts();
| 数据结构 | 说明 |
|---|---|
| MxpiPortInfo | 请参考MxpiPortInfo。 |
DefineOutputPorts
定义输出接口的数量和类型。
static MxpiPortInfo MxPluginBase::DefineOutputPorts();
| 数据结构 | 说明 |
|---|---|
| MxpiPortInfo | 请参考MxpiPortInfo。 |
DefineProperties
定义配置属性。
static std::vector<std::shared_ptr<void>> MxPluginBase::DefineProperties();
| 数据结构 | 说明 |
|---|---|
| ElementProperty | 请参考ElementProperty。 |
DestroyExtraBuffers
删除多输入端口插件中未被发送的多余buffer。
void MxPluginBase::DestroyExtraBuffers(std::vector<MxTools::MxpiBuffer *> &mxpiBuffer, size_t exceptPort);
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 上一个插件传入的数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| exceptPort | 除此端口索引以外的buffer都会被摧毁。 |
DoDump
获取buffer中指定数据。
std::string MxPluginBase::DoDump(MxTools::MxpiBuffer& mxpiBuffer, const std::vector<std::string>& filterKeys = std::vector<std::string>(),
const std::vector<std::string>& requiredKeys = std::vector<std::string>()) const;
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | buffer数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| filterKeys | 过滤指定key值数据。 |
| requiredKeys | 获取指定key值数据。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 从buffer中获取到的数据。 |
DoLoad
加载插件数据。(请用户不要使用)
SDK_AVAILABLE_FOR_IN MxTools::MxpiBuffer* MxPluginBase::DoLoad(MxTools::MxpiBuffer& mxpiBuffer);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| mxpiBuffer | 输入 | 所要加载的数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
GenerateDynamicInputPortsInfo
生成动态输入端口的信息(包括端口数量和端口格式)。动态端口根据配置文件中用户指定的数量动态创建,每个动态端口的格式相同。
static void MxPluginBase::GenerateDynamicInputPortsInfo(const std::vector<std::vector<std::string>>& portsDesc, MxpiPortInfo& inputPortInfo);
| 参数名 | 说明 |
|---|---|
| portsDesc | 端口配置信息,只允许注册一种类型的动态端口。例如{{"metadata/class"}}表示注册一个类型输入端口,端口支持“class”格式。vector容器的size范围为:[1, 1024]。 |
| inputPortInfo | 输出参数,包含输入端口信息。inputPortInfo.portNum范围为:[0, 1024]。 |
GenerateDynamicOutputPortsInfo
生成作为输出端口的动态端口信息。
static void MxPluginBase::GenerateDynamicOutputPortsInfo(const std::vector<std::vector<std::string>>& portsDesc, MxpiPortInfo& outputPortInfo);
| 参数名 | 说明 |
|---|---|
| portsDesc | 端口配置信息,只允许注册一种类型的动态端口。例如{{"image/jpeg"}}表示注册一个类型输出端口,端口支持“jpeg”格式。 |
| outputPortInfo | 输出参数,包含输出端口信息。 |
GenerateDynamicPortsInfo
当前为内部使用接口,请用户不要使用。
GenerateStaticInputPortsInfo
生成静态输入端口的信息(包括端口数量和端口格式)。元件创建时静态端口自动创建并且端口必须连接,否则Stream创建失败。
static void MxPluginBase::GenerateStaticInputPortsInfo(const std::vector<std::vector<std::string>>& portsDesc, MxpiPortInfo& inputPortInfo);
| 参数名 | 说明 |
|---|---|
| portsDesc | 端口配置信息。例如{{"metadata/object","metadata/class"},{"image/jpeg"}}表示注册两个输入端口,第一个端口支持两种格式“object”和“class”,第二个端口支持“jpeg”格式。 |
| inputPortInfo | 输出参数,包含输入端口信息。 |
GenerateStaticOutputPortsInfo
生成静态输出端口的信息(包括端口数量和端口格式)。元件创建时静态端口自动创建并且端口必须连接,否则Stream创建失败。
static void MxPluginBase::GenerateStaticOutputPortsInfo(const std::vector<std::vector<std::string>>& portsDesc, MxpiPortInfo& outputPortInfo);
| 参数名 | 说明 |
|---|---|
| portsDesc | 端口配置信息。例如{{"metadata/object","metadata/class"},{"metadata/attribute"}}表示注册两个输出端口,第一个端口支持两种格式“object”和“class”,第二个端口支持“attribute”格式。 |
| outputPortInfo | 输出参数,包含输出端口信息。 |
GenerateStaticPortsInfo
生成静态端口信息,该端口可以是输入或输出端口
static void MxPluginBase::GenerateStaticPortsInfo(PortDirection direction, const std::vector<std::vector<std::string>>& portsDesc, MxpiPortInfo& portInfo);
| 参数名 | 说明 |
|---|---|
| direction | 声明输入或输出端口。详见PortDirection。 |
| portsDesc | 端口描述信息。vector容器的size范围为:[1, 1024]。 |
| portInfo | 端口信息,请参见MxpiPortInfo。portInfo.portNum范围为:[0, 1024]。 |
GetElementNameWithObjectAddr
获得对象地址以及元素名称。
SDK_AVAILABLE_FOR_IN std::string MxPluginBase::GetElementNameWithObjectAddr();
| 数据结构 | 说明 |
|---|---|
| std::string | 对象地址以及元素名称的字符串。 |
RunProcess
调用Process函数前的通用步骤。检查上游传递的buffer是否有错误信息,以及元数据是否存在,如果有错误信息或者元数据不存在时,跳过执行此插件的Process直接透传上游buffer给下游插件。目前需要分别通过在Init时设置类成员“doPreErrorCheck_”和“doPreMetaDataCheck_”为“true”开启。
virtual APP_ERROR MxPluginBase::RunProcess(std::vector<MxpiBuffer*>& mxpiBuffer);
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 上一个插件传入的数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendData
数据发送方法。可以在Process中调用该方法,将数据发送给下一个插件。
APP_ERROR MxPluginBase::SendData(int index, MxpiBuffer& mxpiBuffer);
| 参数名 | 说明 |
|---|---|
| index | 指定输出端口编号。 |
| mxpiBuffer | 发送给下一个插件的数据。该数据结构的成员数据需合理设置(如GstBuffer),请勿直接手动设置内存数据。 |
[!NOTICE] mxpiBuffer必须使用堆内存(且必须用new申请内存),否则会导致应用崩溃。该接口会释放mxpiBuffer对应的堆内存,接口返回后用户无需释放内存,否则会导致应用崩溃。
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendDataToAllPorts
数据发送方法。将数据传送给所有输出端口。(请用户不要使用)
SDK_AVAILABLE_FOR_IN APP_ERROR MxPluginBase::SendDataToAllPorts (MxpiBuffer& mxpiBuffer);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| mxpiBuffer | 输入 | 所要传送的数据。该数据结构的成员数据需合理设置(如GstBuffer),请勿直接手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SendMxpiErrorInfo
向下游插件传递错误信息。
APP_ERROR MxPluginBase::SendMxpiErrorInfo(MxpiBuffer &buffer, const std::string& pluginName, APP_ERROR errorCode, const std::string& errorText);
| 参数名 | 说明 |
|---|---|
| buffer | buffer数据。 |
| pluginName | 插件名称。 |
| errorCode | 错误码。 |
| errorText | 错误信息。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 获取到的数据。 |
SetElementInstance
设置插件对象。
void MxPluginBase::SetElementInstance(void* elementInstance);
| 参数名 | 说明 |
|---|---|
| elementInstance | 传入的插件对象。 |
SetOutputDataKeys
设置插件对外输出的Metadata key。
virtual APP_ERROR MxPluginBase::SetOutputDataKeys();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxpiBufferManager
类说明
定义插件的Buffer管理器,用于创建自定义插件时使用。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
AddData
在Buffer上挂载Metadata。为内部使用接口,请用户不要使用。
static APP_ERROR MxpiBufferManager::AddData(const InputParam& inputParam, void* buffer);
| 参数名 | 说明 |
|---|---|
| inputParam | Buffer接口定义的数据结构,请参考InputParam。inputParam.dataSize取值范围为[1, 4294967296]。 |
| buffer | void*类型的数据结构。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CreateDeviceBuffer
用于创建MxpiBuffer(插件之间传输的数据结构),接口根据用户指定内存大小和DeviceId,申请相应大小的Device内存。将Device内存数据、内存大小、DeviceId放在Metadata中。
static MxpiBuffer* MxpiBufferManager::CreateDeviceBuffer(const InputParam& inputParam);
| 参数名 | 说明 |
|---|---|
| inputParam | Buffer接口定义的数据结构,请参考InputParam。inputParam结构体中的key不能传入保留字段“ReserveMetadataGraph”、“ReservedVisionList”和“ErrorInfo”。 |
| 数据结构 | 说明 |
|---|---|
| MxpiBuffer* | 插件之间传递的数据结构,请参考MxpiBuffer。 |
CreateDeviceBufferAndCopyData
用于创建MxpiBuffer(插件之间传输的数据结构),接口根据用户指定内存大小和DeviceId,申请相应大小的Device内存,将用户传入的内存数据拷贝到Device内存并将Device内存数据、内存大小、DeviceId放在Metadata中。
static MxpiBuffer* MxpiBufferManager::CreateDeviceBufferAndCopyData(const InputParam& inputParam);
| 参数名 | 说明 |
|---|---|
| inputParam | Buffer接口定义的数据结构,请参考InputParam。inputParam.dataSize取值范围为[1, 4294967296]。inputParam结构体中的key不能传入保留字段“ReserveMetadataGraph”、“ReservedVisionList”和“ErrorInfo”。 |
| 数据结构 | 说明 |
|---|---|
| MxpiBuffer* | 插件之间传递的数据结构,请参考MxpiBuffer。 |
CreateDeviceBufferWithMemory
用于创建MxpiBuffer(插件之间传输的数据结构),用户传入内存地址,内存大小、DeviceId和Device type。将Device内存数据、内存大小、DeviceId,Device type放在Metadata中。
static MxpiBuffer* MxpiBufferManager::CreateDeviceBufferWithMemory(const InputParam& inputParam);
| 参数名 | 说明 |
|---|---|
| inputParam | Buffer接口定义的数据结构,请参考InputParam。inputParam.dataSize取值范围为[1, 4294967296]。inputParam结构体中的key不能传入保留字段“ReserveMetadataGraph”、“ReservedVisionList”和“ErrorInfo”。 |
| 数据结构 | 说明 |
|---|---|
| MxpiBuffer* | 插件之间传递的数据结构,请参考MxpiBuffer。 |
CreateHostBuffer
用于创建MxpiBuffer(插件之间传输的数据结构),接口根据用户指定内存大小,申请相应大小的Host内存。将Host内存数据、内存大小放在Metadata中。
static MxpiBuffer* MxpiBufferManager::CreateHostBuffer(const InputParam& inputParam);
| 参数名 | 说明 |
|---|---|
| inputParam | Buffer接口定义的数据结构,请参考InputParam。inputParam.dataSize取值范围为[1, 4294967296]。inputParam结构体中的key不能传入保留字段“ReserveMetadataGraph”、“ReservedVisionList”和“ErrorInfo”。 |
| 数据结构 | 说明 |
|---|---|
| MxpiBuffer* | 插件之间传递的数据结构,请参考MxpiBuffer。 |
CreateHostBufferAndCopyData
用于创建MxpiBuffer(插件之间传输的数据结构),接口根据用户指定内存大小,申请相应大小的Host内存,将用户传入的内存数据拷贝到Host内存并将Host内存数据、内存大小放在Metadata中。
static MxpiBuffer* MxpiBufferManager::CreateHostBufferAndCopyData(const InputParam& inputParam);
| 参数名 | 说明 |
|---|---|
| inputParam | Buffer接口定义的数据结构,请参考InputParam。inputParam.dataSize取值范围为[1, 4294967296]。inputParam结构体中的key不能传入保留字段“ReserveMetadataGraph”、“ReservedVisionList”和“ErrorInfo”。inputParam.dataSize应小于inputParam.ptrData的内存大小,否则存在内存越界。 |
| 数据结构 | 说明 |
|---|---|
| MxpiBuffer* | 插件之间传递的数据结构,请参考MxpiBuffer。 |
CreateHostBufferWithMemory
用于创建一个buffer,该buffer带有已存在的内存,给定的数据规模以及设备ID和类型。(请用户不要使用)
SDK_AVAILABLE_FOR_IN static MxpiBuffer* MxpiBufferManager::CreateHostBufferWithMemory(const InputParam& inputParam);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputParam | 输入 | Buffer接口定义的数据结构,请参考InputParam。inputParam.dataSize取值范围为[1, 4294967296]。inputParam结构体中的key不能传入保留字段“ReserveMetadataGraph”、“ReservedVisionList”和“ErrorInfo”。 |
| 数据结构 | 说明 |
|---|---|
| MxpiBuffer* | 插件之间传递的数据结构,请参考MxpiBuffer。 |
DestroyBuffer
销毁MxpiBuffer。
static APP_ERROR MxpiBufferManager::DestroyBuffer(MxpiBuffer* mxpiBuffer);
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 插件之间传递的数据结构,请参考MxpiBuffer。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetDeviceDataInfo
用于从MxpiBuffer中获取Device内存相关信息。
static MxpiFrame MxpiBufferManager::GetDeviceDataInfo(MxpiBuffer& mxpiBuffer);
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 插件之间传递的数据结构,请参考MxpiBuffer。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| MxpiFrame | 用于存放视频和图像帧,包含帧信息,数据信息,请参考表1。 |
GetHostDataInfo
用于从MxpiBuffer中获取Host内存相关信息。
static MxpiFrame MxpiBufferManager::GetHostDataInfo(MxpiBuffer& mxpiBuffer);
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 插件之间传递的数据结构,请参考MxpiBuffer。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| MxpiFrame | 用于存放视频和图像帧,包含帧信息,数据信息,请参考表1。 |
MxpiBufferManager
类构造函数,创建MxpiBufferManager对象(插件Buffer管理器)。
MxpiBufferManager::MxpiBufferManager();
~MxpiBufferManager
MxpiBufferManager类的默认析构函数。
MxpiBufferManager::~MxpiBufferManager();
MxpiMetadataManager
类说明
定义插件的Metadata管理器,用于存放对Buffer或Metadata操作后的数据。
[!NOTICE] 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
AddErrorInfo
以插件名为键将插件的错误信息加到Metadata中。
APP_ERROR MxpiMetadataManager::AddErrorInfo(const std::string pluginName, MxpiErrorInfo errorInfo);
| 参数名 | 说明 |
|---|---|
| pluginName | 插件的名称。 |
| errorInfo | 插件的错误信息,请参考MxpiErrorInfo。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
AddMetadata
往MxpiBuffer中挂载Metadata,实现插件之间的结构化数据传递。
APP_ERROR MxpiMetadataManager::AddMetadata(const std::string& key, std::shared_ptr<void> metadata);
| 参数名 | 说明 |
|---|---|
| key | 要挂载到Buffer上的Metadata的键名。 |
| metadata | 要挂载到Buffer上的Metadata数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
AddProtoMetadata
往MxpiBuffer中挂载Proto Metadata,将数据添加到序列化插件中。
[!NOTICE] 调用此接口前请确保metadata指针指向的内容已经准备完毕,不再修改。
APP_ERROR MxpiMetadataManager::AddProtoMetadata(const std::string& key, std::shared_ptr<void> metadata);
| 参数名 | 说明 |
|---|---|
| key | 要挂载到Buffer上的Proto Metadata的键名。“ReserveMetadataGraph”和“ReservedVisionList”为保留字段,不允许传入。 |
| metadata | 要挂载到Buffer上的Proto Metadata数据。metadata必须是protobuf message类型的智能指针,否则可能导致程序异常。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CopyMetadata
将Buffer中全部Metadata数据拷贝并覆盖到targetMxpiBuffer中。
APP_ERROR MxpiMetadataManager::CopyMetadata(MxpiBuffer& targetMxpiBuffer);
| 参数名 | 说明 |
|---|---|
| targetMxpiBuffer | 保存拷贝数据的MxpiBuffer,请参考MxpiBuffer。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetAllMetaData
从MxpiBuffer获取所有的Metadata。
std::map<std::string, std::shared_ptr<void>> MxpiMetadataManager::GetAllMetaData();
| 数据结构 | 说明 |
|---|---|
| std::map<std::string, std::shared_ptr<void>> | Metadata数据的智能指针map。 |
GetErrorInfo
从Metadata中获取所有插件的错误信息。
std::shared_ptr<std::map<std::string, MxpiErrorInfo>> MxpiMetadataManager::GetErrorInfo();
| 数据结构 | 说明 |
|---|---|
| std::shared_ptr<std::map<std::string, MxpiErrorInfo>> | 以map的形式返回所有插件名的错误码信息。 |
GetMetadata
从MxpiBuffer获取Key对应的Metadata。此方法需要配套插件开发用,不可单独调用。
std::shared_ptr<void> MxpiMetadataManager::GetMetadata(const std::string& key);
| 参数名 | 说明 |
|---|---|
| key | 要挂载到Buffer上的Metadata的键名。 |
| 数据结构 | 说明 |
|---|---|
| shared_ptr<void> | 存放Metadata数据的智能指针。 |
GetMetadataGraphInstance
从Proto Metadata中获取序列化数据。内部接口,请用户不要使用。
std::shared_ptr<MxpiMetadataGraph> MxpiMetadataManager::GetMetadataGraphInstance();
| 数据结构 | 说明 |
|---|---|
| shared_ptr<MxpiMetadataGraph> | 存放序列化插件数据的智能指针。 |
GetMetadataWithType
从MxpiBuffer获取Key对应的Metadata,同时进行元数据类型的校验。如果类型不匹配,打印错误并返回空指针。此方法需要配套插件开发用,不可单独调用。
std::shared_ptr<void> MxpiMetadataManager::GetMetadataWithType(const std::string& key, std::string type);
| 参数名 | 说明 |
|---|---|
| key | 要挂载到Buffer上的Metadata的键名。 |
| type | 待校验的protobuf类型名,如“MxpiVisionList”。 |
| 数据结构 | 说明 |
|---|---|
| shared_ptr<void> | 存放Metadata数据的智能指针。 |
MxpiMetadataManager
构造函数,通过Buffer构造MxpiMetadataManager实例。
explicit MxpiMetadataManager::MxpiMetadataManager(MxpiBuffer& mxpiBuffer);
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 保存拷贝数据的MxpiBuffer,请参考MxpiBuffer。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
~MxpiMetadataManager
MxpiMetadataManager类的默认析构函数。
MxpiMetadataManager::~MxpiMetadataManager();
RemoveMetadata
从MxpiBuffer删除Key对应的Metadata。
APP_ERROR MxpiMetadataManager::RemoveMetadata(const std::string& key);
| 参数名 | 说明 |
|---|---|
| key | 要挂载到Buffer上的Metadata的键名。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
RemoveProtoMetadata
从MxpiBuffer删除Key对应的Proto Metadata。
APP_ERROR MxpiMetadataManager::RemoveProtoMetadata(const std::string& key);
| 参数名 | 说明 |
|---|---|
| key | 要挂载到Buffer上的Proto Metadata的键名。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxGstBase
MxGstBaseGetType接口在MxGstBase.h中定义,当前为内部使用接口,请用户不要使用。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
MxpiModelPostProcessorBase
类说明
该类用于实现推理后处理,用户需要继承该类并实现Init、DeInit、Process等虚函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
用于模型后处理的去初始化,完成资源释放。与Init搭配使用。
virtual APP_ERROR MxpiModelPostProcessorBase::DeInit() = 0;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetModelTensorsShape
保护成员函数,该接口由Init()调用,用于获取模型的输入输出张量形状。该方法为内部调用方法,请用户不要使用。
void MxpiModelPostProcessorBase::GetModelTensorsShape(MxBase::ModelDesc modelDesc);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| modelDesc | 输入 | 模型基本信息结构体。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。与DeInit搭配使用。
virtual APP_ERROR MxpiModelPostProcessorBase::Init(const std::string& configPath, const std::string& labelPath,
MxBase::ModelDesc modelDesc) = 0;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configPath | 输入 | 配置文件路径。 |
| labelPath | 输入 | 标签文件路径。 |
| modelDesc | 输出 | 模型描述信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
IsDescValid
保护成员函数,由process()调用,用于校验descriptor元素名称是否有效。该方法为内部调用方法,请用户不要使用。
APP_ERROR MxpiModelPostProcessorBase::IsDescValid(const google::protobuf::Descriptor* desc, std::string elementName);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| desc | 输入 | 待检查元素名称的Descriptor指针。 |
| elementName | 输入 | 元素名称。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
LoadConfigDataAndLabelMap
保护成员函数,该接口由Init()调用,用于实现配置参数获取。该方法为内部调用方法,请用户不要使用。
APP_ERROR MxpiModelPostProcessorBase::LoadConfigDataAndLabelMap(const std::string& configPath, const std::string& labelPath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configPath | 输入 | 配置文件路径。 |
| labelPath | 输入 | 标签文件路径。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MemoryDataToHost
保护成员函数,把数据从Device侧拷贝到Host侧用于后处理。该方法为内部调用方法,请用户不要使用。
APP_ERROR MxpiModelPostProcessorBase::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说明。 |
~MxpiModelPostProcessorBase
MxpiModelPostProcessorBase类的默认析构函数。
virtual ~MxpiModelPostProcessorBase() = default;
Process
用于推理后处理。
virtual APP_ERROR MxpiModelPostProcessorBase::Process(std::shared_ptr<void>& metaDataPtr, MxBase::PostProcessorImageInfo postProcessorImageInfo, std::vector<MxTools::MxpiMetaHeader>& headerVec, std::vector<std::vector<MxBase::BaseTensor>>& tensors) = 0;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| metaDataPtr | 输出 | 推理模型后处理输出结果对应数据结构指针(该数据结构通过protobuf定义,例如MxpiObjectList),向下游插件传输数据指针。 |
| postProcessorImageInfo | 输入 | 图片信息(包括原图和缩放宽高,目标框坐标)。 |
| headerVec | 输入 | 模型推理输出数据所依赖的上游数据信息。 |
| tensors | 输入 | 模型推理输出Tensor。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetAspectRatioImageInfo
设置后处理图像信息。
virtual void MxpiModelPostProcessorBase::SetAspectRatioImageInfo(const std::vector<MxBase::AspectRatioPostImageInfo>& postProcessorImageInfoVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postProcessorImageInfoVec | 输入 | 后处理图像信息集合。 |
SetOutputTensorShapes
设置输出Tensor的形状。
void MxpiModelPostProcessorBase::SetOutputTensorShapes(const std::vector<MxBase::TensorDesc>& outputTensors);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| outputTensors | 输入 | 输出Tensor的形状集合。 |
MxpiObjectPostProcessorBase
类说明
该类继承了ModelPostProcessorBase用于目标检测推理后处理,用户可以根据需要继承该类并选择性实现Init、DeInit、Process等虚函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
用于模型后处理的去初始化,完成资源释放。与Init搭配使用。
APP_ERROR MxpiObjectPostProcessorBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
用于完成模型后处理初始化。与DeInit搭配使用。
APP_ERROR MxpiObjectPostProcessorBase::Init(const std::string& configPath, const std::string& labelPath, MxBase::ModelDesc modelDesc) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configPath | 输入 | 配置文件路径。 |
| labelPath | 输入 | 标签文件路径。 |
| modelDesc | 输出 | 模型描述信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Process
用于推理后处理。
APP_ERROR MxpiObjectPostProcessorBase::Process(std::shared_ptr<void>& metaDataPtr, MxBase::PostProcessorImageInfo postProcessorImageInfo, std::vector<MxTools::MxpiMetaHeader>& headerVec, std::vector<std::vector<MxBase::BaseTensor>>& tensors, MxBase::ObjectPostProcessorBase& postProcessorInstance_);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| metaDataPtr | 输出 | 推理模型后处理输出结果对应数据结构指针(该数据结构通过protobuf定义,例如MxpiObjectList),向下游插件传输数据指针。 |
| postProcessorImageInfo | 输入 | 图片信息(包括原图和缩放宽高,目标框坐标)。 |
| headerVec | 输入 | 模型推理输出数据所依赖的上游数据信息。 |
| tensors | 输入 | 模型推理输出Tensor。 |
| postProcessorInstance_ | 输入 | 后处理对象。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetAspectRatioImageInfo
设置后处理图像信息。
void MxpiObjectPostProcessorBase::SetAspectRatioImageInfo(const std::vector<MxBase::AspectRatioPostImageInfo>& postProcessorImageInfoVec) override;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| postProcessorImageInfoVec | 输入 | 后处理图像信息集合。 |
MxpiBufferDump
类说明
该类完成插件数据下载。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DoDump
获取/过滤指定插件数据并保存到文件。
static std::string MxpiBufferDump::DoDump(MxTools::MxpiBuffer& mxpiBuffer,
const std::vector<std::string>& filterKeys = std::vector<std::string>(),
const std::vector<std::string>& requiredKeys = std::vector<std::string>());
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| mxpiBuffer | 输入 | 插件数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| filterKeys | 输入 | 导出时过滤std::vector中对应keys的内容。当配置了requiredKeys时,此属性无效。 |
| requiredKeys | 输入 | 导出时获取std::vector中对应keys的内容。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 获取/过滤指定插件后数据。 |
DoLoad
加载指定数据结构或文件。
static MxTools::MxpiBuffer* MxpiBufferDump::DoLoad(MxTools::MxpiBuffer& mxpiBuffer, int deviceId = 0);
static MxTools::MxpiBuffer* MxpiBufferDump::DoLoad(const std::string& filePath, int deviceId = 0);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| mxpiBuffer | 输入 | 要加载的插件数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| filePath | 输入 | 要加载的文件。 |
| deviceId | 输入 | 设备ID。 |
| 数据结构 | 说明 |
|---|---|
| MxTools::MxpiBuffer | 加载生成的数据。 |
MxModelPostProcessorBase
类说明
后处理插件基类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CheckPostProcessLibPath
保护成员函数,用于校验后处理插件依赖类库是否存在,被OpenPostProcessLib()调用。该方法为内部调用方法,请用户不要使用。
bool MxModelPostProcessorBase::CheckPostProcessLibPath(std::string &filePath);
| 参数名 | 说明 |
|---|---|
| filePath | 依赖类库文件路径。 |
| 数据结构 | 说明 |
|---|---|
| bool | 校验是否成功。 |
CheckPyPostProcessLibPath
保护成员函数,用于校验后处理插件依赖类库是否存在。该方法为内部调用方法,请用户不要使用。
APP_ERROR MxModelPostProcessorBase::CheckPyPostProcessLibPath(std::string &pyDir);
| 参数名 | 说明 |
|---|---|
| pyDir | Python依赖类库文件路径。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ConstructTensor
保护成员函数,用于构建张量并存储到向量中。该方法为内部调用方法,请用户不要使用。
APP_ERROR MxModelPostProcessorBase::ConstructTensor(std::shared_ptr<MxTools::MxpiTensorPackageList>& tensorPackageList, std::vector<MxBase::TensorBase>& tensors);
| 参数名 | 说明 |
|---|---|
| tensorPackageList | 原始张量列表指针。 |
| tensors | 张量向量,用于存储生成的张量。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DefineInputPorts
定义输入接口的数量和类型。
static MxTools::MxpiPortInfo MxModelPostProcessorBase::DefineInputPorts();
| 数据结构 | 说明 |
|---|---|
| MxpiPortInfo | 请参考MxpiPortInfo。 |
DefineOutputPorts
定义输出接口的数量和类型。
static MxTools::MxpiPortInfo MxModelPostProcessorBase::DefineOutputPorts();
| 数据结构 | 说明 |
|---|---|
| MxpiPortInfo | 请参考MxpiPortInfo。 |
DefineProperties
定义配置属性。
static std::vector<std::shared_ptr<void>> MxModelPostProcessorBase::DefineProperties();
| 数据结构 | 说明 |
|---|---|
| std::vector<std::shared_ptr<void>> | 属性。 |
DeInit
资源释放接口。与Init搭配使用。
APP_ERROR MxModelPostProcessorBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
后处理基类插件初始化方法。与DeInit搭配使用。
APP_ERROR MxModelPostProcessorBase::Init(std::map<std::string, std::shared_ptr<void>>& configParamMap) override;
| 参数名 | 说明 |
|---|---|
| configParamMap | 配置参数,串流后,配置文件的参数将通过该变量传入。configParamMap中的值要求从配置文件中读取或为字符串类型,若不满足上述条件可能出现异常的情况导致程序终止。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitConfig
保护成员函数,用于初始化配置项至成员变量。该方法为内部调用方法,请用户不要使用。
APP_ERROR MxModelPostProcessorBase::InitConfig(std::map<std::string, std::shared_ptr<void>> &configParamMap);
| 参数名 | 说明 |
|---|---|
| configParamMap | 配置参数、串流后,配置文件的参数将通过该变量传入。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitPostProcessInstance
保护成员函数,用于初始化后处理实例。该方法为内部调用方法,请用户不要使用。
template<typename T>
APP_ERROR MxModelPostProcessorBase::InitPostProcessInstance(std::map<std::string, std::shared_ptr<void>> &configParamMap, std::string getInstanceName);
| 参数名 | 说明 |
|---|---|
| configParamMap | 配置参数、串流后,配置文件的参数将通过该变量传入。 |
| getInstanceName | 实例名称。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
OpenPostProcessLib
保护成员函数,用于校验和加载后处理插件依赖类库。内部调用方法,请用户不要使用。
APP_ERROR MxModelPostProcessorBase::OpenPostProcessLib(std::map<std::string, std::shared_ptr<void>>& configParamMap);
| 参数名 | 说明 |
|---|---|
| configParamMap | 配置参数、串流后,配置文件的参数将通过该变量传入。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Process
后处理基类插件执行方法。
APP_ERROR MxModelPostProcessorBase::Process(std::vector<MxTools::MxpiBuffer *>& mxpiBuffer) override;
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 上一个插件传入的数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxImagePostProcessorBase
类说明
图像后处理插件基类MxImagePostProcessorBase,继承于MxModelPostProcessorBase。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
资源释放接口。与Init搭配使用。
APP_ERROR MxImagePostProcessorBase::DeInit() override;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DefineInputPorts
定义输入接口的数量和类型。
static MxpiPortInfo MxImagePostProcessorBase::DefineInputPorts();
| 数据结构 | 说明 |
|---|---|
| MxpiPortInfo | 请参考MxpiPortInfo。 |
DefineProperties
定义配置属性。
static std::vector<std::shared_ptr<void>> MxImagePostProcessorBase::DefineProperties();
| 数据结构 | 说明 |
|---|---|
| std::vector<std::shared_ptr<void>> | 属性。 |
Init
图像后处理基类插件初始化方法。与DeInit搭配使用。
APP_ERROR MxImagePostProcessorBase::Init(std::map<std::string, std::shared_ptr<void>>& configParamMap) override;
| 参数名 | 说明 |
|---|---|
| configParamMap | 配置参数,串流后,配置文件的参数将通过该变量传入。configParamMap中的值要求从配置文件中读取或为字符串类型,若不满足上述条件可能出现异常的情况导致程序终止。 |
Process
图像后处理基类插件执行方法。
APP_ERROR MxImagePostProcessorBase::Process(std::vector<MxTools::MxpiBuffer *>& mxpiBuffer) override;
| 参数名 | 说明 |
|---|---|
| mxpiBuffer | 上一个插件传入的数据。该数据结构的成员数据由上游插件进行输入,请勿手动设置内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
其他接口
MxpiDataTypeDeleter
总体说明
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
g_deleteFuncMxpiVisionList
智能指针删除器,智能指针类型MxpiVisionList。
该方法为内部使用接口,请用户不要使用。
auto g_deleteFuncMxpiVisionList = [](MxpiVisionList* mxpiVisionList);
| 参数名 | 说明 |
|---|---|
| mxpiVisionList | mxpiVisionList指针。 |
g_deleteFuncMxpiTensorPackageList
智能指针删除器,智能指针类型MxpiTensorPackageList。
该方法为内部使用接口,请用户不要使用。
auto g_deleteFuncMxpiTensorPackageList = [](MxpiTensorPackageList* mxpiTensorPackageList);
| 参数名 | 说明 |
|---|---|
| mxpiTensorPackageList | MxpiTensorPackageList指针。 |
MatPtrDeleter
原始指针删除器,指针类型为cv::Mat。该方法为内部使用接口,请用户不要使用。
bool MatPtrDeleter(uint64_t dataptr, uint64_t matptr);
| 参数名 | 说明 |
|---|---|
| dataptr | matptr -> data指针。dataptr需由图像数据内容指针转换成uint64类型,不可直接构造。 |
| matptr | matptr指针。matptr需由cv::Mat指针转换为uint64类型,不可直接构造。 |
SetDeviceID
设置指定的设备内容。该方法为内部使用接口,请用户不要使用。
SetDeviceID(MxBase::DeviceManager *deviceManager, MxBase::DeviceContext deviceContext, bool curDeviceIsOk);
| 参数名 | 说明 |
|---|---|
| deviceManager | MxBase::DeviceManager指针。 |
| deviceContext | 设备内容。 |
| curDeviceIsOk | 当前设备的状态。 |
MxpiDataTypeConverter
总体说明
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
ConstructProtobuf
将模型后处理使用的数据结构转换为protobuf数据结构,写入元数据用以插件间通讯。根据入参数据类型选择重载函数。
std::shared_ptr<MxTools::MxpiObjectList> ConstructProtobuf(
const std::vector<std::vector<MxBase::ObjectInfo>> &objectInfos, std::string dataSource);
std::shared_ptr<MxTools::MxpiClassList> ConstructProtobuf(
const std::vector<std::vector<MxBase::ClassInfo>>& classInfos,std::string dataSource);
std::shared_ptr<MxTools::MxpiImageMaskList> ConstructProtobuf(
const std::vector<MxBase::SemanticSegInfo> &semanticSegInfos, std::string dataSource);
std::shared_ptr<MxTools::MxpiTextsInfoList> ConstructProtobuf(
const std::vector<MxBase::TextsInfo>& textsInfo, std::string dataSource);
std::shared_ptr<MxTools::MxpiTextObjectList> ConstructProtobuf(
const std::vector<std::vector<MxBase::TextObjectInfo>>& textObjectInfos, std::string dataSource);
std::shared_ptr<MxTools::MxpiPoseList> ConstructProtobuf(
const std::vector<std::vector<MxBase::KeyPointDetectionInfo>>& keyPointInfos, std::string dataSource);
| 参数名 | 说明 |
|---|---|
| objectInfos | 目标检测结果。 |
| classInfos | 分类结果。 |
| semanticSegInfos | 语义分割结果。 |
| textsInfo | 文本生成结果。 |
| textObjectInfos | 文本框检测结果。 |
| keyPointInfos | 关键点检测结果。 |
| dataSource | 上游插件的名称。 |
| 数据结构 | 说明 |
|---|---|
| std::shared_ptr<MxTools::MxpiObjectList> | 与入参类型对应protobuf的智能指针。 |
| std::shared_ptr<MxTools::MxpiClassList> | |
| std::shared_ptr<MxTools::MxpiImageMaskList> | |
| std::shared_ptr<MxTools::MxpiTextsInfoList> | |
| std::shared_ptr<MxTools::MxpiTextObjectList> |
ConstrutImagePreProcessInfo
组装图片前处理的信息。
APP_ERROR ConstrutImagePreProcessInfo(MxTools::MxpiVisionInfo& visionInfo, MxBase::ImagePreProcessInfo& positionInfo);
| 参数名 | 说明 |
|---|---|
| visionInfo | 图片信息。 |
| positionInfo | 图片前处理信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
StackMxpiVisionPreProcess
图片前处理的Protobuf信息赋值。
void StackMxpiVisionPreProcess(MxpiVisionInfo &dstMxpiVisionInfo,
const MxpiVisionInfo &srcMxpiVisionInfo,
const MxBase::CropResizePasteConfig &cropResizePasteConfig,
const std::string& elementName = "");
| 参数名 | 说明 |
|---|---|
| dstMxpiVisionInfo | 已存放“前处理信息”的结构体。 |
| srcMxpiVisionInfo | 未存入“前处理信息”的结构体。 |
| cropResizePasteConfig | 抠图缩放信息。 |
| elementName | 插件名称。 |
GetCurVersion
返回当前插件的版本号。
uint32_t GetCurVersion()
| 数据结构 | 说明 |
|---|---|
| uint32_t | 当前插件的版本号。 |