Spaces:
Running
Running
enum MODEL_TYPE | |
{ | |
//FLOAT32 MODEL | |
YOLO_DETECT_V8 = 1, | |
YOLO_POSE = 2, | |
YOLO_CLS = 3, | |
//FLOAT16 MODEL | |
YOLO_DETECT_V8_HALF = 4, | |
YOLO_POSE_V8_HALF = 5, | |
YOLO_CLS_HALF = 6 | |
}; | |
typedef struct _DL_INIT_PARAM | |
{ | |
std::string modelPath; | |
MODEL_TYPE modelType = YOLO_DETECT_V8; | |
std::vector<int> imgSize = { 640, 640 }; | |
float rectConfidenceThreshold = 0.6; | |
float iouThreshold = 0.5; | |
int keyPointsNum = 2;//Note:kpt number for pose | |
bool cudaEnable = false; | |
int logSeverityLevel = 3; | |
int intraOpNumThreads = 1; | |
} DL_INIT_PARAM; | |
typedef struct _DL_RESULT | |
{ | |
int classId; | |
float confidence; | |
cv::Rect box; | |
std::vector<cv::Point2f> keyPoints; | |
} DL_RESULT; | |
class YOLO_V8 | |
{ | |
public: | |
YOLO_V8(); | |
~YOLO_V8(); | |
public: | |
char* CreateSession(DL_INIT_PARAM& iParams); | |
char* RunSession(cv::Mat& iImg, std::vector<DL_RESULT>& oResult); | |
char* WarmUpSession(); | |
template<typename N> | |
char* TensorProcess(clock_t& starttime_1, cv::Mat& iImg, N& blob, std::vector<int64_t>& inputNodeDims, | |
std::vector<DL_RESULT>& oResult); | |
char* PreProcess(cv::Mat& iImg, std::vector<int> iImgSize, cv::Mat& oImg); | |
std::vector<std::string> classes{}; | |
private: | |
Ort::Env env; | |
Ort::Session* session; | |
bool cudaEnable; | |
Ort::RunOptions options; | |
std::vector<const char*> inputNodeNames; | |
std::vector<const char*> outputNodeNames; | |
MODEL_TYPE modelType; | |
std::vector<int> imgSize; | |
float rectConfidenceThreshold; | |
float iouThreshold; | |
float resizeScales;//letterbox scale | |
}; | |