NNoM:微控制器上的高级神经网络库
1. 项目基础介绍和主要编程语言
NNoM(Neural Network on Microcontroller)是一个专门为微控制器设计的高级神经网络库。该项目的主要编程语言是C语言,适用于嵌入式系统开发。NNoM旨在为嵌入式开发者提供一个轻量级、用户友好且灵活的接口,以便快速将神经网络模型部署到微控制器上。
2. 项目的核心功能
NNoM的核心功能包括:
- 模型部署:支持将Keras模型通过一行代码转换为NNoM模型,便于在微控制器上部署。
- 复杂结构支持:支持多种复杂的神经网络结构,如Inception、ResNet、DenseNet和Octave Convolution。
- 高性能后端:提供多种高性能后端选择,确保在微控制器上的高效运行。
- 内存管理:自动管理内存,减少开发者的工作量。
- 在线评估工具:提供多种在线评估工具,如时间统计、内存统计、Top-K准确度和Confusion Matrix等。
3. 项目最近更新的功能
NNoM最近的更新包括:
- v0.4.x版本:
- 循环层(RNN):实现了Simple RNN、GRU和LSTM等循环层,支持状态保持和返回序列选项。
- 结构化接口:引入了一种新的结构化接口,使用C结构体提供所有层的配置,更便于机器处理。
- 逐通道量化:新的结构化接口支持逐通道量化(per-axis)和卷积层的膨胀。
- 新脚本:从v0.4.0开始,NNoM默认使用结构化接口生成模型头文件,对应的脚本是
nnom.py
,而旧的层接口对应的脚本是nnom_utils.py
。
通过这些更新,NNoM进一步提升了在微控制器上部署神经网络模型的便捷性和性能。