为什么可以在STM32上面跑神经网络

发布时间:2023-06-28  

摘要:为什么可以在STM32上面跑神经网络?简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,支持转化的模型有Keras、TFlite、ONNX、Lasagne、Caffe、ConvNetJS。Cube-AI把模型转化为一堆数组,而后将这些数组内容解析成模型,和Tensorflow里的模型转数组后使用原理是一样的。

一、环境安装和配置

  1. STM32CubeMX

  2. MDK/IAR/STM32CubeIDE

  3. F4/H7/MP157开发板

二、AI神经网络模型搭建

这里使用官方提供的模型进行测试,用keras框架训练:

为什么可以在STM32上面跑神经网络

https://github.com/Shahnawax/HAR-CNN-Keras

模型介绍

在Keras中使用CNN进行人类活动识别:此存储库包含小型项目的代码。该项目的目的是创建一个简单的基于卷积神经网络(CNN)的人类活动识别(HAR)系统。该系统使用来自3D加速度计的传感器数据,并识别用户的活动,例如:前进或后退。HAR意为Human Activity Recognition(HAR)system,即人类行为识别。这个模型是根据人一段时间内的3D加速度数据,来判断人当前的行为,比如走路,跑步,上楼,下楼等,很符合Cortex-M系列MCU的应用场景。使用的数据如下图所示。

为什么可以在STM32上面跑神经网络

HAR用到的原始数据

存储库包含以下文件

  1. HAR.py,Python脚本文件,包含基于CNN的人类活动识别(HAR)模型的Keras实现,

  2. actitracker_raw.txt、包含此实验中使用的数据集的文本文件,

  3. model.h5,一个预训练模型,根据训练数据进行训练,

  4. evaluate_model.py、Python 脚本文件,其中包含评估脚本。此脚本在提供的 testData 上评估预训练 netowrk 的性能,

  5. testData.npy,Python 数据文件,包含用于评估可用预训练模型的测试数据,

  6. groundTruth.npy,Python 数据文件,包含测试数据的相应输出的地面真值和

  7. README.md.

这么多文件不要慌,模型训练后得到model.h5模型,才是我们需要的。

三、新建工程

1.这里默认大家都已经安装好了STM32CubeMX软件。

在STM32上验证神经网络模型(HAR人体活动识别),一般需要STM32F3/F4/L4/F7/L7系列高性能单片机,运行网络模型一般需要3MB以上的闪存空间,一般的单片机不支持这么大的空间,CUBEMX提供了一个压缩率的选项,可以选择合适的压缩率,实际是压缩神经网络模型的权重系数,使得网络模型可以在单片机上运行,压缩率为8,使得模型缩小到366KB,验证可以通过;

为什么可以在STM32上面跑神经网络

然后按照下面的步骤安装好CUBE.AI的扩展包

为什么可以在STM32上面跑神经网络

这个我安装了三个,安装最新版本的一个版本就可以。

为什么可以在STM32上面跑神经网络

接下来就是熟悉的新建工程了

为什么可以在STM32上面跑神经网络

因为安装了AI的包,所以在这个界面会出现artificial intelligence这个选项,点击Enable可以查看哪一些芯片支持AI

为什么可以在STM32上面跑神经网络

接下来就是配置下载接口和外部晶振了。

为什么可以在STM32上面跑神经网络
为什么可以在STM32上面跑神经网络

然后记得要选择一个串口作为调试信息打印输出。

为什么可以在STM32上面跑神经网络

选择Software Packs,进入后把AI相关的两个包点开,第一个打上勾,第一个选择Validation。

为什么可以在STM32上面跑神经网络
为什么可以在STM32上面跑神经网络

  • System Performance工程:整个应用程序项目运行在STM32MCU上,可以准确测量NN推理结果,CP∪U负载和内存使用情况。使用串行终端监控结果(e.g.Tera Term)

  • Validation工程:完整的应用程序,在桌面PC和基于STM32 Arm Cortex-m的MCU嵌入式环境中,通过随机或用户测试数据,递增地验证NN返回的结果。与 X-CUBE-A验证工具一起使用。

  • Application Template工程:允许构建应用程序的空模板项目,包括多网络支持。

之后左边栏中的Software Packs点开,选择其中的X-CUBE-AI,弹出的Mode窗口中两个复选框都打勾,Configuration窗口中,点开network选项卡。

为什么可以在STM32上面跑神经网络

选择刚刚配置的串口作为调试用。

为什么可以在STM32上面跑神经网络

点击add network,选择上述下载好的model点h5模型,选择压缩倍数8;

为什么可以在STM32上面跑神经网络

点击分析,可从中看到模型压缩前后的参数对比

为什么可以在STM32上面跑神经网络

点击validation on desktop 在PC上进行模型验证,包括原模型与转换后模型的对比,下方也会显示验证的结果。

为什么可以在STM32上面跑神经网络

至此,模型验证完成,下面开始模型部署

四、模型转换与部署

时钟配置,系统会自动进行时钟配置。按照你单片机的实际选型配置时钟就可以了。

为什么可以在STM32上面跑神经网络
为什么可以在STM32上面跑神经网络
为什么可以在STM32上面跑神经网络

最后点击GENERATE CODE生成工程。

为什么可以在STM32上面跑神经网络

然后在MDK中编译链接。

为什么可以在STM32上面跑神经网络

选择好下载器后就可以下载代码了。

为什么可以在STM32上面跑神经网络
为什么可以在STM32上面跑神经网络

然后打开串口调试助手就可以看到一系列的打印信息了。

为什么可以在STM32上面跑神经网络

代码烧写在芯片里后,回到CubeMX中下图所示位置,我们点击Validate on target,在板上运行验证程序,效果如下图,可以工作,证明模型成功部署在MCU中。

为什么可以在STM32上面跑神经网络
为什么可以在STM32上面跑神经网络

这次就这样先跑一下官方的例程,以后再研究一下,跑跑自己的模型。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ,运行网络模型一般需要3MB以上的闪存空间,一般的单片机不支持这么大的空间,CUBEMX提供了一个压缩率的选项,可以选择合适的压缩率,实际是压缩神经网络模型的权重系数,使得网络模型可以在单片机......
    STM32实现单麦克风实时神经网络降噪;本文是基于NNoM神经网络框架实现的。NNoM是一个为单片机定制的神经网络框架,可以实现TensorFlow 模型的量化和部署到单片机上,可以在Cortex......
    基于芯驰D9360国产开发板)的TinyMaxi轻量级的神经网络推理库方案测试。 算力测试 TinyMaix 是面向单片机的超轻量级的神经网络推理库,即 TinyML 推理库,可以让你在任意单片机......
    怎样学会单片机?先学什么,怎么入门?;怎么学习单片机?我给大家分享一下我的单片机学习之路。 我的单片机可以说是自学的,过程有点曲折。 刚开始是啃理论,学习单片机的设计框架,内存、寄存器,GPIO口功......
    基于XL32F003单片机的智能音箱解决方案;目前的家庭智能音箱可以实现语音定闹钟、人工语音互动、语音播放音乐、查天气、查百科、查路况等功能,链接网络后可实现了解未来天气、上网购物、打电......
    很多人的嵌入式学习路线:51单片机~ARM7~ARM9~ARM11 现在很多人的嵌入式学习路线:51单片机~Cortex-M系列~Cortex-R系列~Cortex-A系列 3、STM32是否可以跑Linux 首先......
    实现数据的存储。 传感器接口:STM32单片机具有丰富的传感器接口,可以实现对各种传感器的接入和数据处理。如通过I2C接口接入温度传感器、湿度传感器等。 网络功能:STM32单片机可以实现网络连接,如通......
    教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。 比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑......
    字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就......
    的实际应用中,总线技术可以用于以下方面: (1)外设控制:通过总线技术,51单片机可以与各类外设进行数据交换,例如LCD显示屏、键盘、数码管、温度传感器等等。 (2)通信网络:通过总线技术,51单片机可以......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>