2024-07-15 10:31:26 +08:00

49 lines
2.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _DNNINFER_H_
#define _DNNINFER_H_
#include <stdio.h>
#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.4nms阈值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