TinyMaix 是面向单片机的超轻量级的神经网络推理库,即 TinyML 推理库,可以让你在任意低资源MCU上运行轻量级深度学习模型。
关键特性
核心代码少于 400行
(tm_layers.c+tm_model.c+arch_cpu.h),
代码段(.text)少于3KB
低内存消耗
支持 INT8/FP32/FP16 模型,实验性地支持 FP8 模型,支持 keras h5 或 tflite 模型转换
支持多种芯片架构的专用指令优化: ARM SIMD/NEON/MVEI,RV32P, RV64V
友好的用户接口,只需要 load/run 模型
支持全静态的内存配置(无需 malloc )
同样地也可以部署到MPU平台上
RK3576平台相较于RK3588其主要缩减了四个A76大核改成了A72
GPU也由原来的G610 MC4减为了G52MC3
NPU功能保持变不变,均为6Tops
视频编解码也略有缩减
其余各接口也砍掉了一部分
主打极致性价比方案
说回正题,要运行TinaMaix 只需要简单几个步骤即可运行。
首先确保系统安装了cmake gcc make工具:
克隆存储库[GitHub - sipeed/TinyMaix: TinyMaix is a tiny inference library for microcontrollers (TinyML).]
运行mnist手写数字识别任务
cd examples/mnist
mkdir build
cd build
cmake ..
make
./mnist
整个流程跑完仅仅需要0.14ms
可以看到soc平台强大的算力
mbnet
是适用于移动手机设备的简单图像分类模型,不过对单片机来说也稍微困难了些。
例程里的模型是 mobilenet v1 0.25,输入 128x128x3 的RGB图像,输出1000 分类的预测。
它需要至少 128KB SRAM 和 512KB Flash。
mkdir build
cd build
cmake ..
make
./mbnet
运行1000分类,耗费资源如下:
param “481,9 KB,0PS13,58 M0PS, buffer 96 0 KB
vww测试,主要是将图片信息转化为数组格式提供给网络输入。
手写数字识别的例程也是十分简单,只需要:
库文件已经是高度封装且兼容,所以很轻松地就可以在linux以及其它平台上移植,在RK3576这种高性能soc的加持下,可以发挥出更大的优势。
楼主最近还看过