309 lines
5.8 KiB
C
309 lines
5.8 KiB
C
![]() |
#ifndef TORCHDEFINE_H_
|
|||
|
#define TORCHDEFINE_H_
|
|||
|
|
|||
|
#include <stdio.h>
|
|||
|
#include "malloc.h"
|
|||
|
|
|||
|
#define LENGTH 256
|
|||
|
#define MAX_GPU_COUNT 8
|
|||
|
#define CLS_MODEL_BASE (10)
|
|||
|
#define SEG_MODEL_BASE (10)
|
|||
|
#define DET_MODEL_BASE (0)
|
|||
|
#define PER_MODEL_MAX_COUNT (10)
|
|||
|
|
|||
|
|
|||
|
enum DNN_MODEL_TYPE
|
|||
|
{
|
|||
|
DNN_MODEL_TYPE_CLS=0,
|
|||
|
DNN_MODEL_TYPE_DET=1,
|
|||
|
DNN_MODEL_TYPE_SEG=2,
|
|||
|
DNN_MODEL_TYPE_DET_YOLO = 3,
|
|||
|
DNN_MODEL_TYPE_SEG_FILTER = 4,
|
|||
|
};
|
|||
|
|
|||
|
enum DNN_MODEL_FILE_TYPE
|
|||
|
{
|
|||
|
DNN_MODEL_CAFFE=0,
|
|||
|
DNN_MODEL_TORCH=1,
|
|||
|
DNN_MODEL_TENSORRT=2,
|
|||
|
DNN_MODEL_ONNX=3,
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
#ifndef _TrainInfo_
|
|||
|
#define _TrainInfo_
|
|||
|
struct TrainInfo {
|
|||
|
float loss;
|
|||
|
float accuracy;//<2F>û<EFBFBD>ָ<EFBFBD><D6B8>iou<6F><75>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>ֵ<EFBFBD>µ<EFBFBD>Precison * Recall
|
|||
|
int record_index; //ѵ<><D1B5>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool is_detection; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD>λģ<CEBB><C4A3>
|
|||
|
float mAP;//coco <20><><EFBFBD>㷽ʽ<E3B7BD>µ<EFBFBD> map@0.5:0.95
|
|||
|
float mAP50;//coco <20><><EFBFBD>㷽ʽ<E3B7BD>µ<EFBFBD> map@0.5
|
|||
|
float mAP75;//coco <20><><EFBFBD>㷽ʽ<E3B7BD>µ<EFBFBD> map@0.75
|
|||
|
float mIOU; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>iou
|
|||
|
float accuracy_bg;
|
|||
|
float accuracy_fg;
|
|||
|
float accuracy_objectness;
|
|||
|
bool is_multilabel;
|
|||
|
float accuracy_fg_all;
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _DetResult_
|
|||
|
#define _DetResult_
|
|||
|
struct DetResult
|
|||
|
{
|
|||
|
int image_id;
|
|||
|
int label;
|
|||
|
char name[16];
|
|||
|
float score;
|
|||
|
int left, top, height, width;
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _GpuDeviceInfo_
|
|||
|
#define _GpuDeviceInfo_
|
|||
|
struct GpuDeviceInfo
|
|||
|
{
|
|||
|
int gpu_count;
|
|||
|
char gpu_name[MAX_GPU_COUNT][LENGTH];
|
|||
|
int gpu_memory_size[MAX_GPU_COUNT];//<2F><>λMB
|
|||
|
int gpu_sharedMemPerBlock[MAX_GPU_COUNT];//<2F><>λKB
|
|||
|
int gpu_maxThreadsPerBlock[MAX_GPU_COUNT];
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _YYDLL_ERRORMSG_
|
|||
|
#define _YYDLL_ERRORMSG_
|
|||
|
struct YYErrorMsg
|
|||
|
{
|
|||
|
char strErrorMsg[1024];
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _DnnInferInfo_
|
|||
|
#define _DnnInferInfo_
|
|||
|
struct DnnInferInfo
|
|||
|
{
|
|||
|
char strModelFile[256];
|
|||
|
int iBatchSize;
|
|||
|
int iInferMode;
|
|||
|
int iDeviceIndex;
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _Shape_
|
|||
|
#define _Shape_
|
|||
|
struct Shape
|
|||
|
{
|
|||
|
Shape() { N = 1; C = 1; H = 1; W = 1; }
|
|||
|
Shape(unsigned int n, unsigned int c, unsigned int h, unsigned int w)
|
|||
|
{
|
|||
|
N = n; C = c; H = h; W = w;
|
|||
|
}
|
|||
|
unsigned int count()
|
|||
|
{
|
|||
|
return N * C * H * W;
|
|||
|
}
|
|||
|
unsigned int N;
|
|||
|
unsigned int C;
|
|||
|
unsigned int H;
|
|||
|
unsigned int W;
|
|||
|
};
|
|||
|
#endif // !_Shape_
|
|||
|
|
|||
|
#ifndef _SegResult_
|
|||
|
struct SegResult
|
|||
|
{
|
|||
|
unsigned char* pLabel;
|
|||
|
float* pProb;
|
|||
|
Shape inferShape;
|
|||
|
int offsetX;
|
|||
|
int offsetY;
|
|||
|
double dScale;
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _Datum_
|
|||
|
#define _Datum_
|
|||
|
struct Datum
|
|||
|
{
|
|||
|
Datum()
|
|||
|
{
|
|||
|
data = NULL;
|
|||
|
data_item_size = 4;
|
|||
|
alloc = false;
|
|||
|
}
|
|||
|
|
|||
|
Datum(int iDataItemSize)
|
|||
|
{
|
|||
|
data = NULL;
|
|||
|
data_item_size = iDataItemSize;
|
|||
|
alloc = false;
|
|||
|
}
|
|||
|
|
|||
|
Datum(void* pData, Shape tshape, int itemSize)
|
|||
|
{
|
|||
|
data = pData;
|
|||
|
this->shape = tshape;
|
|||
|
data_item_size = itemSize;
|
|||
|
alloc = false;
|
|||
|
}
|
|||
|
|
|||
|
int GetDataItemSize()
|
|||
|
{
|
|||
|
return data_item_size;
|
|||
|
}
|
|||
|
void* Getdata()
|
|||
|
{
|
|||
|
if (data != NULL)
|
|||
|
{
|
|||
|
return data;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
unsigned int size = shape.count();
|
|||
|
data = malloc(size * data_item_size);
|
|||
|
alloc = true;
|
|||
|
return data;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void SetDataItemSize(int iDataItemSize)
|
|||
|
{
|
|||
|
if (data != NULL && iDataItemSize > data_item_size )
|
|||
|
{
|
|||
|
free(data);
|
|||
|
data = NULL;
|
|||
|
alloc = false;
|
|||
|
}
|
|||
|
data_item_size = iDataItemSize;
|
|||
|
|
|||
|
if (NULL == data)
|
|||
|
{
|
|||
|
unsigned int size = shape.count();
|
|||
|
data = malloc(size * data_item_size);
|
|||
|
alloc = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void Reshape(Shape s)
|
|||
|
{
|
|||
|
if (data != NULL && s.count() > shape.count())
|
|||
|
{
|
|||
|
free(data);
|
|||
|
data = NULL;
|
|||
|
alloc = false;
|
|||
|
}
|
|||
|
shape = s;
|
|||
|
if (NULL == data)
|
|||
|
{
|
|||
|
unsigned int size = shape.count();
|
|||
|
data = malloc(size * data_item_size);
|
|||
|
alloc = true;
|
|||
|
}
|
|||
|
}
|
|||
|
~Datum()
|
|||
|
{
|
|||
|
if (data != NULL)
|
|||
|
{
|
|||
|
if (alloc)
|
|||
|
{
|
|||
|
free(data);
|
|||
|
data = NULL;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
Shape shape;
|
|||
|
void* data;
|
|||
|
int data_item_size;
|
|||
|
bool alloc;
|
|||
|
};
|
|||
|
#endif // !_Datum_
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#ifndef _TrainingParameter_
|
|||
|
#define _TrainingParameter_
|
|||
|
struct TrainingParameter
|
|||
|
{
|
|||
|
//enhance relate
|
|||
|
bool flip;
|
|||
|
bool blur;
|
|||
|
bool hsv;
|
|||
|
bool transform;
|
|||
|
bool crop;
|
|||
|
//train information
|
|||
|
int train_size;//100000
|
|||
|
int kLogInterval;//100
|
|||
|
int save_model_iterval;//1000
|
|||
|
int batch_size;
|
|||
|
//model relate need to write to file
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5>
|
|||
|
int use_model_type;//0: small model; 1: medium model; 2: big model
|
|||
|
int channel;
|
|||
|
int height;
|
|||
|
int width;
|
|||
|
|
|||
|
char data_file_root[LENGTH];
|
|||
|
char val_data_file_root[LENGTH];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>batch<63><68>֤һ<D6A4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD>
|
|||
|
char harddata_file_root[LENGTH];
|
|||
|
float input_scale;//1
|
|||
|
|
|||
|
float learn_rate;//0.01
|
|||
|
|
|||
|
//save relate
|
|||
|
char pretrained_model_path[LENGTH];
|
|||
|
char save_model_path[LENGTH];
|
|||
|
|
|||
|
int train_iter; //ѵ<><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool save_interval_flag; //<2F>Ƿ<C7B7>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
bool vflip; //<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ת
|
|||
|
float max_rotate_angle; //ʹ<><CAB9><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ǿʱ<C7BF><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>(+-<2D><>Χ)
|
|||
|
int loss_type; //ѵ<><D1B5>loss_type
|
|||
|
float image_scale; //ͼ<><CDBC>ѵ<EFBFBD><D1B5>ǰԤ<C7B0><D4A4><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
|
|||
|
int infer_height; //<2F><><EFBFBD><EFBFBD>ʱģ<CAB1><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4>߶<EFBFBD>
|
|||
|
int infer_width; //<2F><><EFBFBD><EFBFBD>ʱģ<CAB1><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
double label_smooth; //<2F>Ƿ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪԤ<CEAA><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>
|
|||
|
bool in_memory_train; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ѵ<EFBFBD><D1B5>
|
|||
|
int model_type; //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0<><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,1<><31>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>2<EFBFBD><32>ʾ<EFBFBD>ָ<EFBFBD>
|
|||
|
bool with_prob; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
double crop_min_scale; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>crop<6F><70>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
|||
|
double crop_max_scale; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>crop<6F><70>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
|||
|
|
|||
|
/*------------------ for detect --------------------------------------*/
|
|||
|
char background_images_path[LENGTH];//<2F><>ˮӡ<CBAE>ı<EFBFBD><C4B1><EFBFBD>ͼ
|
|||
|
bool is_create_anchor;//
|
|||
|
float pos_overlap_low;//overlap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>Ϊǰ<CEAA><C7B0>Ŀ<EFBFBD><C4BF>
|
|||
|
float neg_overlap_up;//overlapС<70><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ŀ<EFBFBD>꣬<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Ե<EFBFBD>ǰ<EFBFBD><C7B0>Ŀ<EFBFBD><C4BF>
|
|||
|
float gamma; //focal loss parameter
|
|||
|
float balance; //focal loss parameter
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef _InferenceParameter_
|
|||
|
#define _InferenceParameter_
|
|||
|
struct InferenceParameterEx
|
|||
|
{
|
|||
|
int use_model_type;
|
|||
|
int batch_size;
|
|||
|
int input_channel;
|
|||
|
int input_width;
|
|||
|
int input_height;
|
|||
|
int label_num;
|
|||
|
double input_scale;
|
|||
|
int model_type; //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0<><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,1<><31>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>2<EFBFBD><32>ʾ<EFBFBD>ָ<EFBFBD>
|
|||
|
float mean_values[4];
|
|||
|
float scale_value[4];
|
|||
|
int input_count;
|
|||
|
char input_name[3][64];
|
|||
|
int output_count;
|
|||
|
char output_name[3][64];
|
|||
|
double image_scale;
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|