CatFeeder/src/nnie/sample_svp_nnie_software.h

134 lines
4.7 KiB
C
Executable File

#ifndef _SAMPLE_SVP_USER_KERNEL_H_
#define _SAMPLE_SVP_USER_KERNEL_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "hi_comm_svp.h"
#include "hi_nnie.h"
#include "mpi_nnie.h"
#include "sample_comm_svp.h"
#include "sample_comm_nnie.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SAMPLE_SVP_NNIE_ADDR_ALIGN_16 16 /*16 byte alignment*/
#define SAMPLE_SVP_NNIE_MAX(a,b) (((a) > (b)) ? (a) : (b))
#define SAMPLE_SVP_NNIE_MIN(a,b) (((a) < (b)) ? (a) : (b))
#define SAMPLE_SVP_NNIE_SIGMOID(x) (HI_FLOAT)(1.0f/(1+exp(-x)))
#define SAMPLE_SVP_NNIE_COORDI_NUM 4 /*coordinate numbers*/
#define SAMPLE_SVP_NNIE_PROPOSAL_WIDTH 6 /*the number of proposal values*/
#define SAMPLE_SVP_NNIE_QUANT_BASE 4096 /*the base value*/
#define SAMPLE_SVP_NNIE_SCORE_NUM 2 /*the num of RPN scores*/
#define SAMPLE_SVP_NNIE_HALF 0.5f /*the half value*/
#define SAMPLE_SVP_NNIE_YOLOV3_REPORT_BLOB_NUM 3 /*yolov3 report blob num*/
#define SAMPLE_SVP_NNIE_YOLOV3_EACH_GRID_BIAS_NUM 6 /*yolov3 bias num of each grid*/
#define SAMPLE_SVP_NNIE_YOLOV3_EACH_BBOX_INFER_RESULT_NUM 85 /*yolov3 inference result num of each bbox*/
/*CNN GetTopN unit*/
typedef struct hiSAMPLE_SVP_NNIE_CNN_GETTOPN_UNIT_S
{
HI_U32 u32ClassId;
HI_U32 u32Confidence;
}SAMPLE_SVP_NNIE_CNN_GETTOPN_UNIT_S;
/*stack for sort*/
typedef struct hiSAMPLE_SVP_NNIE_STACK
{
HI_S32 s32Min;
HI_S32 s32Max;
}SAMPLE_SVP_NNIE_STACK_S;
/*stack for sort*/
typedef struct hiSAMPLE_SVP_NNIE_YOLOV1_SCORE
{
HI_U32 u32Idx;
HI_S32 s32Score;
}SAMPLE_SVP_NNIE_YOLOV1_SCORE_S;
typedef struct hiSAMPLE_SVP_NNIE_YOLOV2_BBOX
{
HI_FLOAT f32Xmin;
HI_FLOAT f32Xmax;
HI_FLOAT f32Ymin;
HI_FLOAT f32Ymax;
HI_S32 s32ClsScore;
HI_U32 u32ClassIdx;
HI_U32 u32Mask;
}SAMPLE_SVP_NNIE_YOLOV2_BBOX_S;
typedef SAMPLE_SVP_NNIE_YOLOV2_BBOX_S SAMPLE_SVP_NNIE_YOLOV3_BBOX_S;
/*CNN*/
HI_S32 SAMPLE_SVP_NNIE_Cnn_GetTopN(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_CNN_SOFTWARE_PARAM_S* pstSoftwareParam);
/*FasterRcnn*/
HI_U32 SAMPLE_SVP_NNIE_RpnTmpBufSize(HI_U32 u32RatioAnchorsNum,
HI_U32 u32ScaleAnchorsNum, HI_U32 u32ConvHeight, HI_U32 u32ConvWidth);
HI_U32 SAMPLE_SVP_NNIE_FasterRcnn_GetResultTmpBufSize(
HI_U32 u32MaxRoiNum, HI_U32 u32ClassNum);
HI_S32 SAMPLE_SVP_NNIE_FasterRcnn_Rpn(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_FASTERRCNN_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_FasterRcnn_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_FASTERRCNN_SOFTWARE_PARAM_S* pstSoftwareParam);
/*Pvanet*/
HI_U32 SAMPLE_SVP_NNIE_Pvanet_GetResultTmpBufSize(
HI_U32 u32MaxRoiNum, HI_U32 u32ClassNum);
HI_S32 SAMPLE_SVP_NNIE_Pvanet_Rpn(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_FASTERRCNN_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_Pvanet_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_FASTERRCNN_SOFTWARE_PARAM_S* pstSoftwareParam);
/*RFCN*/
HI_U32 SAMPLE_SVP_NNIE_Rfcn_GetResultTmpBuf(HI_U32 u32MaxRoiNum, HI_U32 u32ClassNum);
HI_S32 SAMPLE_SVP_NNIE_Rfcn_Rpn(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_RFCN_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_Rfcn_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_RFCN_SOFTWARE_PARAM_S* pstSoftwareParam);
/*SSD*/
HI_U32 SAMPLE_SVP_NNIE_Ssd_GetResultTmpBuf(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_SSD_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_Ssd_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_SSD_SOFTWARE_PARAM_S* pstSoftwareParam);
/*YOLOV1*/
HI_U32 SAMPLE_SVP_NNIE_Yolov1_GetResultTmpBuf(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_YOLOV1_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_Yolov1_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_YOLOV1_SOFTWARE_PARAM_S* pstSoftwareParam);
/*YOLOV2*/
HI_U32 SAMPLE_SVP_NNIE_Yolov2_GetResultTmpBuf(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_YOLOV2_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_Yolov2_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_YOLOV2_SOFTWARE_PARAM_S* pstSoftwareParam);
/*YOLOV3*/
HI_U32 SAMPLE_SVP_NNIE_Yolov3_GetResultTmpBuf(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_YOLOV3_SOFTWARE_PARAM_S* pstSoftwareParam);
HI_S32 SAMPLE_SVP_NNIE_Yolov3_GetResult(SAMPLE_SVP_NNIE_PARAM_S*pstNnieParam,
SAMPLE_SVP_NNIE_YOLOV3_SOFTWARE_PARAM_S* pstSoftwareParam);
#ifdef __cplusplus
}
#endif
#endif /* _SAMPLE_SVP_USER_KERNEL_H_ */