查看: 5461|回复: 2

i.MX RT助您跨界AI——4. CMSIS-NN介绍

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3905

    主题

    7518

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39701
    最后登录
    2025-8-6
    发表于 2019-5-6 14:57:03 | 显示全部楼层 |阅读模式
    上期的文章,我们为大家打开了进入AI世界的大门,介绍了跨界AI最重要的一步:模型的部署。可以说,模型是AI的灵魂,就像是AI的大脑,有了模型的助力,才可以实现众多的类人行为。
    本期小编将带大家进入另一个世界,AI代码的优化。


    回顾: "i.MX RT助您跨界AI"系列
    1. 开篇大吉
    2. 集成AI模块到系统中
    3. 模型的部署


    i.MX RT与CMSIS-NN
    一年以前,我们的明星产品i.MX RT一经推出,就好评如潮;现在,新系列的i.MX RT106x系列又和大家见面了,性能高抗所向披靡,拥有高达600MHz的主频,片上存储达到喜人的1MB,能够承载更加复杂的机器学习算法以及网络模型。

    那么,即便是这样的顶配,又能否驾驭那些只能奔跑在PC/服务器上的人工智能算法呢,比如大火的卷积神经网络?

    答案当然是可以的啦!首先,除去硬件性能的优势,我们就要对Arm报以感谢了,Arm推出了基于Cortex-M核的优化方案,名为CMSIS-NN。CMSIS的全称是Cortex Microcontroller Software Interface Standard ( Cortex微处理器软件接口标准),目的就是为了解决微处理器生态中软件无法兼容的问题。

    目前微控制器上的软件操作系统非常分散,相应的软件无法很好的复用,存在大量的重复造轮子的现象。而Arm所引入的CMSIS框架,做到了一种一统江湖的感觉,通过引入一系列极简的抽象层API,将应用程序、中间件同OS进行隔离而不会影响系统的性能,同时又很友好地提供了对于主流调试器DS-5/KEIL/IAR等的支持。

    下面是CMSIS的软件框架图:
    21.jpg

    CMSIS-NN是最近加入CMSIS家族的新成员,她的加入大大缓解了基于MCU的神经网络相关软件的优化压力。

    CMSIS-NN通过对神经网络中所需要的关键函数进行优化,以达到强化性能的目的。比如,通过查表避免激活函数计算等,同时采用定点运算(8/16bits)替代浮点运算也能够显著减少内存消耗。更加值得推荐的是,在程序中使用CMSIS-NN添加神经网络也非常方便,只需要调用相应的API即可完成。

    因此,针对于Arm Cortex-M系列处理器内核,如果您想要强化性能并且减少内存消耗,CMSIS-NN会是您最好的朋友。基于CMSIS-NN函数库的神经网络推理运算,对于运行时间/吞吐量,相比未用CMSIS-NN函数库,将会有4.6X的提升,而对于能效将有4.9X的提升。

    CMSIS-NN简介
    CMSIS-NN函数库包含有两部分:NNFunctions和NNSupportFunctions。其中,NNFunctions包含了实现神经网络常用操作的API,比如卷积(convolution),深度可分离卷积(depthwise separable convolution),全连接(即内积inner-product),池化(polling)和激活(activation)。

    这些函数的有序组合就摇身一变成为了神经网络的中枢系统,软件层应用程序通过调用这些函数,实现神经网络的推理应用。

    NNSupportFunctions函数集包括不同的实用函数,如NNFunctions中使用的数据转换和激活功能表。正如其名,这组函数为NN算法提供更基本的操作。此外,如果CMSIS-NN的功能扩展,也可以用它们构造更复杂的NN模块,例如,长期短时记忆(LSTM)或门控循环单元(GRU)。

    CMSIS-NN的API是直接对接到CPU的底层库,API要求的参数往往多达十余个,特别是还要求提供权重表。手动调用这些API实现动辄十余层的神经网络枯燥、耗时并且易错,所以一般用上一期提到的部署工具实现模型转代码或者通过执行引擎来调用CMSIS-NN。

    下图是CMSIS-NN的框架图:
    22.jpg

    CMSIS-NN在i.MX RT上的应用
    说了这么多理论知识,是时候来点干货了,有请新晋翘楚i.MX RT。
    接下来我们就要和i.MX RT1060 EVK一起奋斗,借助于Arm这套为自己的内核开小灶式的优化方案,尝试着将基于CIFAR-10神经网络移植进我们的EVK板子。

    CIFAR-10例子也算是咱们加油站的主角了,但CIFAR-10究竟是何方神圣呢?其实,CIFAR-10是一个开源的代码集,其预置包含了十种不同物体以供神经网络训练之用,使用这个代码集可以训练不同的模型,来分类数据集中的10类物体,这里说的CIFAR-10例子泛指这类模型。

    那有人会问了,才十种呀才,有木有分类更多的数据集?当然,相似的,CIFAR-100数据集可以满足更多人群的需求。按字面意思,这是一个包含了100种物体的数据集。

    说回CIFAR-10,CIFAR-10中的十种物体是把事先训练好的模型预置在代码中,而不是任意物体哦,不要被字面意思误导,不然好多人要追着讨债了,说好的能识别十种物体呢,我的小兔子为什么不能识别。在此,科普一下,CIFAR-10能够识别的物体为:猫、狗、飞机、轮船、青蛙、鸟、汽车、马、鹿、卡车。

    如果希望替换这十种物体中的任何一个,都需要使用很大的数据集重新对模型进行训练,这是一个很耗时的过程,因此为了验证处理器的性能,我们采用了现成的代码包。

    经过我们工程师们锲而不舍的移植努力,伟大的CIFAR-10已经能够跑起来了,测试程序通过摄像头实时采集图像数据,传入模型进行计算,最后根据各分类结果的得分高低,判断所预测的分类结果。

    这时,有群众可能又要发问了,之前,我看过你们的文章(再次先表示感谢对我们MCU加油站的支持),你们不是已经在openmv的板子上实现了人工智能算法了吗,怎么又多此一举的搞了一波呢

    当然了,这个问题的质量很高,之前我们所做的工作是借助于openmv中的工具实现了模型的转换、模型计算,但是依托于openmv的方法代码体量是很大的,同时需要借助于micropython,也引入了少量的额外开销。对于热衷于裸板开发,急于闯出一片天的小伙伴们来说,开发难度还是比较大的,因此,我们借助于CMSIS-NN开发了一个干净的裸板程序,这样用户就可以参考着进行操作。

    还有些小伙伴要问了,现在的性能怎么样啊?忘了和大家说了,在i.MX RT1062 EVK上,一个具有三个卷积层和一个全连接层的中等的模型,处理一帧32x32像素、24位全彩色图像的时间为24ms,可以说在MCU上,这个数据已经是一马当先了。言归正传,这个速度是极限了吗?NO-NO-NO,我们的工程师正在精益求精地对代码进行二次优化,以其能够充分利用i.MX RT的芯片优势,提高算法性能。

    至于算法优化方案嘛,小伙伴们不要着急,小编会后续更新的,敬请期待!
    好了,本期i.MX RT助您跨界AI——CMSIS-NN介绍就告一段落了,我们下期见!


    文章出处:恩智浦MCU加油站

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 20:21
  • 签到天数: 1857 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112660
    最后登录
    2025-8-4
    发表于 2019-5-6 15:18:05 | 显示全部楼层
    支持管管,好久不见啊~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    6
    最后登录
    2024-10-11
    发表于 2024-10-10 11:13:42 | 显示全部楼层
    大佬,请教一下,我现在想用Cortex-M7的一块板子部署小的神经网络,就几个卷积层和全连接,但是我要跑autosar要符合功能安装,也不能跑linux系统,所以没有办法用TensorFlow Lite Micro框架部署。是不是只能自己调用算子,调用CMSIS-NN中的函数一步步计算?那么量化怎么做呢,我用pytorch或者tensorflow量化模型,然后解析出来量化的参数,权重、scale和zero_point这些,但是感觉还是缺了一些信息,不知道怎么调用CMSIS-NN的函数一步步推理部署。我也不知道这种思路可不可行,麻烦大佬指点一下!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-6 14:55 , Processed in 0.083093 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表