#ifndef _DNNINFER_H_ #define _DNNINFER_H_ #include #include "DnnDefine.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ //初始化全局日志 void DnnInfer_InitGlobalLog(); //关闭全局日志 void DnnInfer_UnInitGlobalLog(); //直接从文件读取model信息 bool DnnInfer_GetInferParamFormModelFile(const char* pstrFileName, InferenceParameterEx* pInferParam); //直接修改模型文件参数 bool DnnInfer_SetInferParamToModelFile(const char* pStrFileName, InferenceParameterEx* pInferParam); //获取设备信息 bool DnnInfer_GetDeviceInfo(GpuDeviceInfo* pGpuDeviceInfo); //初始化训练,返回一个train对象,infermode 0: cpu 1:gpu void* DnnInfer_Init(const char* pstrFileName,int iBatchSize,int iInferMode, int iDeviceIndex = 0); bool DnnInfer_InitV2(DnnInferInfo* pDnnInferInfo, void** pInferObject, YYErrorMsg* pYyErrorMsg); bool DnnInfer_GetInputInfo(void* pObject,int* piWidth, int* piHeight, int* piChannel, int* piBatchSize,int* piClassNum); //获取模型类型(分类=0,定位=1,分割=2,空对象=-1) int DnnInfer_GetModelType(void* pObject); //得到错误信息 const char* DnnInfer_GetErrorString(void* pObject); //开始分类推理 bool DnnInfer_Cls_InferDatum(void* pObject, Datum* pInputDatum, Datum* pOutputDatum); bool DnnInfer_Cls_Infer(void* pObject, Datum* pInputDatum,int* iLabelArray, float* fpProbalityArray); //默认置信度阈值0.4,nms阈值0.6 bool DnnInfer_Det_Infer(void* pObject, Datum* pInputDatum, DetResult* pDetResult, int iInArraySize, int& iUseArraySize); //使用自定义的置信度阈值,和nms阈值 bool DnnInfer_Det_InferV2(void* pObject, Datum* pInputDatum, DetResult* pDetResult, int iInArraySize, int& iUseArraySize, float scoreTheshold, float nmsTheshold); //开始分割推理 bool DnnInfer_Seg_Infer(void* pObject, Datum* pInputDatum, Datum* pOutputDatum); bool DnnInfer_Seg_InferV2(void* pObject, Datum* pInputDatum, Datum* pOutputLabel, Datum* pOutputProb); bool DnnInfer_Seg_InferV3(void* pObject, Datum* pInputDatum, SegResult* segResult); void DnnInfer_Close(void* pObject); bool DnnInfer_GetLabelName(void* pObject, char* pstrLabelNames, int iLabelIndex); int DnnInfer_GetClassNum(void* pObject); #ifdef __cplusplus } #endif /* __cplusplus */ #endif