这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 支持在单片机上跑开源Ai算法框架,NNom

共2条 1/1 1 跳转至

支持在单片机上跑开源Ai算法框架,NNom

菜鸟
2025-12-11 11:24:31     打赏

在嵌入式人工智能领域,微控制器(MCU)上的神经网络部署面临内存和计算资源的严峻挑战。

NNoM(Neural Network on Microcontroller)项目作为一款轻量级、高层推理库,专为这类环境设计。

项目主页项目主页

基于GitHub仓库(https://github.com/majianjia/nnom),NNoM提供用户友好的接口,支持Keras模型一键转换至C代码,实现高效部署。

支持复杂结构如Inception和RNN,深受TinyML开发者青睐。

项目介绍

NNoM的核心目标是简化MCU上的神经网络实现,避免底层细节干扰开发者。

它通过Python前端(nnom脚本)将Keras模型转换为预编译C代码,消除运行时解释开销。

系统架构

系统架构

仓库结构包括源代码(src)、移植层(port)、示例(examples)和文档(docs)。

关键组件:

  • 前端:Python工具nnom.py(结构化接口)和nnom_utils.py(层接口),处理模型转换和量化。
  • 后端:纯C默认实现,或CMSIS-NN/DSP优化(针对ARM Cortex-M4/7/33/35P,提升5倍性能)。
  • 内存管理:依赖malloc/free/memset,支持自定义移植至RTOS如RT-Thread。
  • 文档:包括5分钟指南、移植优化手册和API手册(https://majianjia.github.io/nnom/)。

与TensorFlow Lite Micro相比,NNoM更轻量(<50KB),专注小规模模型(参数<1MB),适用于低功耗IoT设备。

基础知识

嵌入式神经网络推理涉及将训练模型优化至MCU资源内。

核心概念包括量化(8/16位整数减少浮点计算)、数据格式(HWC/CHW)和加速(如SIMD指令)。NNoM支持Conv1D/2D(包括Depthwise、Dilated)、Pooling、Activation(ReLU/Leaky ReLU/TanH/Sigmoid)、RNN/GRU/LSTM(alpha版,支持stateful/return_sequence)和矩阵操作。

量化采用per-channel(per-axis)方式,提升准确率;建议在Conv后添加BatchNormalization,避免极端激活值影响分辨率。

针对RTOS集成,如RT-Thread(国产轻量操作系统,支持多线程),NNoM需定义内存分配(rt_malloc/rt_free)和时钟(rt_tick_get)。

兼容RT-Thread v4+,通过menuconfig启用NNoM组件和CMSIS-NN,避免浮点库冲突。构建使用scons,示例项目如MNIST演示实时推理。

RT-Thread online packages  --->
    miscellaneous packages  --->
        [*] NNoM: A Higher-level Nerual Network ... --->
项目特点

NNoM的硬核在于其分层设计:Layer API(Conv2D(),人性化)和Structured API(conv2d_s())。

后端选项确保跨架构兼容,CMSIS-NN利用DSP指令加速。评估工具包括运行时分析、Top-k和混淆矩阵,便于优化。

v0.4.1新增RNN层,支持序列处理如语音识别。

项目实例
  1. MNIST手写识别:使用Keras训练LeNet-5,nnom.from_keras()生成C代码。示例(examples/mnist):
#include "nnom.h"
nnom_model_t *model = mnist_model_new();
uint8_t input[28*28];  // 预处理图像
nnom_run(model, input, output);  // 输出分类

在STM32F4上,CMSIS后端推理<10ms,准确率>98%

集成RT-Thread:menuconfig启用NNoM,rt_thread_create()调度线程,实时处理传感器输入。

  1. RNN语音降噪:基于RNNoise变体,部署GRU/LSTM。RT-Thread指南:scons构建,applications/nnom_rnn.c示例。配置CMSIS-NN,rt_malloc分配tensor,推理延迟<20ms,功耗<5mW。适用于RISC-V MCU,优化Dilated Conv处理音频。

  2. ResNet图像分类:支持DenseBlock,量化8位部署CIFAR-10。移植FreeRTOS/ESP32,Top-5准确率>80%。自定义Lambda层后处理。

总结

NNoM作为嵌入式NN框架的典范,其高层抽象和RTOS兼容性(如RT-Thread)显著降低部署门槛,适用于实时IoT应用。

相较通用库,它更注重MCU优化,未来扩展潜力大。





关键词: 单片机     NNom    

院士
2025-12-11 16:52:48     打赏
2楼

谢谢分享,学习了。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]