极客秀
搜索

STM32上的机器学习实例:实现指头检测(大拇指,小拇指,食指,空置)

昨天介绍了使用ST的NanoEdge AI Studio实现MAX30100对于心率是否异常的检测。

我提到了一嘴,用该传感器判断是食指还是中指还是其他指头。本来是随口提一嘴举个例子,但是今天还是去尝试了一下能不能实现。
对于我们的三个指头(5个也好)本质上是一种多分类网络问题,我们将输入信号划分成不同的分类。

  • 小拇指

  • 大拇指

  • 中指(后来用了食指方便)

  • 没有指头(空置)

因此我们利用多分类神经网络来实现判断功能。


int i = 0;void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){    maxim_max30102_read_fifo(&red,&ir);    printf("%ld ",ir);    i++;    if(i==128)    {      i=0;      printf("n");    }}

信号的输入部分则和上期一样,100HZ的采样率,128的采样长度。

创建一个n-Class n分类神经网络。

其他设置都和上期的保持一样,使用通用一轴传感器。

但是信号输入的地方,我们利用串口导入各个类别的数据(这里是不同的指头)

需要注意的是,这里的标签即代表着我们的分类,不像之前那样子可以一个类别下面可以使用多组数据。

训练我们的模型,这里可以选择我们的分类(其实这里我觉得要是把某组数据能添加到某个分类就好了,这里让我研究一下)。

训练好我们的模型,这里可以关注各指标。 接着就是验证我们的模型, 验证的过程可以参考文章开头的视频

部署完我们的模型之后,查看生成的.ZIP文件,其中相比于异常识别多了一个knowledge的头文件。

这里我们需要libneai.a以及两个.h文件
STM32中用机器学习实现正确率99.95%的心率异常检测!STM32机器学习实例:心率检测!简单的小实例,却是迈向新领域的步伐

怎么导入文件请查看这篇文章。

初始化函数中,我们需要导入一个数组,这个数组就定义在knowledge.h这个文件中。

neai_classification_init(knowledge);

初始化的时候,需要以这个数组为参数。
之后我们在定时器中,采集到128个数据之后进行预测。


float IRD[128];int i = 0;int LeranTime= 0;const char *id2class[CLASS_NUMBER + 1] = { // Buffer for mapping class id to class name  "unknown",  "zhongzhi",  "Error",  "xiaomuzhi2",  "damuzhi",};float Output[4];void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){    uint16_t yuce;    maxim_max30102_read_fifo(&red,&ir);    IRD[i] = ir;    i++;    //printf("%d ",ir);    if(i==128)    {  
      neai_classification(IRD,Output,&yuce);  
      printf("nnn");      printf("zhongzhi:%.2frn",Output[0]);      printf("Error:%.2frn",Output[1]);      printf("xiaomuzhi:%.2frn",Output[2]);      printf("damuzhi:%.2frn",Output[3]);      LeranTime++;      i = 0;    }}

这里的 预测函数有三个参数,第一个参数是输入数组,第二参数是输出数组,输出数组中包含着对于各个分类的参数预测值,第三个参数输入一个指针,
这个指针会指向预测最大值的索引

烧入我们的代码,可以看到,空置的时候,Error的预测值是最大的。

当我们放上中指的时候,检测到中指的概率是最大的。

小拇指也是可以正常的检测。

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容