sipeed_kpu_classifier.h
1 #ifndef __SIPEED_KPU_CLASSIFIER_H 2 #define __SIPEED_KPU_CLASSIFIER_H 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 #include "stdint.h" 9 #include "stdbool.h" 10 #include "imdefs.h" 11 #if 0 12 typedef struct image { 13 int w; 14 int h; 15 int bpp; 16 union { 17 uint8_t *pixels; 18 uint8_t *data; 19 }; 20 uint8_t *pix_ai; //for MAIX AI speed up 21 } __attribute__((aligned(8)))image_t; 22 #endif 23 24 typedef struct 25 { 26 void* kmodel_ctx; //sipeed_model_ctx_t 27 uint32_t model_size; 28 uint32_t model_addr; 29 const char* model_path; 30 uint32_t max_layers; 31 } __attribute__((aligned(8))) kpu_model_info_t; 32 33 int maix_kpu_classifier_init(void** obj, kpu_model_info_t* model, int class_num, int sample_num, bool flag, int flag2, int feature_length); 34 int maix_kpu_classifier_add_class_img(void* obj, image_t* img, int idx); 35 int maix_kpu_classifier_add_sample_img(void* obj, image_t* img); 36 int maix_kpu_classifier_del(void** obj); 37 int maix_kpu_classifier_train(void* obj); 38 int maix_kpu_classifier_predict(void* obj, image_t* img, float* min_distance, int* p_x, int* p_y, int* p_w, int* p_h); 39 int maix_kpu_classifier_rm_class_img(void* obj); 40 int maix_kpu_classifier_rm_sample_img(void* obj); 41 int maix_kpu_classifier_save(void* obj, const char* path); 42 int maix_kpu_classifier_load(void** obj, const char* path, kpu_model_info_t* kmodel, int* class_num, int* sample_num, int feature_length); 43 44 int maix_kpu_detector_init(void** obj, kpu_model_info_t* model, int class_num, int sample_num, int crop_size, int feature_length); 45 int maix_kpu_detector_add_class_img(void* obj, image_t* img); 46 int maix_kpu_detector_add_sample_img(void* obj, image_t* img); 47 int maix_kpu_detector_del(void** obj); 48 int maix_kpu_detector_train(void* obj); 49 int maix_kpu_detector_predict(void* obj, image_t* img, float* min_distance, int* p_x, int* p_y, int* p_w, int* p_h); 50 int maix_kpu_detector_rm_class_img(void* obj); 51 int maix_kpu_detector_rm_sample_img(void* obj); 52 int maix_kpu_detector_save(void* obj, const char* path); 53 int maix_kpu_detector_load(void** obj, const char* path, kpu_model_info_t* kmodel, int* class_num, int* sample_num); 54 55 #ifdef __cplusplus 56 } 57 #endif 58 59 #endif 60