mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
| #ifndef _SSNN_H
 | |
| #define _SSNN_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif 
 | |
| 
 | |
| // ==================================================================================================
 | |
| //                                        Structure Definition
 | |
| // ==================================================================================================
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     // == Model-dependent settings == //
 | |
|     int target_height;
 | |
|     int target_width;
 | |
| 
 | |
|     // == General settings == //
 | |
|     float prob_thresh;
 | |
|     float nms_thresh;
 | |
|     int num_threads;
 | |
|     int max_detection;
 | |
|     int init_network_index;
 | |
| }network_config;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     short int x_min, y_min;         // top-left corner
 | |
|     short int x_max, y_max;         // bottom-right corner
 | |
|     short int class_idx;
 | |
|     float prob;
 | |
| }BBox;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     network_config *cfg;
 | |
|     void *net;
 | |
|     BBox *boxes;                    // Only for detector
 | |
|     float *probs;                   // Only for classifier
 | |
|     float *feature;                 // Only for feature extractor
 | |
|     int num_detection;
 | |
| }NetworkHandle;
 | |
| 
 | |
| // ==================================================================================================
 | |
| //                                           Enumerations
 | |
| // ==================================================================================================
 | |
| 
 | |
| enum E_NETWORK_TYPE
 | |
| {
 | |
|     CLASSIFIER,
 | |
|     DETECTOR,
 | |
|     FEATURE
 | |
| };
 | |
| 
 | |
| // ==================================================================================================
 | |
| //                                              API
 | |
| // ==================================================================================================
 | |
| 
 | |
| int Init_Network(NetworkHandle **phandle, network_config *cfg);
 | |
| void Release_Network(NetworkHandle **phandle);
 | |
| int Forward_Network(NetworkHandle *handle, unsigned char *data, int height, int width, int color);
 | |
| int Get_Detection(NetworkHandle *handle, int img_height, int img_width);   // Only for detector
 | |
| int Get_Prob(NetworkHandle *handle);                                       // Only for classifier
 | |
| int Get_Feature(NetworkHandle *handle);                                    // Only for feature extractor
 | |
| int Change_Model(NetworkHandle *handle, int network_index);
 | |
| int Get_Num_Classes(NetworkHandle *handle);
 | |
| int Get_Network_Type(NetworkHandle *handle);
 | |
| int Get_Size_Alignment(NetworkHandle *handle);
 | |
| int Get_Feature_Size(NetworkHandle *handle);
 | |
| 
 | |
| // -- For automatically adjusting target size based on area constraints -- //
 | |
| int Set_Input_Min_Max_Area(NetworkHandle *handle, int min_area, int max_area);
 | |
| 
 | |
| // -- For advanced usage -- //
 | |
| int Forward_Network_Stride(NetworkHandle *handle, unsigned char *data, int height, int width, int color, int stride);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif 
 | |
| 
 | |
| #endif |