TinyMaix是国内sipeed团队开发一个轻量级AI推理框架,TinyMaix 是面向单片机的超轻量级的神经网络推理库,即 TinyML 推理库,可以让你在任意单片机上运行轻量级深度学习模型。
TinyMaix框架对上层应用程序提供的核心API主要位于代码仓的tinymaix.h文件中,核心API如下:
/******************************* MODEL FUNCTION ************************************/ tm_err_t tm_load (tm_mdl_t* mdl, const uint8_t* bin, uint8_t*buf, tm_cb_t cb, tm_mat_t* in); //load model void tm_unload(tm_mdl_t* mdl); //remove model tm_err_t tm_preprocess(tm_mdl_t* mdl, tm_pp_t pp_type, tm_mat_t* in, tm_mat_t* out); //preprocess input data tm_err_t tm_run (tm_mdl_t* mdl, tm_mat_t* in, tm_mat_t* out); //run model /******************************* UTILS FUNCTION ************************************/ uint8_t TM_WEAK tm_fp32to8(float fp32); float TM_WEAK tm_fp8to32(uint8_t fp8); /******************************* STAT FUNCTION ************************************/ #if TM_ENABLE_STAT tm_err_t tm_stat(tm_mdlbin_t* mdl); //stat model #endif主要分为三类:
这里的模型,通常是预训练模型经过脚本转换生成的TinyMaix格式的模型;
1.2 TinyMaix底层依赖TinyMaix可以简单理解为一个矩阵和向量计算库,目前已支持如下几种计算硬件:
#define TM_ARCH_CPU (0) //default, pure cpu compute #define TM_ARCH_ARM_SIMD (1) //ARM Cortex M4/M7, etc. #define TM_ARCH_ARM_NEON (2) //ARM Cortex A7, etc. #define TM_ARCH_ARM_MVEI (3) //ARMv8.1: M55, etc. #define TM_ARCH_RV32P (4) //T-head E907, etc. #define TM_ARCH_RV64V (5) //T-head C906,C910, etc. #define TM_ARCH_CSKYV2 (6) //cskyv2 with dsp core #define TM_ARCH_X86_SSE2 (7) //x86 sse2对于ARM-Cortex系列MCU,可以支持纯CPU计算和SIMD计算。其中CPU计算部分无特殊依赖(计算代码均使用标准C实现)。SIMD部分,部分计算代码使用了C语言内嵌汇编实现,需要CPU支持相应的汇编指令,才可以正常编译、运行。
TinyMaix的示例代码依赖于精准计时和打印输出能力,具体是项目的tm_port.h中的几个宏定义:
_time = (float)(_finish-_start)/1000.0;\ TM_PRINTF("===%s use %.3f ms\n", (x), _time);\ _start=TM_GET_US();}作者: 丙丁先生, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3996156.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论