矽速科技(Sipeed)的 TinyMaix 是一款专为微控制器设计的轻量级开源机器学习库。 TinyMaix 可以在 Arduino UNO 开发板及其克隆板中的 Microchip ATmega328 MCU 上运行。
TinyMax 其实是矽速科技利用两个周末的业余时间完成的项目,其核心代码不到 400 行、二进制大小约有 3KB、内存使用率低,这些特性使 TinyMax 能够在仅有 2KB SRAM 和 32KB 闪存的 ATmega320 MCU 上运行 MNIST 手写数字识别。
TinyMaix 的亮点
- 核心代码少于400 行(tm_layers.c+tm_model.c+arch_O0.h),代码段(.text)少于3KB
- 低内存消耗,甚至Arduino ATmega328(32KB Flash, 2KB Ram) 都能基于TinyMaix跑mnist(手写数字识别)
- 支持INT8/FP32/FP16模型,支持keras h5或tflite模型转换
- 支持多种芯片架构的专用指令优化: ARM SIMD/NEON/MVEI,RV32P, RV64V
- 友好的用户接口,只需要load/run模型~
- 支持全静态的内存配置(无需malloc)
- 即将支持MaixHub在线模型训练
矽速科技方面表示,现在已经有挺多 TinyML 推理库了,比如用于微控制器的 TensorFlow Lite、microTVM 或 NNoM。但他们仍然希望 TinyMax 成为一个足够简单的 TinyML 推理库,它可以让用户们放弃了使用 CMSIS-NN 等加速库,而且可以在 30 分钟内走读完代码。考虑到它可以在 8 位微控制器上运行,我觉得它可能更类似于 Fraunhofer IMS 在2021年7月开源的AIfES for Arduino。
TinyMaix未来的特性包括 INT16 量化模型、以更高的精度更好地支持 SIMD/RV32P 加速、(不过这一点要牺牲的是更大的占用空间)、支持 Mobilenet v2 的 Concat OPA (但使用两倍的内存并且可能很慢),以及以增加 RAM 和内存带宽消耗为代价提高推理速度的Winograd卷积优化。
该项目使用的源代码和说明可以在 Github 库中查询。
本文消息来源于 Hackster.io。
文章翻译者:Jacob,嵌入式系统测试工程师、RAK高级工程师,物联网行业多年工作经验,熟悉嵌入式开发、测试各个环节,对不同产品有自己专业的分析与评估。