基于CNN的人类活动识别(HAR)模型的Keras实现

摘要:为什么神经网络可以在STM32上运行?简而言之,就是利用STM32CubeMX中的X-Cube-AI扩展包,将当前流行的AI框架转换为C代码,支持在嵌入式设备上使用。目前使用X-Cube-AI需要S​​TM32CubeMX版本5.0及以上,支持转换的模型有Keras、TFlite、ONNX、Lasagne、Caffe、ConvNetJS。Cube-AI 将模型转换成一堆数组,然后将这些数组的内容解析成一个模型,这与模型在 Tensorflow 中的使用是一样的。

一、环境安装和配置

1.STM32CubeMX

2.MDK/IAR/STM32CubeIDE

3.F4/H7/MP157开发板

二、AI神经网络模型构建

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

型号介绍

在 Keras 中使用 CNN 进行人类活动识别:此存储库包含用于小型项目的代码。该项目的目的是创建一个基于卷积神经网络 (CNN) 的简单人类活动识别 (HAR) 系统。该系统使用来自 3D 加速度计的传感器数据并识别用户活动,例如向前或向后。

HAR即Human Activity Recognition(HAR)系统,即人类行为识别。该模型是根据人在一段时间内的3D加速度数据来判断人当前的行为,如步行、跑步、上楼、下楼等,符合人体工学的应用场景。 Cortex-M 系列单片机。使用的数据如下图所示。

HAR 使用的原始数据

存储库包含以下文件

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

2.actitracker_raw.txt,一个包含本实验使用的数据集的文本文件;

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

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

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

6.groundTruth.npy,Python数据文件,包含测试数据对应输出的ground truth sum;

7.README.md。

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

三、新项目

1. 默认情况下,大家已经安装了STM32CubeMX软件。

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

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

我安装了其中三个,只需安装最新版本。

下一步就是熟悉新项目

因为安装了AI包,这个界面上会出现人工智能选项。点击启用查看哪些芯片支持AI

下一步是配置下载接口和外部晶振。

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

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

系统性能项目:整个应用程序运行在STM32MCU上,可以准确测量NN推理结果、CP∪U负载和内存占用。使用串口终端监控结果(例如Tera Term)

验证项目:一个完整​​的应用程序神经网络bp算法程序c语言实现,在桌面PC和基于STM32 Arm Cortex-m的MCU嵌入式环境中,通过随机或用户测试数据,增量验证NN返回的结果。与 X-CUBE-A 验证工具一起使用。

应用模板项目:允许为应用构建一个空的模板项目,包括多网络支持。

然后点击左栏的Software Packs,在其中选择X-CUBE-AI神经网络bp算法程序c语言实现,在弹出的Mode窗口中勾选两个复选框。在配置窗口中,单击网络选项卡。

选择刚刚配置的串口进行调试。

点击添加网络,选择上面已经下载好的模型h5,选择压缩因子8;

点击Analyze,可以看到模型压缩前后的参数对比

在桌面点击validation,在PC端进行模型验证,包括原始模型与转换模型的对比,当前验证的结果也会在下方显示。

真诚的,模型验证完成,下面开始模型部署

四、模型转换与部署

时钟配置,系统会自动配置时钟。只需根据您的微控制器的实际选择配置时钟。

最后点击GENERATE CODE生成项目。

然后在MDK中编译链接。

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

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论