
首先我的数据并没有做任何任何的处理,本来我是打算加一个直流滤波的,首先是效果不太好,其次是我都用上机器学习了我为什么还要自己处理数据?机器学习本事的目的就是节约我们的脑子,利用机器来提取特征,而不是我们自己去提取特征(直流偏置本身也是一种特征),就算我的信号有其他的误差,我们可以处理一下提高分辨度,但是!对于机器而言,这些本身就是他的特征,我们只需要告诉机器,哪些特征是对的,哪些特征是错的! 训练模型方面,我们使用MAX30102每10ms采样一次,每128次采样作为一组数据上传。
这里我们不对数据进行任何处理,因为既然我们选择了机器学习就是为了节省我们对于数据的处理,节省对于特征的提取。 模型训练 我们打开NanoEdge AI Studio,这次的项目我们选择异常检测。 ![]() ![]() 传感器选择通用传感器,轴数为1,芯片型号选择自己所需要的芯片型号。 ![]() Regualr signals 常规数据 Abnormal signals 异常数据 我们通过串口(USB)分别导入正常的信号和异常的信号。 ![]() ![]() 数据集尽可能多且广泛并且经典。 ![]() 我们总共导入了两百组信号,这些信号包含了大拇指,中指以及稍微靠前的位置和稍微靠后的位置,保证数据集的范围足够的广泛。 ![]() 异常信号就非常简单,我们放在那里空置信号,晃动信号这里我放在那里测了总共三百多组(打游戏打忘记了)。 然后利用这两组信号进行训练。 ![]() 我们将异常信号和正常信号全部选上,之后进行训练。 ![]() 之后查看训练详情,等待模型训练完成。 ![]() 可以看到,训练完的模型无论是准确率还是RAM大小Flash大小,都相当的合适,接下来我们测试一下我们的模型。 ![]() 这边可以查看训练过程中的模型。 ![]() 验证我们的模型。 ![]() 这里需要注意的是,我们第一次导入数据会先进行训练,异常检测需要有一个学习环节。 官方的手册中推荐了至少十组正常数据进行学习。 ![]() 我录了21组正常数据进行学习。 然后就可以对模型进行验证。 ![]() 部署我们的模型,其中需要他的.a文件和.h文件。 ![]() 这里我们需要使用CubeIDE来编程。因为这里的.a文件是静态文件,静态文件使用keil编程有点麻烦,需要安装GCC编译器,STM32CubeIDE集成好了可以编译.a文件。 ![]() 在属性中添加静态库的路径。 ![]() 在库中添加路径,我们的.a文件是libneai.a,这里需要省略lib和后缀.a ![]() 导入NanoEdgeAI的库函数。 ![]() 可以看到这里有三个函数,初始化函数,学习函数以及预测函数。
定义一个枚举变量用来存放标志位。
初始化我们的模型。
我们在定时器回调函数中调用,上电之后前十次为学习阶段,之后对测量值进行预测,当预期值>80即认为状态正常,则灯灭。 如果预期值<80则报警灯想起。 转载自:电路小白 如有侵权请联系删除 |
【下载有礼】STM32 Finder华为应用商店正式上线!移动选型工具助力开发效率升级
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命