/ components / kendryte_sdk / include / sipeed_kpu_classifier.h
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