E0- NNCU MCU开发工具相关概念

CMSIS

ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层(英文原文为:a vendor-independent hardware abstraction layer for the Cortex-M processor series and defines generic tool interfaces–来自ARM官方定义)。
使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。软件的创建被嵌入式行业公认为主要成本系数。通过在所有Cortex-M 芯片供应商产品中标准化软件接口,这一成本会明显降低,尤其是在创建新项目或将现有软件迁移到新设备时。
CMSIS的创建是为了帮助行业实现标准化,减少了客户学习曲线,开发成本,缩短产品上市时间。

https://github.com/ARM-software/CMSIS_5

CMSIS-NN

E0- NNCU MCU开发工具相关概念
Arm在2018年1月份发布了开源的CMSIS-NN。该模块可在Cortex M上进行神经网络学习,提供神经网络推理运算,可解决Arm Cortex-M系列处理器内核的性能优化问题。设计目的是在资源受限的环境中可以在微控制器上高效地运行机器学习,这一特性使其成为基于边缘的智能系统的绝佳选择。CMSIS-NN为 Arm-NN 提供 API 的低级库 ,Arm-NN 能够将在高端机器上运行的经过训练的模型转换为可在微控制器上运行的低级代码。
CMSIS-NN采用整数运算,比纯C能有4.6倍性能提升和4.9倍能效提升,但是不能单独使用,如NXP为之配套的”NNCU”工具集.

CMSIS-NN库包含两个部分: NNFunction和NNSupportFunctions。

  • NNFunction包含实现通常神经网络层类型的函数,比如卷积(convolution),深度可分离卷积(depthwise separable convolution),全连接(即内积inner-product), 池化(pooling)和**(activation)这些函数被应用程序代码用来实现神经网络推理应用。 内核API也保持简单,因此可以轻松地重定向到任何机器学习框架。
  • NNSupport函数包括不同的实用函数,如NNFunctions中使用的数据转换和**功能表。 这些实用函数也可以被应用代码用来构造更复杂的NN模块,例如, 长期短时记忆(LSTM)或门控循环单元(GRU)。

NNCU

(NN toolkit for MCU)提供了全套的工具,可以方便地在 NXP Cortex-M MCU上运行神经网络,包括 i.MX RT, LPC, Kinetis
• 支持 Keras模型和初步支持 ONNX模型
充分发挥 CMSIS-NN的潜力(是未优化代码的 5倍性能)
• 高质量的量化,带有完整测试系统
• 包含对 CMSIS-NN的扩展以支持更复杂的模型和辅助
量化

• 简易的 GUI
• 相关示例
E0- NNCU MCU开发工具相关概念
NNCU目前只支持在 CMSIS-NN上的性能加速,和 CMSIS-NN配合使用,也可称为**”CMSIS-NNCU”**

i.MX RT

该系列是NXP发布的跨界处理器,该产品融合了低功耗应用处理器和高性能微控制器的优势。i.MX RT系列跨界处理器结合了高性能和实时功能,支持下一代物联网应用,具有与MCU 级可用性相平衡的高度集成和安全性。

基于恩智浦i.MX RT运行的现代大型神经网络:面部识别系统

测试环境:This is a KEIL project for building the MobileFaceNet demo, you need i.MX RT1060 EVK with LCD panel and OV7725 module.
测试源码地址:https://github.com/RockySong/micropython-rocky/tree/mfn_demo