Skip to content

c106czs/HAR_STM32L475VG-Project

Repository files navigation

人体活动识别神经网络的训练与在STM32L475VG上的部署

本项目主要实现人体活动识别神经网络的搭建、训练以及在STM32L4微控制器上的部署运行

数据集简介与预处理

数据集简介

这个系统将选用名为University of Southern California Human Activity Dataset的数据集,简称USC-HAD。

官方介绍链接:http://sipi.usc.edu/had/

官方数据集下载地址:http://sipi.usc.edu/had/USC-HAD.zip

这个数据集主要包含加速度计与陀螺仪的6轴数据,采样率100Hz,通过固定在受试者的腰间的6轴传感器采集得来,一共包含12个活动分类:

活动编号 活动标签 活动描述
1 walking forward 受试者沿着直线向前走
2 walking left 受试者逆时针走一整圈
3 walking right 受试者顺时针走一整圈
4 walking upstairs 受试者上楼梯
5 walking downstairs 受试者下楼梯
6 running forward 受试者沿着直线向前跑
7 jumping 受试者保持在同一位置,不断地上下跳跃
8 sitting 受试者坐在椅子上工作或休息。坐立不安也被认为属于这一类。
9 standing 受试者站着和某人交谈
10 sleeping 受试者睡觉或躺在床上
11 elevator up 受试者乘坐上升的电梯
12 elevator down 受试者乘坐下降的电梯



数据集预处理

最初始的数据集包含Subject1到Subject14这十四个文件夹,分别代表14位不同受试者采集的数据。

每个Subject*文件夹里面存储着.mat格式的数据集,其中“a”表示“activity”,后面接着的数字表示12种活动对应的编号,接着的“t”表示“trial”,后面接着的数字表示第几次尝试。

每个.mat文件包括的属性类型都是一样的,里面包含了一些与训练网络无关的属性。因此,我们需要对数据集进行预处理,首先读取每个文件夹里面所有的.mat文件中的传感器原始数据和分类标签的名字,并进行合并,最后生成一个完整的数据集文件,为了方便python程序读取,最后使用csvwrite函数把数据集格式转换为.csv。最后生成的csv文件只包含7个属性,分别是加速度计和陀螺仪的6轴数据以及一个分类标签。

通过以上步骤处理完Subject1~Subject14后,我们可以得到14个.csv文件,分别代表14种不同年龄、身高、体重的数据,这里可以分别使用这些数据集训练得到不同的模型,这样针对不同年龄、身高和体重的群体使用对应的模型,实际的运行效果可能会更佳,但为了方便说明与实现,我们最后直接把生成好的14个csv文件合并成一个大的文件,作为训练使用的数据集,这里命名为USC-HAD_All.csv。



模型的训练与评估

相关代码参见 HAR_Model-train-verify文件夹

模型在STM32上的评估

为了评估更加准确,我们采取了从串口直接发送测试集到MCU,MCU执行完模型后返回结果给PC,再在PC上统计的方法。详细代码请参考HAR_STM32L475VG-VERIFY工程文件,里面包含了PC端用于发送和接收数据的【send_receive.py】文件,以及下载到MCU上的工程文件,用于接收PC端发来的测试集,执行ai运算并返回结果给PC。

模型在STM32上的实际执行

具体代码参见HAR_STM32L475VG-OLED文件夹,需要使用I2C的OLED显示屏显示结果。

About

人体活动识别神经网络的训练与在STM32L475VG上的部署

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages